Sha256: b1d3b0c4d31c91053bba8ddce869136b8ca51332fbc414b5fbc7a5cf66188d24

Contents?: true

Size: 1.31 KB

Versions: 7

Compression:

Stored size: 1.31 KB

Contents

require File.dirname(__FILE__) + '/helper'

class ChoiceTest < Test::Unit::TestCase

  def test_terminal?
    rule = Choice.new
    assert_equal(false, rule.terminal?)
  end

  def test_match
    rule = Choice.new(%w<a b>)

    match = rule.match(input(''))
    assert_equal(nil, match)

    match = rule.match(input('a'))
    assert(match)
    assert_equal('a', match.text)
    assert_equal(1, match.length)
  end

  def test_match_multi
    rule = Choice.new(%w<a b>)

    match = rule.match(input('ab'))
    assert(match)
    assert_equal('a', match.text)
    assert_equal(1, match.length)

    match = rule.match(input('ba'))
    assert(match)
    assert_equal('b', match.text)
    assert_equal(1, match.length)
  end

  def test_match_embed
    rule = Choice.new([ /\d+/, Choice.new(%w<+ ->) ])

    match = rule.match(input('1+'))
    assert(match)
    assert_equal('1', match.text)
    assert_equal(1, match.length)

    match = rule.match(input('+1'))
    assert(match)
    assert_equal('+', match.text)
    assert_equal(1, match.length)
  end

  def test_to_s
    rule = Choice.new(%w<a b>)
    assert_equal('"a" | "b"', rule.to_s)
  end

  def test_to_s_embed
    rule1 = Choice.new(%w<a b>)
    rule2 = Choice.new(%w<c d>)
    rule = Choice.new([rule1, rule2])
    assert_equal('("a" | "b") | ("c" | "d")', rule.to_s)
  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
citrus-1.4.0 test/choice_test.rb
citrus-1.3.0 test/choice_test.rb
citrus-1.2.2 test/choice_test.rb
citrus-1.2.1 test/choice_test.rb
citrus-1.2.0 test/choice_test.rb
citrus-1.1.0 test/choice_test.rb
citrus-1.0.0 test/choice_test.rb