Browse Source

MPIDE-28: generator: ✅: groups w/ tests

Kyle P Davis 10 years ago
parent
commit
21e363e31f

+ 1 - 0
src/lib/generator/modellang.es6

@@ -30,6 +30,7 @@ module.exports = class Generator {
 				if (!obj.body) throw new Error(`Unexpected empty ${obj.type}`);
 				id = `${obj.id}_${n + 1}of${max}`;
 				/* falls through */
+			case "Group":
 			case "Sequence": // or System or Behavior
 				let outs = [];
 				if (i === 0) {

+ 3 - 1
src/lib/generator/test/generator.js

@@ -402,8 +402,10 @@ describe("Generator (UNIT)", function() {
 
 		});
 
-		xdescribe("Alternation", function() {
+		xdescribe("Group", function() {
+		});
 
+		xdescribe("Alternation", function() {
 		});
 
 	});

+ 134 - 12
src/lib/generator/test/generatorIntegration.js

@@ -13,7 +13,7 @@ let parser = PEG.buildParser(fs.readFileSync(path.join(__dirname, "/../../parser
 
 let tests = {
 
-	// ATOM TEST
+	// ATOM TESTS
 	oneA: {
 		model: "SYSTEM: oneA = a;",
 		expected: {
@@ -26,7 +26,7 @@ let tests = {
 		},
 	},
 
-	// QUANTIFIED ATOM TEST
+	// QUANTIFIED ATOM TESTS
 	maybeA: {
 		model: "SYSTEM: maybeA = a?;",
 		expected: {
@@ -102,7 +102,8 @@ let tests = {
 		},
 	},
 
-	// SEQUENCE WITH QUANTIFIED ATOMS TEST
+	//SEQUENCE TESTS
+	// TODO: naming: prefix with seq__
 	oneA_oneB: {
 		model: "SYSTEM: oneA_oneB = a b;",
 		expected: {
@@ -114,6 +115,20 @@ let tests = {
 			],
 		},
 	},
+	oneA_oneB_oneC: {
+		model: "SYSTEM: oneA_oneB_oneC = a b c;",
+		expected: {
+			1: [
+				["oneA_oneB_oneC", "a", "b", "c"],
+			],
+			2: [
+				["oneA_oneB_oneC", "a", "b", "c"],
+			],
+		},
+	},
+
+	// SEQUENCE WITH QUANTIFIED ATOMS TESTS
+	// TODO: naming: prefix with seq__
 	oneA_maybeB: {
 		model: "SYSTEM: oneA_maybeB = a b?;",
 		expected: {
@@ -463,17 +478,124 @@ let tests = {
 		},
 	},
 
-	////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;
+	// GROUP TESTS
+	grp__oneA: {
+		model: "SYSTEM: grp__oneA = (a);",
+		expected: {
+			1: [
+				["grp__oneA", "a"],
+			],
+			2: [
+				["grp__oneA", "a"],
+			],
+		},
+	},
+
+	// QUANTIFIED GROUP TESTS
+	maybeGrp__oneA: {
+		model: "SYSTEM: maybeGrp__oneA = (a)?;",
+		expected: {
+			1: [
+				["maybeGrp__oneA"],
+				["maybeGrp__oneA", "a"],
+			],
+			2: [
+				["maybeGrp__oneA"],
+				["maybeGrp__oneA", "a"],
+			],
+		},
+	},
+	someGrp__oneA: {
+		model: "SYSTEM: someGrp__oneA = (a)+;",
+		expected: {
+			1: [
+				["someGrp__oneA", "a"],
+			],
+			2: [
+				["someGrp__oneA", "a"],
+				["someGrp__oneA", "a", "a"],
+			],
+			3: [
+				["someGrp__oneA", "a"],
+				["someGrp__oneA", "a", "a"],
+				["someGrp__oneA", "a", "a", "a"],
+			],
+		},
+	},
+	maybeSomeGrp__oneA: {
+		model: "SYSTEM: maybeSomeGrp__oneA = (a)*;",
+		expected: {
+			1: [
+				["maybeSomeGrp__oneA"],
+				["maybeSomeGrp__oneA", "a"],
+			],
+			2: [
+				["maybeSomeGrp__oneA"],
+				["maybeSomeGrp__oneA", "a"],
+				["maybeSomeGrp__oneA", "a", "a"],
+			],
+			3: [
+				["maybeSomeGrp__oneA"],
+				["maybeSomeGrp__oneA", "a"],
+				["maybeSomeGrp__oneA", "a", "a"],
+				["maybeSomeGrp__oneA", "a", "a", "a"],
+			],
+		},
+	},
 
-	////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)*;
+	// QUANTIFIED GROUP OF SEQUENCE TESTS
+	maybeSeq__oneA_oneB: {
+		model: "SYSTEM: maybeSeq__oneA_oneB = (a b)?;",
+		expected: {
+			1: [
+				["maybeSeq__oneA_oneB"],
+				["maybeSeq__oneA_oneB", "a", "b"],
+			],
+			2: [
+				["maybeSeq__oneA_oneB"],
+				["maybeSeq__oneA_oneB", "a", "b"],
+			],
+		},
+	},
+	someSeq__oneA_oneB: {
+		model: "SYSTEM: someSeq__oneA_oneB = (a b)+;",
+		expected: {
+			1: [
+				["someSeq__oneA_oneB", "a", "b"],
+			],
+			2: [
+				["someSeq__oneA_oneB", "a", "b"],
+				["someSeq__oneA_oneB", "a", "b", "a", "b"],
+			],
+			3: [
+				["someSeq__oneA_oneB", "a", "b"],
+				["someSeq__oneA_oneB", "a", "b", "a", "b"],
+				["someSeq__oneA_oneB", "a", "b", "a", "b", "a", "b"],
+			],
+		},
+	},
+	maybeSomeSeq__oneA_oneB: {
+		model: "SYSTEM: maybeSomeSeq__oneA_oneB = (a b)*;",
+		expected: {
+			1: [
+				["maybeSomeSeq__oneA_oneB"],
+				["maybeSomeSeq__oneA_oneB", "a", "b"],
+			],
+			2: [
+				["maybeSomeSeq__oneA_oneB"],
+				["maybeSomeSeq__oneA_oneB", "a", "b"],
+				["maybeSomeSeq__oneA_oneB", "a", "b", "a", "b"],
+			],
+			3: [
+				["maybeSomeSeq__oneA_oneB"],
+				["maybeSomeSeq__oneA_oneB", "a", "b"],
+				["maybeSomeSeq__oneA_oneB", "a", "b", "a", "b"],
+				["maybeSomeSeq__oneA_oneB", "a", "b", "a", "b", "a", "b"],
+			],
+		},
+	},
 
-	//TODO: ALTERNATIONS
+	//TODO: ALTERNATION TESTS
 
 };