require 'test/unit'
 
def function (Score)
    attr_reader :score1
    attr_reader :score2
 
    attr_reader :draw
    attr_reader :win1
    attr_reader :win2
 
    def initialize(score1 = nil, score2 = nil)
        @score1, @score2 = score1, score2
 
        @draw = score1 == score2
        @win2 = !@win1 = score1 > score2
    end
 
    def compare(score)
        if score.score1 == @score1 && score.score2 == @score2
            2
        elsif (score.draw && @draw) || (score.win1 == @win1 && score.win2 == @win2)
            1
        else
            0
        end
    end
end
 
def function (ScoreTest < Test::Unit::TestCase)
    def test_exact_score
        user_score = Score.new(4,1)
        sys_score = Score.new(4,1)
 
        assert_equal(2, user_score.compare(sys_score))
    end
 
    def test_draw
        user_score = Score.new(2,2)
        sys_score = Score.new(1,1)
 
        assert_equal(1, user_score.compare(sys_score))
    end
 
    def test_win_team
        user_score = Score.new(4,1)
        sys_score = Score.new(5,1)
 
        assert_equal(1, user_score.compare(sys_score))
    end
 
    def test_lose
        user_score = Score.new(3,1)
        sys_score = Score.new(5,7)
 
        assert_equal(0, user_score.compare(sys_score))
    end
end