From cc22086a0924b1d091e021bfaaeae5bb123597f3 Mon Sep 17 00:00:00 2001 From: David Majda Date: Sat, 21 Apr 2012 11:29:27 +0200 Subject: [PATCH] Jasmine: Convert tests of parser's "choice" rule --- spec/parser.spec.js | 17 +++++++++++++++++ test/parser-test.js | 16 ---------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/spec/parser.spec.js b/spec/parser.spec.js index 9bf4d83..2300e34 100644 --- a/spec/parser.spec.js +++ b/spec/parser.spec.js @@ -9,6 +9,10 @@ describe("PEG.js grammar parser", function() { labeledEfgh = { type: "labeled", label: "b", expression: literalEfgh }, labeledIjkl = { type: "labeled", label: "c", expression: literalIjkl }, sequenceEmpty = { type: "sequence", elements: [] }, + sequenceOfLiterals = { + type: "sequence", + elements: [literalAbcd, literalEfgh, literalIjkl] + }, sequenceOfLabeleds = { type: "sequence", elements: [labeledAbcd, labeledEfgh, labeledIjkl] @@ -146,6 +150,19 @@ describe("PEG.js grammar parser", function() { }); }); + /* Canonical choice is "\"abcd\" / \"efgh\" / \"ijkl\"". */ + it("parses choice", function() { + expect('start = "abcd" "efgh" "ijkl"').toParseAs( + oneRuleGrammar(null, sequenceOfLiterals) + ); + expect( + 'start = "abcd" "efgh" "ijkl" / "abcd" "efgh" "ijkl" / "abcd" "efgh" "ijkl"' + ).toParseAs(oneRuleGrammar(null, { + type: "choice", + alternatives: [sequenceOfLiterals, sequenceOfLiterals, sequenceOfLiterals] + })); + }); + /* Canonical sequence is "\"abcd\" \"efgh\" \"ijkl\"". */ it("parses sequence", function() { expect('start = { code }').toParseAs( diff --git a/test/parser-test.js b/test/parser-test.js index fff3ef4..68c225c 100644 --- a/test/parser-test.js +++ b/test/parser-test.js @@ -228,20 +228,4 @@ test("parses expression", function() { ); }); -/* Canonical choice is "\"abcd\" / \"efgh\" / \"ijkl\"". */ -test("parses choice", function() { - parserParses( - 'start = "abcd" "efgh" "ijkl"', - oneRuleGrammar(sequenceLiterals) - ); - parserParses( - 'start = "abcd" "efgh" "ijkl" / "abcd" "efgh" "ijkl" / "abcd" "efgh" "ijkl"', - oneRuleGrammar(choice([ - sequenceLiterals, - sequenceLiterals, - sequenceLiterals - ])) - ); -}); - })();