aboutsummaryrefslogtreecommitdiff
path: root/ruby/contents_TEST.rb
blob: 926f85d091218440e5315bb3d4454f832144849a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
#!/usr/bin/env ruby
# vim: set sw=4 sts=4 et tw=80 :
#
# Copyright (c) 2006, 2007 Richard Brown
#
# This file is part of the Paludis package manager. Paludis is free software;
# you can redistribute it and/or modify it under the terms of the GNU General
# Public License version 2, as published by the Free Software Foundation.
#
# Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA  02111-1307  USA
#

require 'test/unit'
require 'Paludis'

module Paludis
    class TestCase_ContentsEntry < Test::Unit::TestCase
        def test_no_create
            assert_raise NoMethodError do
                ce = ContentsEntry.new('test')
            end
        end
    end

    class TestCase_ContentsFileEntry < Test::Unit::TestCase
        def get_ce
            ContentsFileEntry.new('test')
        end

        def test_create
            assert_kind_of ContentsEntry, get_ce
        end

        def test_create_error
            assert_raise ArgumentError do
                ContentsFileEntry.new
            end

            assert_raise ArgumentError do
                ContentsFileEntry.new('a','b')
            end

            assert_raise TypeError do
                ContentsFileEntry.new(1)
            end
        end

        def test_respond_to
            ce = get_ce
            assert_respond_to ce, :location_key
        end

        def test_name
            ce = get_ce
            assert_equal 'test', ce.location_key.parse_value
        end
    end

    class TestCase_ContentsDirEntry < Test::Unit::TestCase
        def get_ce
            ContentsDirEntry.new('test')
        end

        def test_create
            assert_kind_of ContentsEntry, get_ce
        end

        def test_create_error
            assert_raise ArgumentError do
                ContentsDirEntry.new
            end

            assert_raise ArgumentError do
                ContentsDirEntry.new('a','b')
            end

            assert_raise TypeError do
                ContentsDirEntry.new(1)
            end
        end

        def test_respond_to
            ce = get_ce
            assert_respond_to ce, :location_key
        end

        def test_name
            ce = get_ce
            assert_equal 'test', ce.location_key.parse_value
        end
    end

    class TestCase_ContentsOtherEntry < Test::Unit::TestCase
        def get_ce
            ContentsOtherEntry.new('test')
        end

        def test_create
            assert_kind_of ContentsEntry, get_ce
        end

        def test_create_error
            assert_raise ArgumentError do
                ContentsOtherEntry.new
            end

            assert_raise ArgumentError do
                ContentsOtherEntry.new('a','b')
            end

            assert_raise TypeError do
                ContentsOtherEntry.new(1)
            end
        end

        def test_respond_to
            ce = get_ce
            assert_respond_to ce, :location_key
        end

        def test_name
            ce = get_ce
            assert_equal 'test', ce.location_key.parse_value
        end
    end

    class TestCase_ContentsSymEntry < Test::Unit::TestCase
        def get_ce
            ContentsSymEntry.new('test_name', 'test_target')
        end

        def test_create
            assert_kind_of ContentsEntry, get_ce
        end

        def test_create_error
            assert_raise ArgumentError do
                ContentsSymEntry.new
            end

            assert_raise ArgumentError do
                ContentsSymEntry.new('a')
            end

            assert_raise ArgumentError do
                ContentsSymEntry.new('a','b','c')
            end

            assert_raise TypeError do
                ContentsSymEntry.new('a',1)
            end

            assert_raise TypeError do
                ContentsSymEntry.new(1,'b')
            end
        end

        def test_respond_to
            ce = get_ce
            assert_respond_to ce, :location_key
            assert_respond_to ce, :target_key
        end

        def test_name
            ce = get_ce
            assert_equal 'test_name', ce.location_key.parse_value
        end

        def test_target
            ce = get_ce
            assert_equal 'test_target', ce.target_key.parse_value
        end
    end
    class TestCase_Contents < Test::Unit::TestCase
        def get_cfe
            ContentsFileEntry.new('test')
        end

        def get_cse
            ContentsSymEntry.new('test_name', 'test_target')
        end

        def get_c
            c = Contents.new
        end

        def test_create
            get_c
        end

        def test_responds_to
            c = get_c
            [:add, :entries, :each].each {|sym| assert_respond_to c, sym}
        end

        def test_add
            assert_nothing_raised do
                get_c().add(get_cfe)
            end
        end

        def test_entries
            c = get_c

            assert_equal true, c.entries.empty?

            cfe = get_cfe
            cse = get_cse
            c.add(cfe)

            assert_equal 1, c.entries.length
            assert_equal cfe.location_key.parse_value, c.entries.first.location_key.parse_value

            c.add(cse)

            assert_equal 2, c.entries.length
            assert_equal cfe.location_key.parse_value, c.entries.first.location_key.parse_value
            assert_equal cse.location_key.parse_value, c.entries.last.location_key.parse_value

        end
    end
end