1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
import os
import unittest
import collada
from collada.common import (DaeError,
DaeBrokenRefError,
DaeIncompleteError,
DaeMalformedError)
class TestColladaIgnore(unittest.TestCase):
"""
Check the `ignore` functionality for ignoring
parsing errors.
"""
def setUp(self):
self.dummy = collada.Collada(validate_output=True)
self.datadir = os.path.join(os.path.dirname(
os.path.realpath(__file__)), "data")
def test_incomplete(self):
# this has an incomplete error
f = os.path.join(self.datadir, "cube_tristrips.dae")
raised = False
try:
collada.Collada(f)
except DaeIncompleteError:
# this should have raised
raised = True
if not raised:
raise ValueError('should have raised an error!')
raised = False
try:
collada.Collada(
f, ignore=[DaeMalformedError])
except DaeIncompleteError:
raised = True
if not raised:
raise ValueError('should have raised an error')
# should have loaded if we ignore the specific error
m = collada.Collada(f, ignore=[DaeIncompleteError])
# should have one primitive
assert len(m.geometries) == 1
assert len(m.geometries[0].primitives) == 1
# should be an (n, 3) numpy array
assert m.geometries[0].primitives[0].normal.shape[1] == 3
# should have loaded if we ignore the parent error
m = collada.Collada(f, ignore=[DaeError])
# should have one primitive
assert len(m.geometries) == 1
assert len(m.geometries[0].primitives) == 1
# should be an (n, 3) numpy array
assert m.geometries[0].primitives[0].normal.shape[1] == 3
def test_malformed(self):
# this has a malformed component
f = os.path.join(self.datadir, "earthCylindrical.DAE")
raised = False
try:
collada.Collada(f)
except DaeMalformedError:
# this should have raised
raised = True
if not raised:
raise ValueError('should have raised an error!')
raised = False
try:
collada.Collada(f, ignore=[DaeMalformedError])
except DaeError:
# this should have raised
raised = True
if not raised:
raise ValueError('should have raised an error!')
# should't have crashed
collada.Collada(f, ignore=[DaeMalformedError,
DaeBrokenRefError])
# should have also loaded using the parent class
collada.Collada(f, ignore=[DaeError])
if __name__ == '__main__':
unittest.main()
|