|
@@ -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))
|