1require 'rubygems/source_list'
2require 'rubygems/test_case'
3
4class TestGemSourceList < Gem::TestCase
5  def setup
6    super
7
8    @uri = "http://example"
9    @source = Gem::Source.new(@uri)
10
11    @sl = Gem::SourceList.new
12    @sl << @source
13  end
14
15  def test_self_from
16    sl = Gem::SourceList.from [@uri]
17
18    assert_equal [Gem::Source.new(@uri)], sl.sources
19  end
20
21  def test_append
22    sl = Gem::SourceList.new
23    source = (sl << @uri)
24
25    assert_kind_of Gem::Source, source
26
27    assert_kind_of URI, source.uri
28    assert_equal source.uri.to_s, @uri
29
30    assert_equal [source], sl.sources
31  end
32
33  def test_replace
34    sl = Gem::SourceList.new
35    sl.replace [@uri]
36
37    assert_equal [@source], sl.sources
38  end
39
40  def test_each
41    @sl.each do |x|
42      assert_equal @uri, x
43    end
44  end
45
46  def test_each_source
47    @sl.each_source do |x|
48      assert_equal @source, x
49    end
50  end
51
52  def test_equal_to_another_list
53    sl2 = Gem::SourceList.new
54    sl2 << Gem::Source.new(@uri)
55
56    assert @sl == sl2, "lists not equal"
57  end
58
59  def test_equal_to_array
60    assert @sl == [@uri], "lists not equal"
61  end
62
63  def test_to_a
64    assert_equal @sl.to_a, [@uri]
65  end
66
67  def test_include_eh
68    assert @sl.include?(@uri), "string comparison not working"
69    assert @sl.include?(URI.parse(@uri)), "uri comparison not working"
70  end
71
72  def test_include_matches_a_source
73    assert @sl.include?(@source), "source comparison not working"
74    assert @sl.include?(Gem::Source.new(@uri)), "source comparison not working"
75  end
76
77  def test_delete
78    @sl.delete @uri
79    assert_equal @sl.sources, []
80  end
81
82  def test_delete_a_source
83    @sl.delete Gem::Source.new(@uri)
84    assert_equal @sl.sources, []
85  end
86
87end
88