1require 'test/unit' 2require "-test-/symbol" 3 4module Test_Symbol 5 class TestType < Test::Unit::TestCase 6 def assert_symtype(sym, pred, msg = nil) 7 assert_send([Bug::Symbol, pred, sym], msg) 8 end 9 10 def assert_not_symtype(sym, pred, msg = nil) 11 assert_not_send([Bug::Symbol, pred, sym], msg) 12 end 13 14 def test_const 15 assert_symtype("Foo", :const?) 16 assert_not_symtype("F!", :const?) 17 assert_not_symtype("foo", :const?) 18 assert_not_symtype("@foo", :const?) 19 assert_not_symtype("@@foo", :const?) 20 assert_not_symtype("$foo", :const?) 21 assert_not_symtype("foo=", :const?) 22 assert_not_symtype("[foo]", :const?) 23 assert_not_symtype("xFoo", :const?) 24 end 25 26 def test_local 27 assert_symtype("foo", :local?) 28 assert_symtype("fooBar", :local?) 29 assert_symtype("foo_bar", :local?) 30 assert_not_symtype("foo!", :local?) 31 assert_not_symtype("foo?", :local?) 32 assert_not_symtype("Foo", :local?) 33 assert_not_symtype("@foo", :local?) 34 assert_not_symtype("@@foo", :local?) 35 assert_not_symtype("$foo", :local?) 36 assert_not_symtype("foo=", :local?) 37 assert_not_symtype("[foo]", :local?) 38 end 39 40 def test_global 41 assert_symtype("$foo", :global?) 42 assert_symtype("$$", :global?) 43 assert_not_symtype("$()", :global?) 44 assert_not_symtype("$", :global?) 45 assert_not_symtype("foo", :global?) 46 assert_not_symtype("Foo", :global?) 47 assert_not_symtype("@foo", :global?) 48 assert_not_symtype("@@foo", :global?) 49 assert_not_symtype("foo=", :global?) 50 assert_not_symtype("[foo]", :global?) 51 end 52 53 def test_instance 54 assert_symtype("@foo", :instance?) 55 assert_not_symtype("@", :instance?) 56 assert_not_symtype("@1", :instance?) 57 assert_not_symtype("@@", :instance?) 58 assert_not_symtype("foo", :instance?) 59 assert_not_symtype("Foo", :instance?) 60 assert_not_symtype("@@foo", :instance?) 61 assert_not_symtype("$foo", :instance?) 62 assert_not_symtype("foo=", :instance?) 63 assert_not_symtype("[foo]", :instance?) 64 end 65 66 def test_class 67 assert_symtype("@@foo", :class?) 68 assert_not_symtype("@@", :class?) 69 assert_not_symtype("@", :class?) 70 assert_not_symtype("@@1", :class?) 71 assert_not_symtype("foo", :class?) 72 assert_not_symtype("Foo", :class?) 73 assert_not_symtype("@foo", :class?) 74 assert_not_symtype("$foo", :class?) 75 assert_not_symtype("foo=", :class?) 76 assert_not_symtype("[foo]", :class?) 77 end 78 79 def test_attrset 80 assert_symtype("foo=", :attrset?) 81 assert_symtype("Foo=", :attrset?) 82 assert_symtype("@foo=", :attrset?) 83 assert_symtype("@@foo=", :attrset?) 84 assert_symtype("$foo=", :attrset?) 85 assert_symtype("0=", :attrset?) 86 assert_symtype("@=", :attrset?) 87 assert_symtype("@@=", :attrset?) 88 assert_not_symtype("foo", :attrset?) 89 assert_not_symtype("Foo", :attrset?) 90 assert_not_symtype("@foo", :attrset?) 91 assert_not_symtype("@@foo", :attrset?) 92 assert_not_symtype("$foo", :attrset?) 93 assert_not_symtype("[foo]", :attrset?) 94 assert_symtype("[foo]=", :attrset?) 95 assert_equal(:"foo=", Bug::Symbol.attrset("foo")) 96 assert_symtype(Bug::Symbol.attrset("foo"), :attrset?) 97 assert_equal(:"Foo=", Bug::Symbol.attrset("Foo")) 98 assert_symtype(Bug::Symbol.attrset("Foo"), :attrset?) 99 assert_equal(:"@foo=", Bug::Symbol.attrset("@foo")) 100 assert_symtype(Bug::Symbol.attrset("@foo"), :attrset?) 101 assert_equal(:"@@foo=", Bug::Symbol.attrset("@@foo")) 102 assert_symtype(Bug::Symbol.attrset("@@foo"), :attrset?) 103 assert_equal(:"$foo=", Bug::Symbol.attrset("$foo")) 104 assert_symtype(Bug::Symbol.attrset("$foo"), :attrset?) 105 assert_equal(:"[foo]=", Bug::Symbol.attrset("[foo]")) 106 assert_symtype(Bug::Symbol.attrset("[foo]"), :attrset?) 107 assert_equal(:[]=, Bug::Symbol.attrset(:[])) 108 assert_symtype(Bug::Symbol.attrset("foo?="), :attrset?) 109 assert_equal(:"foo?=", Bug::Symbol.attrset(:foo?)) 110 assert_symtype(Bug::Symbol.attrset("foo!="), :attrset?) 111 assert_equal(:"foo!=", Bug::Symbol.attrset(:foo!)) 112 end 113 end 114end 115