tests/mirrored-studs.py

changeset 89
d2b277cb948e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/mirrored-studs.py	Mon Jun 24 10:13:13 2019 +0300
@@ -0,0 +1,25 @@
+from testsuite import problem_type, report_problem
+import linetypes
+from librarystandards import library_standards
+
+@problem_type('mirrored-studs',
+    severity = 'warning',
+    message = lambda primitive: str.format(
+        '"{primitive}" should not be mirrored',
+        primitive = primitive,
+    )
+)
+def mirrored_studs_test(model):
+    for subfile_reference in model.subfile_references:
+        # Test whether any stud subfile is mirrored.
+        # A subfile is mirrored if its determinant is negative.
+        if subfile_reference.subfile_path.startswith('stu') \
+        and subfile_reference.subfile_path != 'stud4.dat' \
+        and subfile_reference.matrix.determinant() < 0:
+            yield report_problem(
+                'mirrored-studs',
+                bad_object = subfile_reference,
+                primitive = subfile_reference.subfile_path,
+            )
+
+manifest = {'tests': [mirrored_studs_test]}

mercurial