module Pione::TestHelper::Parser
Public Class Methods
make_test_parser(parser_module)
click to toggle source
Make a test parser class by the sub-parser module.
# File lib/pione/test-helper/parser-helper.rb, line 5 def make_test_parser(parser_module) klass = Class.new(Parslet::Parser) klass.instance_eval do include parser_module end return klass end
spec(rb, context, parser=Pione::Lang::DocumentParser)
click to toggle source
Make specifications of parser.
# File lib/pione/test-helper/parser-helper.rb, line 15 def spec(rb, context, parser=Pione::Lang::DocumentParser) basename = File.basename(rb, ".rb") path = File.join(File.dirname(rb), "data", basename[5..-1] + ".yml") YAML.load(File.read(path)).each do |name, testcase| context.describe name do if strings = testcase["valid"] strings.each do |string| it "should parse as %s:%s%s" % [name, string.include?("\n") ? "\n" : " ", string.chomp] do should.not.raise(Parslet::ParseFailed) do parser.new.send(name).parse(string) end end end end if strings = testcase["invalid"] strings.each do |string| it "should fail when parsing as %s:%s%s" % [name, string.include?("\n") ? "\n" : " ", string.chomp] do should.raise(Parslet::ParseFailed) do parser.new.send(name).parse(string) end end end end end end end
Private Instance Methods
make_test_parser(parser_module)
click to toggle source
Make a test parser class by the sub-parser module.
# File lib/pione/test-helper/parser-helper.rb, line 5 def make_test_parser(parser_module) klass = Class.new(Parslet::Parser) klass.instance_eval do include parser_module end return klass end
spec(rb, context, parser=Pione::Lang::DocumentParser)
click to toggle source
Make specifications of parser.
# File lib/pione/test-helper/parser-helper.rb, line 15 def spec(rb, context, parser=Pione::Lang::DocumentParser) basename = File.basename(rb, ".rb") path = File.join(File.dirname(rb), "data", basename[5..-1] + ".yml") YAML.load(File.read(path)).each do |name, testcase| context.describe name do if strings = testcase["valid"] strings.each do |string| it "should parse as %s:%s%s" % [name, string.include?("\n") ? "\n" : " ", string.chomp] do should.not.raise(Parslet::ParseFailed) do parser.new.send(name).parse(string) end end end end if strings = testcase["invalid"] strings.each do |string| it "should fail when parsing as %s:%s%s" % [name, string.include?("\n") ? "\n" : " ", string.chomp] do should.raise(Parslet::ParseFailed) do parser.new.send(name).parse(string) end end end end end end end