require File.expand_path(File.dirname(__FILE__) + '/spec_helper') module ICU describe TieBreak do context "#identify which rule" do it "should recognize Buchholz" do expect(TieBreak.identify(:buchholz).id).to eq(:buchholz) expect(TieBreak.identify(" BucholtS ").id).to eq(:buchholz) expect(TieBreak.identify(" bh ").id).to eq(:buchholz) expect(TieBreak.identify(" buccholts ").code).to eq("BH") end it "should recognize Harkness (Median)" do expect(TieBreak.identify(:harkness).id).to eq(:harkness) expect(TieBreak.identify("median").id).to eq(:harkness) expect(TieBreak.identify(" hARKNES ").id).to eq(:harkness) expect(TieBreak.identify("HK").id).to eq(:harkness) expect(TieBreak.identify("MEDIAN").code).to eq("HK") end it "should recognize Modified Median" do expect(TieBreak.identify(:modified).id).to eq(:modified_median) expect(TieBreak.identify(" modified MEDIAN ").id).to eq(:modified_median) expect(TieBreak.identify("MM").code).to eq("MM") end it "should recognize Number of Blacks" do expect(TieBreak.identify(:blacks).id).to eq(:blacks) expect(TieBreak.identify("number\tof\tblacks\n").id).to eq(:blacks) expect(TieBreak.identify("\tnb\t").id).to eq(:blacks) expect(TieBreak.identify("number_blacks").code).to eq("NB") end it "should recognize Number of Wins" do expect(TieBreak.identify(:wins).id).to eq(:wins) expect(TieBreak.identify(" number-of-wins ").id).to eq(:wins) expect(TieBreak.identify("NUMBER WINS\r\n").id).to eq(:wins) expect(TieBreak.identify("nw").code).to eq("NW") end it "should recognize Player's of Name" do expect(TieBreak.identify(:name).id).to eq(:name) expect(TieBreak.identify("Player's Name").id).to eq(:name) expect(TieBreak.identify("players_name").id).to eq(:name) expect(TieBreak.identify("PN").id).to eq(:name) expect(TieBreak.identify("PLAYER-NAME").code).to eq("PN") end it "should recognize Sonneborn-Berger" do expect(TieBreak.identify(:sonneborn_berger).id).to eq(:neustadtl) expect(TieBreak.identify(:neustadtl).id).to eq(:neustadtl) expect(TieBreak.identify(" SONNEBORN\nberger").id).to eq(:neustadtl) expect(TieBreak.identify("\t soneborn_berger \t").id).to eq(:neustadtl) expect(TieBreak.identify("sb").id).to eq(:neustadtl) expect(TieBreak.identify("NESTADL").code).to eq("SB") end it "should recognize Sum of Progressive Scores" do expect(TieBreak.identify(:progressive).id).to eq(:progressive) expect(TieBreak.identify("CUMULATIVE").id).to eq(:progressive) expect(TieBreak.identify("sum of progressive scores").id).to eq(:progressive) expect(TieBreak.identify("SUM-cumulative_SCORE").id).to eq(:progressive) expect(TieBreak.identify(:cumulative_score).id).to eq(:progressive) expect(TieBreak.identify("SumOfCumulative").id).to eq(:progressive) expect(TieBreak.identify("SP").code).to eq("SP") end it "should recognize Sum of Opponents' Ratings" do expect(TieBreak.identify(:ratings).id).to eq(:ratings) expect(TieBreak.identify("sum of opponents ratings").id).to eq(:ratings) expect(TieBreak.identify("Opponents' Ratings").id).to eq(:ratings) expect(TieBreak.identify("SR").id).to eq(:ratings) expect(TieBreak.identify("SUMOPPONENTSRATINGS").code).to eq("SR") end it "should recognize player's name" do expect(TieBreak.identify(:name).id).to eq(:name) expect(TieBreak.identify(" player's NAME ").id).to eq(:name) expect(TieBreak.identify("pn").code).to eq("PN") end it "should return nil for unrecognized tie breaks" do expect(TieBreak.identify("XYZ")).to be_nil expect(TieBreak.identify(nil)).to be_nil end end context "return an array of tie break rules" do before(:each) do @rules = TieBreak.rules end it "should be an array in a specific order" do expect(@rules.size).to eq(9) expect(@rules.first.name).to eq("Buchholz") expect(@rules.map(&:code).join("|")).to eq("BH|HK|MM|NB|NW|PN|SB|SR|SP") end end end end