diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/error_test.rb | 15 | ||||
-rw-r--r-- | test/types_test.rb | 26 |
2 files changed, 37 insertions, 4 deletions
diff --git a/test/error_test.rb b/test/error_test.rb index d9c71ab..8ea9069 100644 --- a/test/error_test.rb +++ b/test/error_test.rb @@ -63,3 +63,18 @@ describe Slop::MissingRequiredOption do opts.parse [] end end + +describe Slop::InvalidOptionValue do + it "raises when an option has an invalid value" do + opts = Slop::Options.new(validate_types: true) + opts.integer "-n", "--number", default: 10 + assert_raises(Slop::InvalidOptionValue) { opts.parse %w(-n foo) } + end + + it "does not raise when errors are suppressed" do + opts = Slop::Options.new(suppress_errors: true) + opts.integer "-n", "--number", default: 10, validate_type: true + r = opts.parse %w(-n foo) + assert_equal(10, r[:n]) + end +end diff --git a/test/types_test.rb b/test/types_test.rb index ea2ba8d..c6f0864 100644 --- a/test/types_test.rb +++ b/test/types_test.rb @@ -31,10 +31,10 @@ end describe Slop::BoolOption do before do @options = Slop::Options.new - @verbose = @options.bool "--verbose" + @verbose = @options.bool "--verbose", validate_type: true @quiet = @options.bool "--quiet" @inversed = @options.bool "--inversed", default: true - @explicit = @options.bool "--explicit" + @explicit = @options.bool "--explicit", validate_type: true @bloc = @options.bool("--bloc"){|val| (@bloc_val ||= []) << val} @result = @options.parse %w(--verbose --no-inversed --bloc --no-bloc @@ -60,13 +60,19 @@ describe Slop::BoolOption do it "returns false when explicitly false" do assert_equal false, @result[:explicit] end + + it "raises with invalid types" do + assert_raises(Slop::InvalidOptionValue) do + @result.parser.parse %w(--verbose foo) + end + end end describe Slop::IntegerOption do before do @options = Slop::Options.new @age = @options.integer "--age" - @minus = @options.integer "--minus" + @minus = @options.integer "--minus", validate_type: true @plus = @options.integer "--plus" @result = @options.parse %w(--age 20 --minus -10 --plus +30) end @@ -81,6 +87,12 @@ describe Slop::IntegerOption do @result.parser.parse %w(--age hello) assert_nil @result[:age] end + + it "raises with invalid types" do + assert_raises(Slop::InvalidOptionValue) do + @result.parser.parse %w(--minus foo) + end + end end describe Slop::FloatOption do @@ -88,7 +100,7 @@ describe Slop::FloatOption do @options = Slop::Options.new @apr = @options.float "--apr" @apr_value = 2.9 - @minus = @options.float "--minus" + @minus = @options.float "--minus", validate_type: true @plus = @options.float "--plus" @scientific_notation = @options.float "--scientific-notation" @scientific_notation_value = 4e21 @@ -125,6 +137,12 @@ describe Slop::FloatOption do @result.parser.parse %w(--apr hello) assert_nil @result[:apr] end + + it "raises with invalid types" do + assert_raises(Slop::InvalidOptionValue) do + @result.parser.parse %w(--minus foo) + end + end end describe Slop::ArrayOption do |