require 'minitest/autorun' require_relative '../lib/norwegian-postcodes' describe PostCodes::PostCode do before do @postcode = PostCodes::PostCode.new('1234', 'MYTOWN', '1378', 'MY MUNICIPALITY', 'G') end it "has a county" do @postcode.county.must_equal [13, '(BERGEN)'] end it "can print it's original form" do @postcode.to_s.must_equal "1234\tMYTOWN\t1378\tMY MUNICIPALITY\tG" end end describe 'PostCodes::county' do it "must give the right county names" do PostCodes.county(1).must_equal('ØSTFOLD') PostCodes.county(2).must_equal('AKERSHUS') PostCodes.county(3).must_equal('OSLO') PostCodes.county(4).must_equal('HEDMARK') PostCodes.county(5).must_equal('OPPLAND') PostCodes.county(6).must_equal('BUSKERUD') PostCodes.county(7).must_equal('VESTFOLD') PostCodes.county(8).must_equal('TELEMARK') PostCodes.county(9).must_equal('AUST-AGDER') PostCodes.county(10).must_equal('VEST-AGDER') PostCodes.county(11).must_equal('ROGALAND') PostCodes.county(12).must_equal('HORDALAND') PostCodes.county(13).must_equal('(BERGEN)') PostCodes.county(14).must_equal('SOGN OG FJORDANE') PostCodes.county(15).must_equal('MØRE OG ROMSDAL') PostCodes.county(16).must_equal('SØR-TRØNDELAG') PostCodes.county(17).must_equal('NORD-TRØNDELAG') PostCodes.county(18).must_equal('NORDLAND') PostCodes.county(19).must_equal('TROMS') PostCodes.county(20).must_equal('FINNMARK') PostCodes.county(21).must_equal('SVALBARD') PostCodes.county(22).must_equal('JAN MAYEN') PostCodes.county(23).must_equal('KONTINENTALSOKKELEN') end it "must fail on invalid county codes" do PostCodes.county(0).must_equal nil PostCodes.county(24).must_equal nil end end describe PostCodes do before do codes = [ "0100\tFIRST TOWN\t0101\tFIRST MUNICIPALITY\tG", "1234\tMYTONW\t1278\tMY MUNICIPALITY\tG", "6734\tOTHERTOWN\t2783\tOTHER MUNICIPALITY\tG" ] PostCodes.load(StringIO.new(codes.join("\n").encode(Encoding::ISO_8859_15))) end it "can find existing postcode" do c = PostCodes.search('0100') c.must_be_kind_of(PostCodes::PostCode) c.city.must_equal('FIRST TOWN') c1 = PostCodes.search('6734') c1.must_be_kind_of(PostCodes::PostCode) c1.city.must_equal('OTHERTOWN') end it "returns nil if postcode does not exist" do c = PostCodes.search('2222') c.must_equal(nil) end end