Sha256: 69507b2afc691bfe2780b0526db99b3af4bc04744d843bebda0b15bc1a987cfb

Contents?: true

Size: 1.18 KB

Versions: 83

Compression:

Stored size: 1.18 KB

Contents

# encoding: UTF-8

require File.expand_path('../helper', __FILE__)

class ParseErrorTest < Test::Unit::TestCase
  Sentence = Grammar.new do
    include Words

    rule :sentence do
      all(:capital_word, one_or_more([ :space, :word ]), :period)
    end

    rule :capital_word do
      all(/[A-Z]/, zero_or_more(:alpha))
    end

    rule :space do
      one_or_more(any(" ", "\n", "\r\n"))
    end

    rule :period, '.'
  end

  def test_basic
    begin
      TestGrammar.parse('#')
    rescue ParseError => e
      assert_equal(0, e.offset)
      assert_equal('#', e.line)
      assert_equal(1, e.line_number)
      assert_equal(0, e.line_offset)
    end
  end

  def test_single_line
    begin
      Sentence.parse('Once upon ä time.')
    rescue ParseError => e
      assert_equal(10, e.offset)
      assert_equal('Once upon ä time.', e.line)
      assert_equal(1, e.line_number)
      assert_equal(10, e.line_offset)
    end
  end

  def test_multi_line
    begin
      Sentence.parse("Once\nupon a\r\ntim3.")
    rescue ParseError => e
      assert_equal(16, e.offset)
      assert_equal('tim3.', e.line)
      assert_equal(3, e.line_number)
      assert_equal(3, e.line_offset)
    end
  end
end

Version data entries

83 entries across 83 versions & 2 rubygems

Version Path
harbr-0.1.49 vendor/bundle/ruby/3.2.0/gems/citrus-3.0.2/test/parse_error_test.rb
harbr-0.1.48 vendor/bundle/ruby/3.2.0/gems/citrus-3.0.2/test/parse_error_test.rb
harbr-0.1.47 vendor/bundle/ruby/3.2.0/gems/citrus-3.0.2/test/parse_error_test.rb
harbr-0.1.46 vendor/bundle/ruby/3.2.0/gems/citrus-3.0.2/test/parse_error_test.rb
harbr-0.1.45 vendor/bundle/ruby/3.2.0/gems/citrus-3.0.2/test/parse_error_test.rb
harbr-0.1.44 vendor/bundle/ruby/3.2.0/gems/citrus-3.0.2/test/parse_error_test.rb
harbr-0.1.43 vendor/bundle/ruby/3.2.0/gems/citrus-3.0.2/test/parse_error_test.rb
harbr-0.1.42 vendor/bundle/ruby/3.2.0/gems/citrus-3.0.2/test/parse_error_test.rb
harbr-0.1.41 vendor/bundle/ruby/3.2.0/gems/citrus-3.0.2/test/parse_error_test.rb
harbr-0.1.39 vendor/bundle/ruby/3.2.0/gems/citrus-3.0.2/test/parse_error_test.rb
harbr-0.1.38 vendor/bundle/ruby/3.2.0/gems/citrus-3.0.2/test/parse_error_test.rb
harbr-0.1.37 vendor/bundle/ruby/3.2.0/gems/citrus-3.0.2/test/parse_error_test.rb
citrus-3.0.2 test/parse_error_test.rb
citrus-3.0.1 test/parse_error_test.rb
citrus-3.0.0 test/parse_error_test.rb
citrus-2.5.0 test/parse_error_test.rb
citrus-2.4.1 test/parse_error_test.rb
citrus-2.4.0 test/parse_error_test.rb
citrus-2.3.7 test/parse_error_test.rb
citrus-2.3.6 test/parse_error_test.rb