| 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
 | require 'testing_env'
require 'options'
class OptionTests < Homebrew::TestCase
  def setup
    @option = Option.new("foo")
  end
  def test_to_s
    assert_equal "--foo", @option.to_s
  end
  def test_equality
    foo = Option.new("foo")
    bar = Option.new("bar")
    assert_equal foo, @option
    refute_equal bar, @option
    assert_eql @option, foo
    refute_eql @option, bar
  end
  def test_description
    assert_empty @option.description
    assert_equal "foo", Option.new("foo", "foo").description
  end
end
class DeprecatedOptionTests < Homebrew::TestCase
  def setup
    @deprecated_option = DeprecatedOption.new("foo", "bar")
  end
  def test_old
    assert_equal "foo", @deprecated_option.old
    assert_equal "--foo", @deprecated_option.old_flag
  end
  def test_current
    assert_equal "bar", @deprecated_option.current
    assert_equal "--bar", @deprecated_option.current_flag
  end
  def test_equality
    foobar = DeprecatedOption.new("foo", "bar")
    boofar = DeprecatedOption.new("boo", "far")
    assert_equal foobar, @deprecated_option
    refute_equal boofar, @deprecated_option
    assert_eql @deprecated_option, foobar
    refute_eql @deprecated_option, boofar
  end
end
class OptionsTests < Homebrew::TestCase
  def setup
    @options = Options.new
  end
  def test_no_duplicate_options
    @options << Option.new("foo")
    @options << Option.new("foo")
    assert_includes @options, "--foo"
    assert_equal 1, @options.count
  end
  def test_preserves_existing_member_when_pushing_duplicate
    a = Option.new("foo", "bar")
    b = Option.new("foo", "qux")
    @options << a << b
    assert_equal 1, @options.count
    assert_same a, @options.first
    assert_equal a.description, @options.first.description
  end
  def test_include
    @options << Option.new("foo")
    assert_includes @options, "--foo"
    assert_includes @options, "foo"
    assert_includes @options, Option.new("foo")
  end
  def test_union_returns_options
    assert_instance_of Options, @options + Options.new
  end
  def test_difference_returns_options
    assert_instance_of Options, @options - Options.new
  end
  def test_shovel_returns_self
    assert_same @options, @options << Option.new("foo")
  end
  def test_as_flags
    @options << Option.new("foo")
    assert_equal %w{--foo}, @options.as_flags
  end
  def test_to_a
    option = Option.new("foo")
    @options << option
    assert_equal [option], @options.to_a
  end
  def test_to_ary
    option = Option.new("foo")
    @options << option
    assert_equal [option], @options.to_ary
  end
  def test_intersection
    foo, bar, baz = %w{foo bar baz}.map { |o| Option.new(o) }
    options = Options.new << foo << bar
    @options << foo << baz
    assert_equal [foo], (@options & options).to_a
  end
  def test_set_union
    foo, bar, baz = %w{foo bar baz}.map { |o| Option.new(o) }
    options = Options.new << foo << bar
    @options << foo << baz
    assert_equal [foo, bar, baz].sort, (@options | options).sort
  end
  def test_create_with_array
    array = %w{--foo --bar}
    option1 = Option.new("foo")
    option2 = Option.new("bar")
    assert_equal [option1, option2].sort, Options.create(array).sort
  end
end
 |