瀏覽代碼

Add test for structural inheritance

Yentl Van Tendeloo 9 年之前
父節點
當前提交
d133fc8dc7
共有 1 個文件被更改,包括 22 次插入0 次删除
  1. 22 0
      integration/test_constructors_models.py

+ 22 - 0
integration/test_constructors_models.py

@@ -101,12 +101,16 @@ instantiate_example = [
         '"instantiate_node"', 2, '"Class"', '"B"',
         '"instantiate_node"', 2, '"Class"', '"C"',
         '"instantiate_link"', 2, '"l3"', '"b_inherits_a"', '"B"', '"A"',
+        '"instantiate_named"', 2, '"l5"', '"tokens"', '"A"', '"B"',
+        '"instantiate_named"', 2, '"l5"', '"tokens"', '"C"', '"B"',
         '"exit"',
         '"model"',
         '"instantiate_model"', 2, 3,
         '"instantiate_node"', 3, '"A"', '"a"',
+        '"instantiate_attribute"', 3, '"a"', '"tokens"', '"b"',
         '"instantiate_node"', 3, '"B"', '"b"',
         '"instantiate_node"', 3, '"C"', '"c"',
+        '"instantiate_attribute"', 3, '"c"', '"tokens"', '"b"',
         '"exit"',
     ]
 
@@ -165,6 +169,17 @@ is_nominal_instance = \
     conformance_call("is_nominal_instance", "b", "C") + \
     conformance_call("is_nominal_instance", "c", "C")
 
+is_structural_instance = \
+    conformance_call("is_structural_instance", "a", "A") + \
+    conformance_call("is_structural_instance", "b", "A") + \
+    conformance_call("is_structural_instance", "c", "A") + \
+    conformance_call("is_structural_instance", "a", "B") + \
+    conformance_call("is_structural_instance", "b", "B") + \
+    conformance_call("is_structural_instance", "c", "B") + \
+    conformance_call("is_structural_instance", "a", "C") + \
+    conformance_call("is_structural_instance", "b", "C") + \
+    conformance_call("is_structural_instance", "c", "C")
+
 def conformance_check(node):
     return [
             '"output"',
@@ -206,3 +221,10 @@ class TestConstructorsModels(unittest.TestCase):
                     'False', 'True', 'False',
                     'False', 'False', 'True']
         self.assertTrue(run_barebone(commands, expected, 1))
+
+    def test_constructors_is_structural_instance(self):
+        commands = bottom + retype + instantiate_example + is_structural_instance + ['"return"', 'false']
+        expected = ['True', 'False', 'True',
+                    'True', 'True', 'True',
+                    'True', 'False', 'True']
+        self.assertTrue(run_barebone(commands, expected, 1))