test/names.rb in compsci-0.3.0.1 vs test/names.rb in compsci-0.3.1.1

- old
+ new

@@ -1,97 +1,136 @@ require 'compsci/names' require 'compsci/names/greek' +require 'compsci/names/pokemon' require 'minitest/autorun' include CompSci describe Names do describe "alphabetic constants" do it "must have size 26" do - Names::WW1.size.must_equal 26 - Names::WW2.size.must_equal 26 - Names::NATO.size.must_equal 26 - Names::ENGLISH_UPPER.size.must_equal 26 - Names::ENGLISH_LOWER.size.must_equal 26 + expect(Names::WW1.size).must_equal 26 + expect(Names::WW2.size).must_equal 26 + expect(Names::NATO.size).must_equal 26 + expect(Names::ENGLISH_UPPER.size).must_equal 26 + expect(Names::ENGLISH_LOWER.size).must_equal 26 end end describe "Names.assign" do it "must handle English / ASCII strings" do upper_lower = Names::ENGLISH_UPPER + Names::ENGLISH_LOWER - Names.assign('cat', Names::ENGLISH_UPPER).must_equal 'C' - Names.assign('Cat', Names::ENGLISH_UPPER).must_equal 'C' - Names.assign('cat', Names::ENGLISH_LOWER).must_equal 'c' - Names.assign('Cat', Names::ENGLISH_LOWER).must_equal 'c' - Names.assign('Cat', upper_lower).must_equal 'C' - Names.assign('cat', upper_lower).must_equal 'c' - Names.assign('cat', Names::NATO).must_equal :charlie - Names.assign('Cat', Names::NATO).must_equal :charlie - Names.assign('Dog', Names::CRYPTO).must_equal :david - Names.assign('2', Names::PLANETS).must_equal :earth - end + expect(Names.assign('cat', Names::ENGLISH_UPPER)).must_equal 'C' + expect(Names.assign('Cat', Names::ENGLISH_UPPER)).must_equal 'C' + expect(Names.assign('cat', Names::ENGLISH_LOWER)).must_equal 'c' + expect(Names.assign('Cat', Names::ENGLISH_LOWER)).must_equal 'c' + expect(Names.assign('Cat', upper_lower)).must_equal 'C' + expect(Names.assign('cat', upper_lower)).must_equal 'c' + expect(Names.assign('cat', Names::NATO)).must_equal :charlie + expect(Names.assign('Cat', Names::NATO)).must_equal :charlie + expect(Names.assign('Dog', Names::CRYPTO)).must_equal :david + expect(Names.assign('2', Names::PLANETS)).must_equal :earth end it "must handle integers" do upper_lower = Names::ENGLISH_UPPER + Names::ENGLISH_LOWER - Names.assign(36, upper_lower).must_equal 'k' - Names.assign(0, upper_lower).must_equal 'A' - Names.assign(0, Names::ENGLISH_UPPER).must_equal 'A' - Names.assign(3, Names::ENGLISH_LOWER).must_equal 'd' - Names.assign(3, Names::PLANETS).must_equal :mars + expect(Names.assign(36, upper_lower)).must_equal 'k' + expect(Names.assign(0, upper_lower)).must_equal 'A' + expect(Names.assign(0, Names::ENGLISH_UPPER)).must_equal 'A' + expect(Names.assign(3, Names::ENGLISH_LOWER)).must_equal 'd' + expect(Names.assign(3, Names::PLANETS)).must_equal :mars end end describe Names::Greek do describe "greek alphabetic constants" do it "must have size 24" do - Names::Greek::UPPER.size.must_equal 24 - Names::Greek::LOWER.size.must_equal 24 - Names::Greek::SYMBOLS.size.must_equal 24 - Names::Greek::CHAR_MAP.size.must_equal 24 + expect(Names::Greek::UPPER.size).must_equal 24 + expect(Names::Greek::LOWER.size).must_equal 24 + expect(Names::Greek::SYMBOLS.size).must_equal 24 + expect(Names::Greek::CHAR_MAP.size).must_equal 24 end end describe "SYMBOLS26" do it "must work well with Names.assign" do s26 = Names::Greek::SYMBOLS26 - Names.assign('iota', s26).must_equal :iota - Names.assign('jota', s26).must_equal :xi - Names.assign('Query', s26).must_equal :xi - Names.assign('who', s26).must_equal :xi - Names.assign('zeta', s26).must_equal :omega - Names.assign(0, s26).must_equal :alpha - Names.assign('1', s26).must_equal :beta + expect(Names.assign('iota', s26)).must_equal :iota + expect(Names.assign('jota', s26)).must_equal :xi + expect(Names.assign('Query', s26)).must_equal :xi + expect(Names.assign('who', s26)).must_equal :xi + expect(Names.assign('zeta', s26)).must_equal :omega + expect(Names.assign(0, s26)).must_equal :alpha + expect(Names.assign('1', s26)).must_equal :beta end end - end - describe "Greek.sym" do - it "must handle strings and integers" do - Names::Greek.sym('cat').must_equal :gamma - Names::Greek.sym('Cat').must_equal :gamma - Names::Greek.sym('zeta').must_equal :omega - Names::Greek.sym(0).must_equal :alpha - Names::Greek.sym('1').must_equal :beta - Names::Greek.sym(23).must_equal :omega + describe "Greek.sym" do + it "must handle strings and integers" do + expect(Names::Greek.sym('cat')).must_equal :gamma + expect(Names::Greek.sym('Cat')).must_equal :gamma + expect(Names::Greek.sym('zeta')).must_equal :omega + expect(Names::Greek.sym(0)).must_equal :alpha + expect(Names::Greek.sym('1')).must_equal :beta + expect(Names::Greek.sym(23)).must_equal :omega + end end - end - describe "Greek.lower" do - it "must handle strings and integers" do - third = Names::Greek::LOWER[2] - Names::Greek.lower('cat').must_equal third - Names::Greek.lower('Cat').must_equal third - Names::Greek.lower(2).must_equal third - Names::Greek.lower('2').must_equal third + describe "Greek.lower" do + it "must handle strings and integers" do + third = Names::Greek::LOWER[2] + expect(Names::Greek.lower('cat')).must_equal third + expect(Names::Greek.lower('Cat')).must_equal third + expect(Names::Greek.lower(2)).must_equal third + expect(Names::Greek.lower('2')).must_equal third + end end + + describe "Greek.upper" do + it "must handle strings and integers" do + fourth = Names::Greek::UPPER[3] + expect(Names::Greek.upper('dog')).must_equal fourth + expect(Names::Greek.upper('Dog')).must_equal fourth + expect(Names::Greek.upper(3)).must_equal fourth + expect(Names::Greek.upper('3')).must_equal fourth + end + end end - describe "Greek.upper" do - it "must handle strings and integers" do - fourth = Names::Greek::UPPER[3] - Names::Greek.upper('dog').must_equal fourth - Names::Greek.upper('Dog').must_equal fourth - Names::Greek.upper(3).must_equal fourth - Names::Greek.upper('3').must_equal fourth + describe Names::Pokemon do + it "must have an array" do + ary = Names::Pokemon.array + expect(ary).must_be_kind_of Array + expect(ary.size).must_be :>, 99 + end + + it "must have a hash keyed by first letter" do + hsh = Names::Pokemon.hash + expect(hsh).must_be_kind_of Hash + expect(hsh.size).must_equal 26 + expect(hsh['n']).must_be_kind_of Array + expect(hsh['n'].first).must_be_kind_of String + expect(hsh['n'].first).must_match(/^n/) + end + + it "must grep for charizard" do + ary = Names::Pokemon.grep(/^char/, all: true) + expect(ary).must_include 'charizard' + char = Names::Pokemon.grep(/^char/, all: false) + expect(char).wont_equal 'charizard' + expect(char).must_equal 'charmander' + end + + it "must convert vals to key letters" do + [5, '5', 'food', 'Food'].each { |valid| + expect(Names::Pokemon.key(valid)).must_equal 'f' + } + + ['---', Names::Pokemon].each { |invalid_raise| + expect(proc { Names::Pokemon.key(invalid_raise) }).must_raise Exception + } + + [4359873548].each { |invalid_nil| + expect(Names::Pokemon.key(invalid_nil).nil?).must_equal true + } end end end