From 8e104bf1b8424575b66ada3df0dd765075be5684 Mon Sep 17 00:00:00 2001 From: gemmaro Date: Sat, 2 Nov 2024 14:13:23 +0900 Subject: [PATCH 1/3] Add Rakefile with test task. --- README.md | 5 ++++- Rakefile | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 Rakefile diff --git a/README.md b/README.md index f90951c..0fce7f6 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,10 @@ some input and returns a `ParserResult`. ## Running tests - $ ruby -Ilib:test test/test_parser.rb +``` shell +rake test +ruby -Ilib:test test/test_parser.rb # per-file testing +``` # TODO Decent syntax error reporting, eg: Which line, which column failed. diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..c94dfed --- /dev/null +++ b/Rakefile @@ -0,0 +1,5 @@ +require 'rake/testtask' + +Rake::TestTask.new do |t| + t.test_files = FileList["test/test_*.rb"] +end From 56519e1b378d2912453cdc5ff410e61dec1cbddf Mon Sep 17 00:00:00 2001 From: gemmaro Date: Sat, 2 Nov 2024 14:20:05 +0900 Subject: [PATCH 2/3] Use empty string for default matched and remaining parameters of ok. --- lib/parser_result.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/parser_result.rb b/lib/parser_result.rb index 0d6fcfe..844a469 100644 --- a/lib/parser_result.rb +++ b/lib/parser_result.rb @@ -7,7 +7,7 @@ def initialize(success, remaining, matched, output=nil) @output = output.nil? ? [matched] : output end - def self.ok(output=nil, matched:, remaining:) + def self.ok(output=nil, matched: "", remaining: "") # yield matched if block_given? output = [matched] if output.nil? ParserResult.new(true, remaining, matched, output) From 2d18c4f9946384ba14bc78a927a9641febc151d1 Mon Sep 17 00:00:00 2001 From: gemmaro Date: Sat, 2 Nov 2024 14:22:10 +0900 Subject: [PATCH 3/3] Fix test expectation that it matches using seq. --- test/test_base_parsers.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_base_parsers.rb b/test/test_base_parsers.rb index 2c9b583..41becf5 100644 --- a/test/test_base_parsers.rb +++ b/test/test_base_parsers.rb @@ -132,7 +132,7 @@ start(:letterOrNumber) end - assert_equal ["w", "8"], parser.run("w8").output + assert_equal [["w"], ["8"]], parser.run("w8").output parser = Grammar.build do rule(:letter) { many1 { anyLetter } } @@ -140,7 +140,7 @@ start(:letterOrNumber) end - assert_equal ["w", "8"], parser.run("w8").output + assert_equal [["w"], ["8"]], parser.run("w8").output end it "uses regex" do