A test case for collection class : Unit Testing « Unit Test « Ruby






A test case for collection class


require 'test/unit' 
class SongList 
    def initialize 
        @songs = Array.new 
    end 

    def append(song) 
        @songs.push(song) 
        self 
    end 
    def delete_first 
        @songs.shift 
    end 
    def delete_last 
        @songs.pop 
    end 
    def [](index) 
        @songs[index] 
    end 
end 

class TestSongList < Test::Unit::TestCase 
    def test_delete 
        list = SongList.new 
        s1 = Song.new('title1', 'artist1', 1) 
        s2 = Song.new('title2', 'artist2', 2) 
        s3 = Song.new('title3', 'artist3', 3) 
        s4 = Song.new('title4', 'artist4', 4) 
        
        
        list.append(s1).append(s2).append(s3).append(s4) 
        assert_equal(s1, list[0]) 
        assert_equal(s3, list[2]) 
        assert_nil(list[9]) 
        assert_equal(s1, list.delete_first) 
        assert_equal(s2, list.delete_first) 
        assert_equal(s4, list.delete_last) 
        assert_equal(s3, list.delete_last) 
        assert_nil(list.delete_last) 
    end 
end

 








Related examples in the same category

1.The Philosophy of Test-Driven Development
2.Unit Testing: assert_equal
3.Writing Unit Tests
4.Test case setup
5.Unit Testing: hard code value
6.Test the values in an array
7.Assert exception raised
8.Structuring Tests
9.Varying the Algorithm with the Template Method