123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import unittest
- import sys
- import os
- from utils import execute, kill, run_file, run_barebone
- sys.path.append("interface/HUTN")
- from hutn_compiler.compiler import main as do_compile
- def model_compile(filename):
- return do_compile(filename, "interface/HUTN/grammars/modelling.g", "M")
- def conformance_call(operation, model, metamodel):
- return [
- '"output"',
- '"call"',
- '"access"', '"resolve"', '"%s"' % operation,
- '3',
- '"call"', '"access"', '"resolve"', '"import_node"', '1', '"const"', '"models/example_M"', 'false',
- '"const"', '"%s"' % model,
- '"const"', '"%s"' % metamodel,
- 'false',
- 'true',
- ]
- def conformance_check(node):
- return [
- '"output"',
- '"call"',
- '"access"', '"resolve"', '"conformance_scd"',
- '1',
- '"call"', '"access"', '"resolve"', '"import_node"', '1', '"const"', '"%s"' % (node), 'false',
- 'false',
- 'true',
- ]
- class TestConstructorsModelsCompiled(unittest.TestCase):
- def test_constructors_petrinets(self):
- commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
- model_compile("integration/code/petrinets.mvc") + \
- ['"exit"', '1'] + conformance_check("models/PetriNets") + ['"return"', 'false']
- self.assertTrue(run_barebone(commands, ["OK"], 4))
- def test_constructors_petrinet_instance(self):
- commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
- model_compile("integration/code/petrinets.mvc") + \
- model_compile("integration/code/my_petrinet.mvc") + \
- ['"exit"', '1'] + conformance_check("models/my_petrinet") + ['"return"', 'false']
- self.assertTrue(run_barebone(commands, ["OK"], 4))
- def test_constructors_petrinet_full(self):
- commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
- model_compile("integration/code/my_petrinet_with_MM.mvc") + \
- ['"exit"', '1'] + conformance_check("models/my_petrinet") + ['"return"', 'false']
- self.assertTrue(run_barebone(commands, ["OK"], 4))
- def test_constructors_petrinets_constraints(self):
- commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
- model_compile("integration/code/petrinets_constraints.mvc") + \
- ['"exit"', '1'] + conformance_check("models/PetriNets") + ['"return"', 'false']
- self.assertTrue(run_barebone(commands, ["OK"], 4))
- def test_constructors_petrinet_instance_constraints(self):
- commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
- model_compile("integration/code/petrinets_constraints.mvc") + \
- model_compile("integration/code/my_petrinet.mvc") + \
- ['"exit"', '1'] + conformance_check("models/my_petrinet") + ['"return"', 'false']
- self.assertTrue(run_barebone(commands, ["OK"], 4))
- def test_constructors_petrinet_full_constraints(self):
- commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
- model_compile("integration/code/my_petrinet_with_MM_and_constraints.mvc") + \
- ['"exit"', '1'] + conformance_check("models/my_petrinet") + ['"return"', 'false']
- self.assertTrue(run_barebone(commands, ["OK"], 4))
- def test_constructors_petrinet_invalids(self):
- commands = ['"initialize_SCD"', '"models/SimpleClassDiagrams"'] + \
- model_compile("integration/code/several_petrinets.mvc") + \
- ['"exit"', '1'] + \
- conformance_check("models/valid_petrinet") + \
- conformance_check("models/invalid_petrinet_1") + \
- conformance_check("models/invalid_petrinet_2") + \
- conformance_check("models/invalid_petrinet_3") + \
- conformance_check("models/invalid_petrinet_4") + \
- conformance_check("models/invalid_petrinet_5") + \
- conformance_check("models/invalid_petrinet_6") + \
- conformance_check("models/invalid_petrinet_7") + \
- ['"return"', 'false']
- self.assertTrue(run_barebone(commands, ["OK",
- "Natural does not have a positive or zero value at p1.tokens",
- "Natural does not have a positive or zero value at p2t.weight",
- "Destination of model edge not typed by source of type: wrong_p2t",
- "Source of model edge not typed by source of type: wrong_t2p",
- "Lower cardinality violation for outgoing edge of type Place_tokens at p1",
- "Lower cardinality violation for outgoing edge of type P2T_weight at p2t",
- "Natural has no integer value at p1.tokens"], 4))
|