test/test_getopt_long.rb in getopt-1.3.7 vs test/test_getopt_long.rb in getopt-1.3.8
- old
+ new
@@ -1,264 +1,267 @@
-#####################################################################
-# tc_getopt_long.rb
-#
-# Test suite for the getopt-long package. You should run this test
-# via the 'rake test' rake task.
-#####################################################################
-require 'test/unit'
-require 'getopt/long'
-include Getopt
-
-class TC_Getopt_Long < Test::Unit::TestCase
- def setup
- @opts = nil
- end
-
- def test_version
- assert_equal('1.3.7', Long::VERSION)
- end
-
- def test_constants
- assert_not_nil(BOOLEAN)
- assert_not_nil(OPTIONAL)
- assert_not_nil(REQUIRED)
- assert_not_nil(INCREMENT)
- end
-
- def test_getopts_basic
- assert_respond_to(Long, :getopts)
- assert_nothing_raised{
- Long.getopts(["--test"],["--help"],["--foo"])
- }
- assert_nothing_raised{
- Long.getopts(["--test", "-x"],["--help", "-y"],["--foo", "-z"])
- }
- assert_nothing_raised{
- Long.getopts(
- ["--test", "-x", BOOLEAN],
- ["--help", "-y", REQUIRED],
- ["--foo", "-z", OPTIONAL],
- ["--more", "-m", INCREMENT]
- )
- }
- assert_kind_of(Hash, Long.getopts("--test"))
- end
-
- def test_getopts_using_equals
- ARGV.push("--foo=hello","-b","world")
- assert_nothing_raised{
- @opts = Long.getopts(
- ["--foo", "-f", REQUIRED],
- ["--bar", "-b", OPTIONAL]
- )
- }
- assert_equal("hello", @opts["foo"])
- assert_equal("hello", @opts["f"])
- assert_equal("world", @opts["bar"])
- assert_equal("world", @opts["b"])
- end
-
- def test_getopts_long_embedded_hyphens
- ARGV.push('--foo-bar', 'hello', '--test1-test2-test3', 'world')
- assert_nothing_raised{
- @opts = Long.getopts(
- ['--foo-bar', '-f', REQUIRED],
- ['--test1-test2-test3', '-t', REQUIRED]
- )
- }
- assert_equal('hello', @opts['foo-bar'])
- assert_equal('hello', @opts['f'])
- assert_equal('world', @opts['test1-test2-test3'])
- assert_equal('world', @opts['t'])
- end
-
- def test_getopts_long_embedded_hyphens_using_equals_sign
- ARGV.push('--foo-bar=hello', '--test1-test2-test3=world')
- assert_nothing_raised{
- @opts = Long.getopts(
- ['--foo-bar', '-f', REQUIRED],
- ['--test1-test2-test3', '-t', REQUIRED]
- )
- }
- assert_equal('hello', @opts['foo-bar'])
- assert_equal('hello', @opts['f'])
- assert_equal('world', @opts['test1-test2-test3'])
- assert_equal('world', @opts['t'])
- end
-
- def test_getopts_short_switch_squished
- ARGV.push("-f", "hello", "-bworld")
- assert_nothing_raised{
- @opts = Long.getopts(
- ["--foo", "-f", REQUIRED],
- ["--bar", "-b", OPTIONAL]
- )
- }
- assert_equal("hello", @opts["f"])
- assert_equal("world", @opts["b"])
- end
-
- def test_getopts_increment_type
- ARGV.push("-m","-m")
- assert_nothing_raised{
- @opts = Long.getopts(["--more", "-m", INCREMENT])
- }
- assert_equal(2, @opts["more"])
- assert_equal(2, @opts["m"])
- end
-
- def test_switches_exist
- ARGV.push("--verbose","--test","--foo")
- assert_nothing_raised{ @opts = Long.getopts("--verbose --test --foo") }
- assert_equal(true, @opts.has_key?("verbose"))
- assert_equal(true, @opts.has_key?("test"))
- assert_equal(true, @opts.has_key?("foo"))
- end
-
- def test_short_switch_synonyms
- ARGV.push("--verbose","--test","--foo")
- assert_nothing_raised{ @opts = Long.getopts("--verbose --test --foo") }
- assert_equal(true, @opts.has_key?("v"))
- assert_equal(true, @opts.has_key?("t"))
- assert_equal(true, @opts.has_key?("f"))
- end
-
- def test_short_switch_synonyms_with_explicit_types
- ARGV.push("--verbose", "--test", "hello", "--foo")
- assert_nothing_raised{
- @opts = Long.getopts(
- ["--verbose", BOOLEAN],
- ["--test", REQUIRED],
- ["--foo", BOOLEAN]
- )
- }
- assert(@opts.has_key?("v"))
- assert(@opts.has_key?("t"))
- assert(@opts.has_key?("f"))
- end
-
- def test_switches_with_required_arguments
- ARGV.push("--foo","1","--bar","hello")
- assert_nothing_raised{
- @opts = Long.getopts(
- ["--foo", "-f", REQUIRED],
- ["--bar", "-b", REQUIRED]
- )
- }
- assert_equal({"foo"=>"1", "bar"=>"hello", "f"=>"1", "b"=>"hello"}, @opts)
- end
-
- def test_compressed_switches
- ARGV.push("-fb")
- assert_nothing_raised{
- @opts = Long.getopts(
- ["--foo", "-f", BOOLEAN],
- ["--bar", "-b", BOOLEAN]
- )
- }
- assert_equal({"foo"=>true, "f"=>true, "b"=>true, "bar"=>true}, @opts)
- end
-
- def test_compress_switches_with_required_arg
- ARGV.push("-xf", "foo.txt")
- assert_nothing_raised{
- @opts = Long.getopts(
- ["--expand", "-x", BOOLEAN],
- ["--file", "-f", REQUIRED]
- )
- }
- assert_equal(
- {"x"=>true, "expand"=>true, "f"=>"foo.txt", "file"=>"foo.txt"}, @opts
- )
- end
-
- def test_compress_switches_with_compressed_required_arg
- ARGV.push("-xffoo.txt")
- assert_nothing_raised{
- @opts = Long.getopts(
- ["--expand", "-x", BOOLEAN],
- ["--file", "-f", REQUIRED]
- )
- }
- assert_equal(
- {"x"=>true, "expand"=>true, "f"=>"foo.txt", "file"=>"foo.txt"}, @opts
- )
- end
-
- def test_compress_switches_with_optional_arg_not_defined
- ARGV.push("-xf")
- assert_nothing_raised{
- @opts = Long.getopts(
- ["--expand", "-x", BOOLEAN],
- ["--file", "-f", OPTIONAL]
- )
- }
- assert_equal(
- {"x"=>true, "expand"=>true, "f"=>nil, "file"=>nil}, @opts
- )
- end
-
- def test_compress_switches_with_optional_arg
- ARGV.push("-xf", "boo.txt")
- assert_nothing_raised{
- @opts = Long.getopts(
- ["--expand", "-x", BOOLEAN],
- ["--file", "-f", OPTIONAL]
- )
- }
- assert_equal(
- {"x"=>true, "expand"=>true, "f"=>"boo.txt", "file"=>"boo.txt"}, @opts
- )
- end
-
- def test_compress_switches_with_compressed_optional_arg
- ARGV.push("-xfboo.txt")
- assert_nothing_raised{
- @opts = Long.getopts(
- ["--expand", "-x", BOOLEAN],
- ["--file", "-f", OPTIONAL]
- )
- }
- assert_equal(
- {"x"=>true, "expand"=>true, "f"=>"boo.txt", "file"=>"boo.txt"}, @opts
- )
- end
-
- def test_compressed_short_and_long_mixed
- ARGV.push("-xb", "--file", "boo.txt", "-v")
- assert_nothing_raised{
- @opts = Long.getopts(
- ["--expand", "-x", BOOLEAN],
- ["--verbose", "-v", BOOLEAN],
- ["--file", "-f", REQUIRED],
- ["--bar", "-b", OPTIONAL]
- )
- assert_equal(
- { "x"=>true, "expand"=>true,
- "v"=>true, "verbose"=>true,
- "f"=>"boo.txt", "file"=>"boo.txt",
- "b"=>nil, "bar"=>nil
- },
- @opts
- )
- }
- end
-
- def test_multiple_similar_long_switches_with_no_short_switches
- ARGV.push('--to','1','--too','2','--tooo','3')
- assert_nothing_raised{
- @opts = Long.getopts(
- ["--to", REQUIRED],
- ["--too", REQUIRED],
- ["--tooo", REQUIRED]
- )
- }
- assert_equal('1', @opts['to'])
- assert_equal('2', @opts['too'])
- assert_equal('3', @opts['tooo'])
- end
-
- def teardown
- @opts = nil
- ARGV.clear
- end
-end
+#####################################################################
+# tc_getopt_long.rb
+#
+# Test suite for the getopt-long package. You should run this test
+# via the 'rake test' rake task.
+#####################################################################
+require 'rubygems'
+gem 'test-unit'
+
+require 'test/unit'
+require 'getopt/long'
+include Getopt
+
+class TC_Getopt_Long < Test::Unit::TestCase
+ def setup
+ @opts = nil
+ end
+
+ def test_version
+ assert_equal('1.3.7', Long::VERSION)
+ end
+
+ def test_constants
+ assert_not_nil(BOOLEAN)
+ assert_not_nil(OPTIONAL)
+ assert_not_nil(REQUIRED)
+ assert_not_nil(INCREMENT)
+ end
+
+ def test_getopts_basic
+ assert_respond_to(Long, :getopts)
+ assert_nothing_raised{
+ Long.getopts(["--test"],["--help"],["--foo"])
+ }
+ assert_nothing_raised{
+ Long.getopts(["--test", "-x"],["--help", "-y"],["--foo", "-z"])
+ }
+ assert_nothing_raised{
+ Long.getopts(
+ ["--test", "-x", BOOLEAN],
+ ["--help", "-y", REQUIRED],
+ ["--foo", "-z", OPTIONAL],
+ ["--more", "-m", INCREMENT]
+ )
+ }
+ assert_kind_of(Hash, Long.getopts("--test"))
+ end
+
+ def test_getopts_using_equals
+ ARGV.push("--foo=hello","-b","world")
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ["--foo", "-f", REQUIRED],
+ ["--bar", "-b", OPTIONAL]
+ )
+ }
+ assert_equal("hello", @opts["foo"])
+ assert_equal("hello", @opts["f"])
+ assert_equal("world", @opts["bar"])
+ assert_equal("world", @opts["b"])
+ end
+
+ def test_getopts_long_embedded_hyphens
+ ARGV.push('--foo-bar', 'hello', '--test1-test2-test3', 'world')
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ['--foo-bar', '-f', REQUIRED],
+ ['--test1-test2-test3', '-t', REQUIRED]
+ )
+ }
+ assert_equal('hello', @opts['foo-bar'])
+ assert_equal('hello', @opts['f'])
+ assert_equal('world', @opts['test1-test2-test3'])
+ assert_equal('world', @opts['t'])
+ end
+
+ def test_getopts_long_embedded_hyphens_using_equals_sign
+ ARGV.push('--foo-bar=hello', '--test1-test2-test3=world')
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ['--foo-bar', '-f', REQUIRED],
+ ['--test1-test2-test3', '-t', REQUIRED]
+ )
+ }
+ assert_equal('hello', @opts['foo-bar'])
+ assert_equal('hello', @opts['f'])
+ assert_equal('world', @opts['test1-test2-test3'])
+ assert_equal('world', @opts['t'])
+ end
+
+ def test_getopts_short_switch_squished
+ ARGV.push("-f", "hello", "-bworld")
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ["--foo", "-f", REQUIRED],
+ ["--bar", "-b", OPTIONAL]
+ )
+ }
+ assert_equal("hello", @opts["f"])
+ assert_equal("world", @opts["b"])
+ end
+
+ def test_getopts_increment_type
+ ARGV.push("-m","-m")
+ assert_nothing_raised{
+ @opts = Long.getopts(["--more", "-m", INCREMENT])
+ }
+ assert_equal(2, @opts["more"])
+ assert_equal(2, @opts["m"])
+ end
+
+ def test_switches_exist
+ ARGV.push("--verbose","--test","--foo")
+ assert_nothing_raised{ @opts = Long.getopts("--verbose --test --foo") }
+ assert_equal(true, @opts.has_key?("verbose"))
+ assert_equal(true, @opts.has_key?("test"))
+ assert_equal(true, @opts.has_key?("foo"))
+ end
+
+ def test_short_switch_synonyms
+ ARGV.push("--verbose","--test","--foo")
+ assert_nothing_raised{ @opts = Long.getopts("--verbose --test --foo") }
+ assert_equal(true, @opts.has_key?("v"))
+ assert_equal(true, @opts.has_key?("t"))
+ assert_equal(true, @opts.has_key?("f"))
+ end
+
+ def test_short_switch_synonyms_with_explicit_types
+ ARGV.push("--verbose", "--test", "hello", "--foo")
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ["--verbose", BOOLEAN],
+ ["--test", REQUIRED],
+ ["--foo", BOOLEAN]
+ )
+ }
+ assert(@opts.has_key?("v"))
+ assert(@opts.has_key?("t"))
+ assert(@opts.has_key?("f"))
+ end
+
+ def test_switches_with_required_arguments
+ ARGV.push("--foo","1","--bar","hello")
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ["--foo", "-f", REQUIRED],
+ ["--bar", "-b", REQUIRED]
+ )
+ }
+ assert_equal({"foo"=>"1", "bar"=>"hello", "f"=>"1", "b"=>"hello"}, @opts)
+ end
+
+ def test_compressed_switches
+ ARGV.push("-fb")
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ["--foo", "-f", BOOLEAN],
+ ["--bar", "-b", BOOLEAN]
+ )
+ }
+ assert_equal({"foo"=>true, "f"=>true, "b"=>true, "bar"=>true}, @opts)
+ end
+
+ def test_compress_switches_with_required_arg
+ ARGV.push("-xf", "foo.txt")
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ["--expand", "-x", BOOLEAN],
+ ["--file", "-f", REQUIRED]
+ )
+ }
+ assert_equal(
+ {"x"=>true, "expand"=>true, "f"=>"foo.txt", "file"=>"foo.txt"}, @opts
+ )
+ end
+
+ def test_compress_switches_with_compressed_required_arg
+ ARGV.push("-xffoo.txt")
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ["--expand", "-x", BOOLEAN],
+ ["--file", "-f", REQUIRED]
+ )
+ }
+ assert_equal(
+ {"x"=>true, "expand"=>true, "f"=>"foo.txt", "file"=>"foo.txt"}, @opts
+ )
+ end
+
+ def test_compress_switches_with_optional_arg_not_defined
+ ARGV.push("-xf")
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ["--expand", "-x", BOOLEAN],
+ ["--file", "-f", OPTIONAL]
+ )
+ }
+ assert_equal(
+ {"x"=>true, "expand"=>true, "f"=>nil, "file"=>nil}, @opts
+ )
+ end
+
+ def test_compress_switches_with_optional_arg
+ ARGV.push("-xf", "boo.txt")
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ["--expand", "-x", BOOLEAN],
+ ["--file", "-f", OPTIONAL]
+ )
+ }
+ assert_equal(
+ {"x"=>true, "expand"=>true, "f"=>"boo.txt", "file"=>"boo.txt"}, @opts
+ )
+ end
+
+ def test_compress_switches_with_compressed_optional_arg
+ ARGV.push("-xfboo.txt")
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ["--expand", "-x", BOOLEAN],
+ ["--file", "-f", OPTIONAL]
+ )
+ }
+ assert_equal(
+ {"x"=>true, "expand"=>true, "f"=>"boo.txt", "file"=>"boo.txt"}, @opts
+ )
+ end
+
+ def test_compressed_short_and_long_mixed
+ ARGV.push("-xb", "--file", "boo.txt", "-v")
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ["--expand", "-x", BOOLEAN],
+ ["--verbose", "-v", BOOLEAN],
+ ["--file", "-f", REQUIRED],
+ ["--bar", "-b", OPTIONAL]
+ )
+ assert_equal(
+ { "x"=>true, "expand"=>true,
+ "v"=>true, "verbose"=>true,
+ "f"=>"boo.txt", "file"=>"boo.txt",
+ "b"=>nil, "bar"=>nil
+ },
+ @opts
+ )
+ }
+ end
+
+ def test_multiple_similar_long_switches_with_no_short_switches
+ ARGV.push('--to','1','--too','2','--tooo','3')
+ assert_nothing_raised{
+ @opts = Long.getopts(
+ ["--to", REQUIRED],
+ ["--too", REQUIRED],
+ ["--tooo", REQUIRED]
+ )
+ }
+ assert_equal('1', @opts['to'])
+ assert_equal('2', @opts['too'])
+ assert_equal('3', @opts['tooo'])
+ end
+
+ def teardown
+ @opts = nil
+ ARGV.clear
+ end
+end