Sha256: 8f7f07424177f66109b78c2b2bac04294210344254f5f21a333a36cb0ae00b5e

Contents?: true

Size: 1.08 KB

Versions: 7

Compression:

Stored size: 1.08 KB

Contents

require File.dirname(__FILE__) + '/helper'
Citrus.load(File.dirname(__FILE__) + '/_files/alias')

class AliasTest < Test::Unit::TestCase

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

  def test_match
    grammar = Grammar.new {
      rule :a, :b
      rule :b, 'b'
    }

    match = grammar.parse('b')
    assert(match)
    assert('b', match.text)
    assert(1, match.length)
  end

  def test_match_renamed
    grammar = Grammar.new {
      rule :a, ext(:b) {
        def value
          'a' + text
        end
      }
      rule :b, 'b'
    }

    match = grammar.parse('b')
    assert(match)
    assert('ab', match.value)

    assert_raise RuntimeError do
      match.b
    end
  end

  def test_peg
    match = AliasOne.parse('a')
    assert(match)
  end

  def test_included
    grammar1 = Grammar.new {
      rule :a, 'a'
    }

    grammar2 = Grammar.new {
      include grammar1
      rule :b, :a
    }

    match = grammar2.parse('a')
    assert(match)
  end

  def test_to_s
    rule = Alias.new(:alpha)
    assert_equal('alpha', rule.to_s)
  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

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