diff options
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/parser_chain_spec.cr | 23 | ||||
| -rw-r--r-- | spec/practical/json_spec.cr | 2 |
2 files changed, 20 insertions, 5 deletions
diff --git a/spec/parser_chain_spec.cr b/spec/parser_chain_spec.cr index 05156ac..9510897 100644 --- a/spec/parser_chain_spec.cr +++ b/spec/parser_chain_spec.cr @@ -4,7 +4,7 @@ include Parcom describe "parser_chain" do it "works with zero intermediate steps" do - p = parser_chain Char, Char, "test", finally: Parser(Char, Char).pure('x') + p = parser_chain Char, Char, "test", pure: 'x' tokens = Tokens.from_string("abcd") result = p.parse(tokens) @@ -15,7 +15,7 @@ describe "parser_chain" do it "works with one intermediate step" do p = parser_chain Char, Char, "test", {c, Parser(Char, Char).any_token}, - finally: Parser(Char, Char).pure(c) + pure: c tokens = Tokens.from_string("abcd") result = p.parse(tokens) @@ -30,7 +30,7 @@ describe "parser_chain" do {front, digit.many}, {point, Parser.token('.').optional}, {back, digit.many}, - finally: case {front.empty?, point.nil?, back.empty?} + make: case {front.empty?, point.nil?, back.empty?} when {false, _, true} Parser(Char, Float64).pure(front.join.to_f64 * sign) when {true, false, false} @@ -64,7 +64,7 @@ describe "parser_chain" do two_words = parser_chain Char, {String, String}, "two_words", {word, any_word}, {_, ws}, - finally: Parser.token_sequence(word.chars).map_const({word, word}) + make: Parser.token_sequence(word.chars).map_const({word, word}) tokens = Tokens.from_string("foo \n foo") result = two_words.parse(tokens) @@ -75,5 +75,20 @@ describe "parser_chain" do tokens = Tokens.from_string("foofoo") expect_raises(ParserFail) { two_words.parse(tokens) } end + + it "fails without being given either `make` or `pure`" do + expect_raises(ArgumentError) do + _ = parser_chain Char, Char, "fails", {c, Parser.token('t')} + end + end + + it "fails when given both `make` and `pure` at the same time" do + expect_raises(ArgumentError) do + _ = parser_chain Char, Char, "fails", + {c, Parser.token('t')}, + pure: c, + make: Parser(Char, Char).pure('s') + end + end end diff --git a/spec/practical/json_spec.cr b/spec/practical/json_spec.cr index a0ce2db..cdd3425 100644 --- a/spec/practical/json_spec.cr +++ b/spec/practical/json_spec.cr @@ -47,7 +47,7 @@ describe "example: JSON parsing", tags: "example" do {front, digits}, {p, point}, {back, digits}, - finally: + make: case {front.empty?, p.nil?, back.empty?} when {true, false, false} Parser(Char, Float64).pure("0.#{back.join}".to_f64) |
