1require_relative 'test_optparse'
2
3module TestOptionParser::NoArg
4  class Def1 < TestOptionParser
5    include NoArg
6    def setup
7      super
8      @opt.def_option("-x") {|x| @flag = x}
9      @opt.def_option("--option") {|x| @flag = x}
10    end
11  end
12  class Def2 < TestOptionParser
13    include NoArg
14    def setup
15      super
16      @opt.def_option("-x", "--option") {|x| @flag = x}
17    end
18  end
19
20  def test_short
21    assert_raise(OptionParser::InvalidOption) {@opt.parse!(%w"-xq")}
22    assert_equal(%w"", no_error {@opt.parse!(%w"-x")})
23    assert_equal(true, @flag)
24    @flag = nil
25    assert_equal(%w"foo", no_error {@opt.parse!(%w"-x foo")})
26    assert_equal(true, @flag)
27  end
28
29  def test_abbrev
30    assert_raise(OptionParser::InvalidOption) {@opt.parse!(%w"-oq")}
31    assert_equal(%w"", no_error {@opt.parse!(%w"-o")})
32    assert_equal(true, @flag)
33    @flag = nil
34    assert_raise(OptionParser::InvalidOption) {@opt.parse!(%w"-O")}
35    assert_nil(@flag)
36    @flag = nil
37    assert_equal(%w"foo", no_error {@opt.parse!(%w"-o foo")})
38    assert_equal(true, @flag)
39  end
40
41  def test_long
42    assert_raise(OptionParser::NeedlessArgument) {@opt.parse!(%w"--option=x")}
43    assert_equal(%w"", no_error {@opt.parse!(%w"--opt")})
44    assert_equal(true, @flag)
45    @flag = nil
46    assert_equal(%w"foo", no_error {@opt.parse!(%w"--opt foo")})
47    assert_equal(true, @flag)
48  end
49
50  def test_ambiguous
51    @opt.def_option("--open") {|x|}
52    assert_raise(OptionParser::AmbiguousOption) {@opt.parse!(%w"--op")}
53    assert_raise(OptionParser::AmbiguousOption) {@opt.parse!(%w"-o")}
54    assert_equal(%w"", no_error {@opt.parse!(%w"--opt")})
55    assert_equal(true, @flag)
56  end
57end
58