1require 'rubygems/test_case'
2require 'rubygems/user_interaction'
3require 'timeout'
4
5class TestGemSilentUI < Gem::TestCase
6
7  def setup
8    super
9    @sui = Gem::SilentUI.new
10  end
11
12  def test_ask
13    value = nil
14    out, err = capture_io do
15      use_ui @sui do
16        value = @sui.ask 'Problem?'
17      end
18    end
19
20    assert_empty out, 'No output'
21    assert_empty err, 'No output'
22
23    assert_nil value, 'No value'
24  end
25
26  def test_ask_for_password
27    value = nil
28    out, err = capture_io do
29      use_ui @sui do
30        value = @sui.ask_for_password 'Problem?'
31      end
32    end
33
34    assert_empty out, 'No output'
35    assert_empty err, 'No output'
36
37    assert_nil value, 'No value'
38  end
39
40  def test_ask_yes_no
41    value = nil
42    out, err = capture_io do
43      use_ui @sui do
44        assert_raises(Gem::OperationNotSupportedError) do
45          @sui.ask_yes_no 'Problem?'
46        end
47      end
48    end
49
50    assert_empty out, 'No output'
51    assert_empty err, 'No output'
52
53    out, err = capture_io do
54      use_ui @sui do
55        value = @sui.ask_yes_no 'Problem?', true
56      end
57    end
58
59    assert_empty out, 'No output'
60    assert_empty err, 'No output'
61
62    assert value, 'Value is true'
63
64    out, err = capture_io do
65      use_ui @sui do
66        value = @sui.ask_yes_no 'Problem?', false
67      end
68    end
69
70    assert_empty out, 'No output'
71    assert_empty err, 'No output'
72
73    assert_equal value, false, 'Value is false'
74  end
75
76  def test_choose_from_list
77    value = nil
78    out, err = capture_io do
79      use_ui @sui do
80        value = @sui.choose_from_list 'Problem?', %w[yes no]
81      end
82    end
83
84    assert_empty out, 'No output'
85    assert_empty err, 'No output'
86
87    assert_equal [nil, nil], value, 'Value is nil!'
88  end
89
90  def test_progress_reporter
91    out, err = capture_io do
92      use_ui @sui do
93        @sui.progress_reporter 10, 'hi'
94      end
95    end
96
97    assert_empty out, 'No output'
98    assert_empty err, 'No output'
99  end
100
101  def test_download_reporter
102    out, err = capture_io do
103      use_ui @sui do
104        @sui.download_reporter.fetch 'a.gem', 1024
105      end
106    end
107
108    assert_empty out, 'No output'
109    assert_empty err, 'No output'
110  end
111end
112