|
|
@@ -0,0 +1,512 @@
|
|
|
+"use strict";
|
|
|
+/*jshint camelcase:false*/
|
|
|
+/*eslint camelcase:0*/
|
|
|
+
|
|
|
+let assert = require("assert"),
|
|
|
+ Generator = require("../modellang");
|
|
|
+
|
|
|
+let fs = require("fs"),
|
|
|
+ path = require("path"),
|
|
|
+ PEG = require("pegjs");
|
|
|
+let parser = PEG.buildParser(fs.readFileSync(path.join(__dirname, "/../../parser/modellang.pegjs"), "utf8")),
|
|
|
+ parse = parser.parse;
|
|
|
+
|
|
|
+let tests = {
|
|
|
+
|
|
|
+ // ATOM TEST
|
|
|
+ oneA: {
|
|
|
+ model: "SYSTEM: oneA = a;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["oneA", "a"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["oneA", "a"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+
|
|
|
+ // QUANTIFIED ATOM TEST
|
|
|
+ maybeA: {
|
|
|
+ model: "SYSTEM: maybeA = a?;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["maybeA"],
|
|
|
+ ["maybeA", "a"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["maybeA"],
|
|
|
+ ["maybeA", "a"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ someA: {
|
|
|
+ model: "SYSTEM: someA = a+;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["someA", "a"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["someA", "a"],
|
|
|
+ ["someA", "a", "a"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["someA", "a"],
|
|
|
+ ["someA", "a", "a"],
|
|
|
+ ["someA", "a", "a", "a"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ maybeSomeA: {
|
|
|
+ model: "SYSTEM: maybeSomeA = a*;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["maybeSomeA"],
|
|
|
+ ["maybeSomeA", "a"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["maybeSomeA"],
|
|
|
+ ["maybeSomeA", "a"],
|
|
|
+ ["maybeSomeA", "a", "a"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["maybeSomeA"],
|
|
|
+ ["maybeSomeA", "a"],
|
|
|
+ ["maybeSomeA", "a", "a"],
|
|
|
+ ["maybeSomeA", "a", "a", "a"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ threeA: {
|
|
|
+ model: "SYSTEM: threeA = a{3};",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["threeA", "a", "a", "a"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["threeA", "a", "a", "a"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ twoToThreeA: {
|
|
|
+ model: "SYSTEM: twoToThreeA = a{2,3};",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["twoToThreeA", "a", "a"],
|
|
|
+ ["twoToThreeA", "a", "a", "a"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["twoToThreeA", "a", "a"],
|
|
|
+ ["twoToThreeA", "a", "a", "a"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+
|
|
|
+ // SEQUENCE WITH QUANTIFIED ATOMS TEST
|
|
|
+ oneA_oneB: {
|
|
|
+ model: "SYSTEM: oneA_oneB = a b;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["oneA_oneB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["oneA_oneB", "a", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ oneA_maybeB: {
|
|
|
+ model: "SYSTEM: oneA_maybeB = a b?;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["oneA_maybeB", "a"],
|
|
|
+ ["oneA_maybeB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["oneA_maybeB", "a"],
|
|
|
+ ["oneA_maybeB", "a", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ oneA_someB: {
|
|
|
+ model: "SYSTEM: oneA_someB = a b+;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["oneA_someB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["oneA_someB", "a", "b"],
|
|
|
+ ["oneA_someB", "a", "b", "b"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["oneA_someB", "a", "b"],
|
|
|
+ ["oneA_someB", "a", "b", "b"],
|
|
|
+ ["oneA_someB", "a", "b", "b", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ oneA_maybeSomeB: {
|
|
|
+ model: "SYSTEM: oneA_maybeSomeB = a b*;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["oneA_maybeSomeB", "a"],
|
|
|
+ ["oneA_maybeSomeB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["oneA_maybeSomeB", "a"],
|
|
|
+ ["oneA_maybeSomeB", "a", "b"],
|
|
|
+ ["oneA_maybeSomeB", "a", "b", "b"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["oneA_maybeSomeB", "a"],
|
|
|
+ ["oneA_maybeSomeB", "a", "b"],
|
|
|
+ ["oneA_maybeSomeB", "a", "b", "b"],
|
|
|
+ ["oneA_maybeSomeB", "a", "b", "b", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ maybeA_oneB: {
|
|
|
+ model: "SYSTEM: maybeA_oneB = a? b;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["maybeA_oneB", "b"],
|
|
|
+ ["maybeA_oneB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["maybeA_oneB", "b"],
|
|
|
+ ["maybeA_oneB", "a", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ maybeA_maybeB: {
|
|
|
+ model: "SYSTEM: maybeA_maybeB = a? b?;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["maybeA_maybeB"],
|
|
|
+ ["maybeA_maybeB", "b"],
|
|
|
+ ["maybeA_maybeB", "a"],
|
|
|
+ ["maybeA_maybeB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["maybeA_maybeB"],
|
|
|
+ ["maybeA_maybeB", "b"],
|
|
|
+ ["maybeA_maybeB", "a"],
|
|
|
+ ["maybeA_maybeB", "a", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ maybeA_someB: {
|
|
|
+ model: "SYSTEM: maybeA_someB = a? b+;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["maybeA_someB", "b"],
|
|
|
+ ["maybeA_someB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["maybeA_someB", "b"],
|
|
|
+ ["maybeA_someB", "b", "b"],
|
|
|
+ ["maybeA_someB", "a", "b"],
|
|
|
+ ["maybeA_someB", "a", "b", "b"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["maybeA_someB", "b"],
|
|
|
+ ["maybeA_someB", "b", "b"],
|
|
|
+ ["maybeA_someB", "b", "b", "b"],
|
|
|
+ ["maybeA_someB", "a", "b"],
|
|
|
+ ["maybeA_someB", "a", "b", "b"],
|
|
|
+ ["maybeA_someB", "a", "b", "b", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ maybeA_maybeSomeB: {
|
|
|
+ model: "SYSTEM: maybeA_maybeSomeB = a? b*;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["maybeA_maybeSomeB"],
|
|
|
+ ["maybeA_maybeSomeB", "b"],
|
|
|
+ ["maybeA_maybeSomeB", "a"],
|
|
|
+ ["maybeA_maybeSomeB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["maybeA_maybeSomeB"],
|
|
|
+ ["maybeA_maybeSomeB", "b"],
|
|
|
+ ["maybeA_maybeSomeB", "b", "b"],
|
|
|
+ ["maybeA_maybeSomeB", "a"],
|
|
|
+ ["maybeA_maybeSomeB", "a", "b"],
|
|
|
+ ["maybeA_maybeSomeB", "a", "b", "b"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["maybeA_maybeSomeB"],
|
|
|
+ ["maybeA_maybeSomeB", "b"],
|
|
|
+ ["maybeA_maybeSomeB", "b", "b"],
|
|
|
+ ["maybeA_maybeSomeB", "b", "b", "b"],
|
|
|
+ ["maybeA_maybeSomeB", "a"],
|
|
|
+ ["maybeA_maybeSomeB", "a", "b"],
|
|
|
+ ["maybeA_maybeSomeB", "a", "b", "b"],
|
|
|
+ ["maybeA_maybeSomeB", "a", "b", "b", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ someA_oneB: {
|
|
|
+ model: "SYSTEM: someA_oneB = a+ b;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["someA_oneB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["someA_oneB", "a", "b"],
|
|
|
+ ["someA_oneB", "a", "a", "b"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["someA_oneB", "a", "b"],
|
|
|
+ ["someA_oneB", "a", "a", "b"],
|
|
|
+ ["someA_oneB", "a", "a", "a", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ someA_maybeB: {
|
|
|
+ model: "SYSTEM: someA_maybeB = a+ b?;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["someA_maybeB", "a"],
|
|
|
+ ["someA_maybeB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["someA_maybeB", "a"],
|
|
|
+ ["someA_maybeB", "a", "b"],
|
|
|
+ ["someA_maybeB", "a", "a"],
|
|
|
+ ["someA_maybeB", "a", "a", "b"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["someA_maybeB", "a"],
|
|
|
+ ["someA_maybeB", "a", "b"],
|
|
|
+ ["someA_maybeB", "a", "a"],
|
|
|
+ ["someA_maybeB", "a", "a", "b"],
|
|
|
+ ["someA_maybeB", "a", "a", "a"],
|
|
|
+ ["someA_maybeB", "a", "a", "a", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ someA_someB: {
|
|
|
+ model: "SYSTEM: someA_someB = a+ b+;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["someA_someB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["someA_someB", "a", "b"],
|
|
|
+ ["someA_someB", "a", "b", "b"],
|
|
|
+ ["someA_someB", "a", "a", "b"],
|
|
|
+ ["someA_someB", "a", "a", "b", "b"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["someA_someB", "a", "b"],
|
|
|
+ ["someA_someB", "a", "b", "b"],
|
|
|
+ ["someA_someB", "a", "b", "b", "b"],
|
|
|
+ ["someA_someB", "a", "a", "b"],
|
|
|
+ ["someA_someB", "a", "a", "b", "b"],
|
|
|
+ ["someA_someB", "a", "a", "b", "b", "b"],
|
|
|
+ ["someA_someB", "a", "a", "a", "b"],
|
|
|
+ ["someA_someB", "a", "a", "a", "b", "b"],
|
|
|
+ ["someA_someB", "a", "a", "a", "b", "b", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ someA_maybeSomeB: {
|
|
|
+ model: "SYSTEM: someA_maybeSomeB = a+ b*;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["someA_maybeSomeB", "a"],
|
|
|
+ ["someA_maybeSomeB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["someA_maybeSomeB", "a"],
|
|
|
+ ["someA_maybeSomeB", "a", "b"],
|
|
|
+ ["someA_maybeSomeB", "a", "b", "b"],
|
|
|
+ ["someA_maybeSomeB", "a", "a"],
|
|
|
+ ["someA_maybeSomeB", "a", "a", "b"],
|
|
|
+ ["someA_maybeSomeB", "a", "a", "b", "b"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["someA_maybeSomeB", "a"],
|
|
|
+ ["someA_maybeSomeB", "a", "b"],
|
|
|
+ ["someA_maybeSomeB", "a", "b", "b"],
|
|
|
+ ["someA_maybeSomeB", "a", "b", "b", "b"],
|
|
|
+ ["someA_maybeSomeB", "a", "a"],
|
|
|
+ ["someA_maybeSomeB", "a", "a", "b"],
|
|
|
+ ["someA_maybeSomeB", "a", "a", "b", "b"],
|
|
|
+ ["someA_maybeSomeB", "a", "a", "b", "b", "b"],
|
|
|
+ ["someA_maybeSomeB", "a", "a", "a"],
|
|
|
+ ["someA_maybeSomeB", "a", "a", "a", "b"],
|
|
|
+ ["someA_maybeSomeB", "a", "a", "a", "b", "b"],
|
|
|
+ ["someA_maybeSomeB", "a", "a", "a", "b", "b", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ maybeSomeA_oneB: {
|
|
|
+ model: "SYSTEM: maybeSomeA_oneB = a* b;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["maybeSomeA_oneB", "b"],
|
|
|
+ ["maybeSomeA_oneB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["maybeSomeA_oneB", "b"],
|
|
|
+ ["maybeSomeA_oneB", "a", "b"],
|
|
|
+ ["maybeSomeA_oneB", "a", "a", "b"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["maybeSomeA_oneB", "b"],
|
|
|
+ ["maybeSomeA_oneB", "a", "b"],
|
|
|
+ ["maybeSomeA_oneB", "a", "a", "b"],
|
|
|
+ ["maybeSomeA_oneB", "a", "a", "a", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ maybeSomeA_maybeB: {
|
|
|
+ model: "SYSTEM: maybeSomeA_maybeB = a* b?;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["maybeSomeA_maybeB"],
|
|
|
+ ["maybeSomeA_maybeB", "b"],
|
|
|
+ ["maybeSomeA_maybeB", "a"],
|
|
|
+ ["maybeSomeA_maybeB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["maybeSomeA_maybeB"],
|
|
|
+ ["maybeSomeA_maybeB", "b"],
|
|
|
+ ["maybeSomeA_maybeB", "a"],
|
|
|
+ ["maybeSomeA_maybeB", "a", "b"],
|
|
|
+ ["maybeSomeA_maybeB", "a", "a"],
|
|
|
+ ["maybeSomeA_maybeB", "a", "a", "b"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["maybeSomeA_maybeB"],
|
|
|
+ ["maybeSomeA_maybeB", "b"],
|
|
|
+ ["maybeSomeA_maybeB", "a"],
|
|
|
+ ["maybeSomeA_maybeB", "a", "b"],
|
|
|
+ ["maybeSomeA_maybeB", "a", "a"],
|
|
|
+ ["maybeSomeA_maybeB", "a", "a", "b"],
|
|
|
+ ["maybeSomeA_maybeB", "a", "a", "a"],
|
|
|
+ ["maybeSomeA_maybeB", "a", "a", "a", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ maybeSomeA_someB: {
|
|
|
+ model: "SYSTEM: maybeSomeA_someB = a* b+;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["maybeSomeA_someB", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["maybeSomeA_someB", "b"],
|
|
|
+ ["maybeSomeA_someB", "b", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "b", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "a", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "a", "b", "b"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["maybeSomeA_someB", "b"],
|
|
|
+ ["maybeSomeA_someB", "b", "b"],
|
|
|
+ ["maybeSomeA_someB", "b", "b", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "b", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "b", "b", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "a", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "a", "b", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "a", "b", "b", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "a", "a", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "a", "a", "b", "b"],
|
|
|
+ ["maybeSomeA_someB", "a", "a", "a", "b", "b", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ maybeSomeA_maybeSomeB: {
|
|
|
+ model: "SYSTEM: maybeSomeA_maybeSomeB = a* b*;",
|
|
|
+ expected: {
|
|
|
+ 1: [
|
|
|
+ ["maybeSomeA_maybeSomeB"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "b"],
|
|
|
+ ],
|
|
|
+ 2: [
|
|
|
+ ["maybeSomeA_maybeSomeB"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "b", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "b", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "a"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "a", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "a", "b", "b"],
|
|
|
+ ],
|
|
|
+ 3: [
|
|
|
+ ["maybeSomeA_maybeSomeB"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "b", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "b", "b", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "b", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "b", "b", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "a"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "a", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "a", "b", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "a", "b", "b", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "a", "a"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "a", "a", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "a", "a", "b", "b"],
|
|
|
+ ["maybeSomeA_maybeSomeB", "a", "a", "a", "b", "b", "b"],
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+
|
|
|
+ ////TODO: SEQUENCE TEST
|
|
|
+ // SYSTEM: seq_oneA = a; //NOTE: like ATOM TEST but should test the event only rather than the system
|
|
|
+ // SYSTEM: seq_oneA_oneB = a b;
|
|
|
+ // SYSTEM: seq_oneA_oneB_oneC = a b c;
|
|
|
+
|
|
|
+ ////TODO: QUANTIFIED SEQUENCE TEST
|
|
|
+ // SYSTEM: seq__oneA_oneB__maybe = (a b)?;
|
|
|
+ // SYSTEM: seq__oneA_oneB__some = (a b)+;
|
|
|
+ // SYSTEM: seq__oneA_oneB__maybeSome = (a b)*;
|
|
|
+
|
|
|
+ //TODO: ALTERNATIONS
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+describe("Generator (INTEGRATION)", () => {
|
|
|
+
|
|
|
+ describe("#generate()", () => {
|
|
|
+
|
|
|
+ Object.keys(tests).forEach((testName) => {
|
|
|
+ let test = tests[testName],
|
|
|
+ modelObj = parse(test.model),
|
|
|
+ gen = new Generator(modelObj);
|
|
|
+
|
|
|
+ describe(`for model=${JSON.stringify(test.model)}`, () => {
|
|
|
+
|
|
|
+ Object.keys(test.expected).forEach((scopeStr) => {
|
|
|
+ let scope = Number(scopeStr),
|
|
|
+ expected = test.expected[scopeStr];
|
|
|
+
|
|
|
+ it(`should return ${expected.length} traces if scope=${scope}`, () => {
|
|
|
+ let actual = [
|
|
|
+ for (evt of gen.generate(modelObj.systems[testName], scope))
|
|
|
+ evt.map(s => s.replace(/_\d+of\d+$/, ""))
|
|
|
+ ];
|
|
|
+ assert.deepEqual(actual, expected);
|
|
|
+ });
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+});
|