spec/federation_spec.rb in icu_utils-1.0.1 vs spec/federation_spec.rb in icu_utils-1.1.0

- old
+ new

@@ -1,10 +1,10 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper') module ICU describe Federation do - let(:total) { 179 } + let(:total) { 181 } context "#find using codes" do it "should find a federation given a valid code" do fed = Federation.find('IRL') fed.code.should == 'IRL' @@ -184,9 +184,257 @@ codes = Federation.codes codes.should have(total).items all = codes.join(',') all.index('AFG').should == 0 all.index('INA,IND,IRI,IRL,IRQ,ISL,ISR,ISV,ITA,IVB').should_not be_nil + end + end + + context "IOC codes" do + before(:all) do + ioc_and_fide = # from http://en.wikipedia.org/wiki/List_of_IOC_country_codes in November 2013 + { + "AFG" => "Afghanistan", + "AHO" => "Netherlands Antilles", + "ALB" => "Albania", + "ALG" => "Algeria", + "AND" => "Andorra", + "ANG" => "Angola", + "ANT" => "Antigua and Barbuda", + "ARG" => "Argentina", + "ARM" => "Armenia", + "ARU" => "Aruba", + "AUS" => "Australia", + "AUT" => "Austria", + "AZE" => "Azerbaijan", + "BAH" => "Bahamas", + "BAN" => "Bangladesh", + "BAR" => "Barbados", + "BDI" => "Burundi", + "BEL" => "Belgium", + "BEN" => "Benin", + "BER" => "Bermuda", + "BHU" => "Bhutan", + "BIH" => "Bosnia and Herzegovina", + "BIZ" => "Belize", + "BLR" => "Belarus", + "BOL" => "Bolivia", + "BOT" => "Botswana", + "BRA" => "Brazil", + "BRN" => "Bahrain", + "BRU" => "Brunei", + "BUL" => "Bulgaria", + "CAM" => "Cambodia", + "CAN" => "Canada", + "CGO" => "Congo", + "CHA" => "Chad", + "CHI" => "Chile", + "CHN" => "China", + "CIV" => "Ivory Coast", + "CMR" => "Cameroon", + "COL" => "Colombia", + "CRC" => "Costa Rica", + "CRO" => "Croatia", + "CUB" => "Cuba", + "CYP" => "Cyprus", + "CZE" => "Czech Republic", + "DEN" => "Denmark", + "DJI" => "Djibouti", + "DOM" => "Dominican Republic", + "ECU" => "Ecuador", + "EGY" => "Egypt", + "ESA" => "El Salvador", + "ESP" => "Spain", + "EST" => "Estonia", + "ETH" => "Ethiopia", + "FIJ" => "Fiji", + "FIN" => "Finland", + "FRA" => "France", + "FRO" => "Faroe Islands", + "GAB" => "Gabon", + "GAM" => "The Gambia", + "GEO" => "Georgia", + "GER" => "Germany", + "GHA" => "Ghana", + "GRE" => "Greece", + "GUA" => "Guatemala", + "GUM" => "Guam", + "GUY" => "Guyana", + "HAI" => "Haiti", + "HKG" => "Hong Kong", + "HON" => "Honduras", + "HUN" => "Hungary", + "INA" => "Indonesia", + "IND" => "India", + "IRI" => "Iran", + "IRL" => "Ireland", + "IRQ" => "Iraq", + "ISL" => "Iceland", + "ISR" => "Israel", + "ISV" => "Virgin Islands", + "ITA" => "Italy", + "IVB" => "British Virgin Islands", + "JAM" => "Jamaica", + "JOR" => "Jordan", + "JPN" => "Japan", + "KAZ" => "Kazakhstan", + "KEN" => "Kenya", + "KGZ" => "Kyrgyzstan", + "KOR" => "South Korea", + "KSA" => "Saudi Arabia", + "KUW" => "Kuwait", + "LAO" => "Laos", + "LAT" => "Latvia", + "LBA" => "Libya", + "LES" => "Lesotho", + "LIB" => "Lebanon", + "LIE" => "Liechtenstein", + "LTU" => "Lithuania", + "LUX" => "Luxembourg", + "MAC" => "Macau", + "MAD" => "Madagascar", + "MAR" => "Morocco", + "MAS" => "Malaysia", + "MAW" => "Malawi", + "MDA" => "Moldova", + "MDV" => "Maldives", + "MEX" => "Mexico", + "MGL" => "Mongolia", + "MKD" => "Macedonia", + "MLI" => "Mali", + "MLT" => "Malta", + "MNE" => "Montenegro", + "MON" => "Monaco", + "MOZ" => "Mozambique", + "MRI" => "Mauritius", + "MTN" => "Mauritania", + "MYA" => "Myanmar", + "NAM" => "Namibia", + "NCA" => "Nicaragua", + "NED" => "Netherlands", + "NEP" => "Nepal", + "NGR" => "Nigeria", + "NOR" => "Norway", + "NZL" => "New Zealand", + "PAK" => "Pakistan", + "PAN" => "Panama", + "PAR" => "Paraguay", + "PER" => "Peru", + "PHI" => "Philippines", + "PLE" => "Palestine", + "PLW" => "Palau", + "PNG" => "Papua New Guinea", + "POL" => "Poland", + "POR" => "Portugal", + "PUR" => "Puerto Rico", + "QAT" => "Qatar", + "ROU" => "Romania", + "RSA" => "South Africa", + "RUS" => "Russia", + "RWA" => "Rwanda", + "SEN" => "Senegal", + "SEY" => "Seychelles", + "SIN" => "Singapore", + "SLE" => "Sierra Leone", + "SLO" => "Slovenia", + "SMR" => "San Marino", + "SOL" => "Solomon Islands", + "SOM" => "Somalia", + "SRB" => "Serbia", + "SRI" => "Sri Lanka", + "STP" => "Sao Tome and Principe", + "SUD" => "Sudan", + "SUI" => "Switzerland", + "SUR" => "Suriname", + "SVK" => "Slovakia", + "SWE" => "Sweden", + "SWZ" => "Swaziland", + "SYR" => "Syria", + "TAN" => "Tanzania", + "THA" => "Thailand", + "TJK" => "Tajikistan", + "TKM" => "Turkmenistan", + "TOG" => "Togo", + "TPE" => "Chinese Taipei", + "TRI" => "Trinidad and Tobago", + "TUN" => "Tunisia", + "TUR" => "Turkey", + "UAE" => "United Arab Emirates", + "UGA" => "Uganda", + "UKR" => "Ukraine", + "URU" => "Uruguay", + "USA" => "United States", + "UZB" => "Uzbekistan", + "VEN" => "Venezuela", + "VIE" => "Vietnam", + "YEM" => "Yemen", + "ZAM" => "Zambia", + "ZIM" => "Zimbabwe", + } + ioc_but_not_fide = + { + "ASA" => "American Samoa", + "BUR" => "Burkina Faso", + "CAF" => "Central African Republic", + "CAY" => "Cayman Islands", + "COD" => "DR Congo", + "COK" => "Cook Islands", + "COM" => "Comoros", + "CPV" => "Cape Verde", + "DMA" => "Dominica", + "ERI" => "Eritrea", + "FSM" => "Federated States of Micronesia", + "GBR" => "Great Britain", + "GBS" => "Guinea-Bissau", + "GEQ" => "Equatorial Guinea", + "GRN" => "Grenada", + "GUI" => "Guinea", + "KIR" => "Kiribati", + "LBR" => "Liberia", + "LCA" => "Saint Lucia", + "MHL" => "Marshall Islands", + "NIG" => "Niger", + "NRU" => "Nauru", + "OMA" => "Oman", + "PRK" => "North Korea", + "SAM" => "Samoa", + "SKN" => "Saint Kitts and Nevis", + "TGA" => "Tonga", + "TLS" => "Timor-Leste", + "TUV" => "Tuvalu", + "VAN" => "Vanuatu", + "VIN" => "Saint Vincent and the Grenadines", + } + @missing = [] + @badname = [] + british = %w[ENG SCO WLS GCI JCI] + exceptions = # FIDE => IOC + { + "FAI" => "FRO", # Faroe Islands + "MNC" => "MON", # Monaco + } + got = {} + Federation.menu.each do |name, code| + if ioc_and_fide[code] + @badname << "#{code} #{name} #{ioc_and_fide[code]}" unless ioc_and_fide[code].include?(name) || name.include?(ioc_and_fide[code]) + else + @missing << code unless british.include?(code) || exceptions.keys.include?(code) + end + got[code] = true + end + @not_included = ioc_and_fide.keys.reject { |code| got[code] || exceptions.values.include?(code) } + end + + it "codes should be all IOC with some exceptions" do + expect(@missing.join("|")).to eq "" + end + + it "country names should be similar to the IOC name" do + expect(@badname.join("|")).to eq "" + end + + it "all IOC codes that are FIDE members should be present" do + expect(@not_included.join("|")).to eq "" end end end end