vendor/highline/test/tc_highline.rb in radiant-0.7.2 vs vendor/highline/test/tc_highline.rb in radiant-0.8.0
- old
+ new
@@ -42,10 +42,18 @@
@input.rewind
assert_equal(true, @terminal.agree("Yes or no? ", :getc))
end
+ def test_agree_with_block
+ @input << "\n\n"
+ @input.rewind
+
+ assert_equal(true, @terminal.agree("Yes or no? ") { |q| q.default = "y" })
+ assert_equal(false, @terminal.agree("Yes or no? ") { |q| q.default = "n" })
+ end
+
def test_ask
name = "James Edward Gray II"
@input << name << "\n"
@input.rewind
@@ -130,22 +138,43 @@
q.character = true
end
assert_equal(2, answer)
assert_equal("Select an option (1, 2 or 3): *\n", @output.string)
end
+
+ def test_backspace_does_not_enter_prompt
+ @input << "\b\b"
+ @input.rewind
+ answer = @terminal.ask("Please enter your password: ") do |q|
+ q.echo = "*"
+ end
+ assert_equal("", answer)
+ assert_equal("Please enter your password: \n",@output.string)
+ end
+ def test_readline_on_non_echo_question_has_prompt
+ @input << "you can't see me"
+ @input.rewind
+ answer = @terminal.ask("Please enter some hidden text: ") do |q|
+ q.readline = true
+ q.echo = "*"
+ end
+ assert_equal("you can't see me", answer)
+ assert_equal("Please enter some hidden text: ****************\n",@output.string)
+ end
+
def test_character_reading
# WARNING: This method does NOT cover Unix and Windows savvy testing!
@input << "12345"
@input.rewind
answer = @terminal.ask("Enter a single digit: ", Integer) do |q|
q.character = :getc
end
assert_equal(1, answer)
end
-
+
def test_color
@terminal.say("This should be <%= BLUE %>blue<%= CLEAR %>!")
assert_equal("This should be \e[34mblue\e[0m!\n", @output.string)
@output.truncate(@output.rewind)
@@ -639,18 +668,18 @@
answer = @terminal.ask("Favorite animal? ", Symbol)
assert_instance_of(Symbol, answer)
assert_equal(animal, answer)
@input.truncate(@input.rewind)
- @input << "6/16/76\n"
+ @input << "16th June 1976\n"
@input.rewind
answer = @terminal.ask("Enter your birthday.", Date)
assert_instance_of(Date, answer)
assert_equal(16, answer.day)
assert_equal(6, answer.month)
- assert_equal(76, answer.year)
+ assert_equal(1976, answer.year)
@input.truncate(@input.rewind)
pattern = "^yes|no$"
@input << pattern << "\n"
@input.rewind
@@ -767,9 +796,23 @@
@output.truncate(@output.rewind)
@terminal.say("-=" * 50)
assert_equal(("-=" * 40 + "\n") + ("-=" * 10 + "\n"), @output.string)
+ end
+
+ def test_track_eof
+ assert_raise(EOFError) { @terminal.ask("Any input left? ") }
+
+ # turn EOF tracking
+ old_setting = HighLine.track_eof?
+ assert_nothing_raised(Exception) { HighLine.track_eof = false }
+ begin
+ @terminal.ask("And now? ") # this will still blow up, nothing available
+ rescue
+ assert_not_equal(EOFError, $!.class) # but HighLine's safe guards are off
+ end
+ HighLine.track_eof = old_setting
end
def test_version
assert_not_nil(HighLine::VERSION)
assert_instance_of(String, HighLine::VERSION)