annotate vendor/gems/coderay-0.9.7/test/functional/word_list.rb @ 1173:5d3fb66f9ae4 bug_371

Close obsolete branch bug_371
author Chris Cannam
date Fri, 03 Feb 2012 15:02:13 +0000
parents 0579821a129a
children
rev   line source
Chris@210 1 require 'test/unit'
Chris@210 2 require 'coderay'
Chris@210 3
Chris@210 4 class WordListTest < Test::Unit::TestCase
Chris@210 5
Chris@210 6 include CodeRay
Chris@210 7
Chris@210 8 # define word arrays
Chris@210 9 RESERVED_WORDS = %w[
Chris@210 10 asm break case continue default do else
Chris@210 11 ...
Chris@210 12 ]
Chris@210 13
Chris@210 14 PREDEFINED_TYPES = %w[
Chris@210 15 int long short char void
Chris@210 16 ...
Chris@210 17 ]
Chris@210 18
Chris@210 19 PREDEFINED_CONSTANTS = %w[
Chris@210 20 EOF NULL ...
Chris@210 21 ]
Chris@210 22
Chris@210 23 # make a WordList
Chris@210 24 IDENT_KIND = WordList.new(:ident).
Chris@210 25 add(RESERVED_WORDS, :reserved).
Chris@210 26 add(PREDEFINED_TYPES, :pre_type).
Chris@210 27 add(PREDEFINED_CONSTANTS, :pre_constant)
Chris@210 28
Chris@210 29 def test_word_list_example
Chris@210 30 assert_equal :pre_type, IDENT_KIND['void']
Chris@210 31 # assert_equal :pre_constant, IDENT_KIND['...'] # not specified
Chris@210 32 end
Chris@210 33
Chris@210 34 def test_word_list
Chris@210 35 list = WordList.new(:ident).add(['foobar'], :reserved)
Chris@210 36 assert_equal :reserved, list['foobar']
Chris@210 37 assert_equal :ident, list['FooBar']
Chris@210 38 end
Chris@210 39
Chris@210 40 def test_word_list_cached
Chris@210 41 list = WordList.new(:ident, true).add(['foobar'], :reserved)
Chris@210 42 assert_equal :reserved, list['foobar']
Chris@210 43 assert_equal :ident, list['FooBar']
Chris@210 44 end
Chris@210 45
Chris@210 46 def test_case_ignoring_word_list
Chris@210 47 list = CaseIgnoringWordList.new(:ident).add(['foobar'], :reserved)
Chris@210 48 assert_equal :ident, list['foo']
Chris@210 49 assert_equal :reserved, list['foobar']
Chris@210 50 assert_equal :reserved, list['FooBar']
Chris@210 51
Chris@210 52 list = CaseIgnoringWordList.new(:ident).add(['FooBar'], :reserved)
Chris@210 53 assert_equal :ident, list['foo']
Chris@210 54 assert_equal :reserved, list['foobar']
Chris@210 55 assert_equal :reserved, list['FooBar']
Chris@210 56 end
Chris@210 57
Chris@210 58 def test_case_ignoring_word_list_cached
Chris@210 59 list = CaseIgnoringWordList.new(:ident, true).add(['foobar'], :reserved)
Chris@210 60 assert_equal :ident, list['foo']
Chris@210 61 assert_equal :reserved, list['foobar']
Chris@210 62 assert_equal :reserved, list['FooBar']
Chris@210 63
Chris@210 64 list = CaseIgnoringWordList.new(:ident, true).add(['FooBar'], :reserved)
Chris@210 65 assert_equal :ident, list['foo']
Chris@210 66 assert_equal :reserved, list['foobar']
Chris@210 67 assert_equal :reserved, list['FooBar']
Chris@210 68 end
Chris@210 69
Chris@210 70 def test_dup
Chris@210 71 list = WordList.new(:ident).add(['foobar'], :reserved)
Chris@210 72 assert_equal :reserved, list['foobar']
Chris@210 73 list2 = list.dup
Chris@210 74 list2.add(%w[foobar], :keyword)
Chris@210 75 assert_equal :keyword, list2['foobar']
Chris@210 76 assert_equal :reserved, list['foobar']
Chris@210 77 end
Chris@210 78
Chris@210 79 end