highline 1.7.10 → 2.0.0.pre.develop.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.simplecov +5 -0
- data/.travis.yml +11 -6
- data/Changelog.md +112 -20
- data/Gemfile +8 -7
- data/README.rdoc +3 -0
- data/Rakefile +7 -2
- data/appveyor.yml +19 -0
- data/examples/asking_for_arrays.rb +3 -0
- data/examples/basic_usage.rb +3 -0
- data/examples/get_character.rb +3 -0
- data/examples/limit.rb +3 -0
- data/examples/menus.rb +3 -0
- data/examples/overwrite.rb +3 -0
- data/examples/password.rb +3 -0
- data/examples/repeat_entry.rb +4 -1
- data/lib/highline.rb +182 -704
- data/lib/highline/builtin_styles.rb +109 -0
- data/lib/highline/color_scheme.rb +4 -1
- data/lib/highline/compatibility.rb +2 -0
- data/lib/highline/custom_errors.rb +19 -0
- data/lib/highline/import.rb +4 -2
- data/lib/highline/list.rb +93 -0
- data/lib/highline/list_renderer.rb +232 -0
- data/lib/highline/menu.rb +20 -20
- data/lib/highline/paginator.rb +43 -0
- data/lib/highline/question.rb +157 -97
- data/lib/highline/question/answer_converter.rb +84 -0
- data/lib/highline/question_asker.rb +147 -0
- data/lib/highline/simulate.rb +5 -1
- data/lib/highline/statement.rb +58 -0
- data/lib/highline/string.rb +34 -0
- data/lib/highline/string_extensions.rb +3 -28
- data/lib/highline/style.rb +18 -8
- data/lib/highline/template_renderer.rb +38 -0
- data/lib/highline/terminal.rb +78 -0
- data/lib/highline/terminal/io_console.rb +98 -0
- data/lib/highline/terminal/ncurses.rb +38 -0
- data/lib/highline/terminal/unix_stty.rb +94 -0
- data/lib/highline/version.rb +3 -1
- data/lib/highline/wrapper.rb +43 -0
- data/test/acceptance/acceptance.rb +62 -0
- data/test/acceptance/acceptance_test.rb +69 -0
- data/test/acceptance/at_color_output_using_erb_templates.rb +17 -0
- data/test/acceptance/at_echo_false.rb +23 -0
- data/test/acceptance/at_readline.rb +37 -0
- data/test/io_console_compatible.rb +37 -0
- data/test/string_methods.rb +3 -0
- data/test/test_answer_converter.rb +26 -0
- data/test/{tc_color_scheme.rb → test_color_scheme.rb} +7 -9
- data/test/test_helper.rb +26 -0
- data/test/{tc_highline.rb → test_highline.rb} +193 -136
- data/test/{tc_import.rb → test_import.rb} +5 -2
- data/test/test_list.rb +60 -0
- data/test/{tc_menu.rb → test_menu.rb} +6 -3
- data/test/test_paginator.rb +73 -0
- data/test/test_question_asker.rb +20 -0
- data/test/test_simulator.rb +24 -0
- data/test/test_string_extension.rb +72 -0
- data/test/{tc_string_highline.rb → test_string_highline.rb} +7 -3
- data/test/{tc_style.rb → test_style.rb} +70 -35
- data/test/test_wrapper.rb +188 -0
- metadata +57 -22
- data/lib/highline/system_extensions.rb +0 -254
- data/test/tc_simulator.rb +0 -33
- data/test/tc_string_extension.rb +0 -33
@@ -1,3 +1,6 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
|
1
4
|
# tc_import.rb
|
2
5
|
#
|
3
6
|
# Created by James Edward Gray II on 2005-04-26.
|
@@ -5,12 +8,12 @@
|
|
5
8
|
#
|
6
9
|
# This is Free Software. See LICENSE and COPYING for details.
|
7
10
|
|
8
|
-
require "
|
11
|
+
require "test_helper"
|
9
12
|
|
10
13
|
require "highline/import"
|
11
14
|
require "stringio"
|
12
15
|
|
13
|
-
class TestImport < Test
|
16
|
+
class TestImport < Minitest::Test
|
14
17
|
def test_import
|
15
18
|
assert_respond_to(self, :agree)
|
16
19
|
assert_respond_to(self, :ask)
|
data/test/test_list.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
|
4
|
+
require "test_helper"
|
5
|
+
|
6
|
+
require "highline/list"
|
7
|
+
|
8
|
+
class TestHighLineList < Minitest::Test
|
9
|
+
def setup
|
10
|
+
@items = [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" ]
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_in_2_cols
|
14
|
+
list_in_two_cols =
|
15
|
+
[ [ "a", "b" ],
|
16
|
+
[ "c", "d" ],
|
17
|
+
[ "e", "f" ],
|
18
|
+
[ "g", "h" ],
|
19
|
+
[ "i", "j" ] ]
|
20
|
+
|
21
|
+
highline_list = HighLine::List.new(@items, cols: 2)
|
22
|
+
|
23
|
+
assert_equal list_in_two_cols, highline_list.list
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_in_2_cols_col_down
|
27
|
+
col_down_list =
|
28
|
+
[ [ "a", "f"],
|
29
|
+
[ "b", "g"],
|
30
|
+
[ "c", "h"],
|
31
|
+
[ "d", "i"],
|
32
|
+
[ "e", "j"] ]
|
33
|
+
|
34
|
+
highline_list = HighLine::List.new(@items, cols: 2, col_down: true)
|
35
|
+
|
36
|
+
assert_equal col_down_list, highline_list.list
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_in_2_cols_transposed
|
40
|
+
transposed_list =
|
41
|
+
[ [ "a", "c", "e", "g", "i" ],
|
42
|
+
[ "b", "d", "f", "h", "j" ] ]
|
43
|
+
|
44
|
+
highline_list = HighLine::List.new(@items, cols: 2, transpose: true)
|
45
|
+
|
46
|
+
assert_equal transposed_list, highline_list.list
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_in_3_cols
|
50
|
+
list_in_three_cols =
|
51
|
+
[ [ "a", "b", "c" ],
|
52
|
+
[ "d", "e", "f" ],
|
53
|
+
[ "g", "h", "i" ],
|
54
|
+
[ "j" ] ]
|
55
|
+
|
56
|
+
highline_list = HighLine::List.new(@items, cols: 3)
|
57
|
+
|
58
|
+
assert_equal list_in_three_cols, highline_list.list
|
59
|
+
end
|
60
|
+
end
|
@@ -1,4 +1,6 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
# coding: utf-8
|
3
|
+
|
2
4
|
# tc_menu.rb
|
3
5
|
#
|
4
6
|
# Created by Gregory Thomas Brown on 2005-05-10.
|
@@ -6,13 +8,14 @@
|
|
6
8
|
#
|
7
9
|
# This is Free Software. See LICENSE and COPYING for details.
|
8
10
|
|
9
|
-
require "
|
11
|
+
require "test_helper"
|
10
12
|
|
11
13
|
require "highline"
|
12
14
|
require "stringio"
|
13
15
|
|
14
|
-
class TestMenu < Test
|
16
|
+
class TestMenu < Minitest::Test
|
15
17
|
def setup
|
18
|
+
HighLine.reset
|
16
19
|
@input = StringIO.new
|
17
20
|
@output = StringIO.new
|
18
21
|
@terminal = HighLine.new(@input, @output)
|
@@ -201,7 +204,7 @@ class TestMenu < Test::Unit::TestCase
|
|
201
204
|
@output.truncate(@output.rewind)
|
202
205
|
|
203
206
|
@terminal.choose(:load, :save, :quit) do |menu|
|
204
|
-
menu.layout = '<%= list(
|
207
|
+
menu.layout = '<%= list(menu) %>File Menu: '
|
205
208
|
end
|
206
209
|
assert_equal("1. load\n2. save\n3. quit\nFile Menu: ", @output.string)
|
207
210
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
|
4
|
+
require "test_helper"
|
5
|
+
|
6
|
+
require "highline"
|
7
|
+
|
8
|
+
class TestHighLinePaginator < Minitest::Test
|
9
|
+
def setup
|
10
|
+
HighLine.reset
|
11
|
+
@input = StringIO.new
|
12
|
+
@output = StringIO.new
|
13
|
+
@terminal = HighLine.new(@input, @output)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_paging
|
17
|
+
@terminal.page_at = 22
|
18
|
+
|
19
|
+
@input << "\n\n"
|
20
|
+
@input.rewind
|
21
|
+
|
22
|
+
@terminal.say((1..50).map { |n| "This is line #{n}.\n"}.join)
|
23
|
+
assert_equal( (1..22).map { |n| "This is line #{n}.\n"}.join +
|
24
|
+
"\n-- press enter/return to continue or q to stop -- \n\n" +
|
25
|
+
(23..44).map { |n| "This is line #{n}.\n"}.join +
|
26
|
+
"\n-- press enter/return to continue or q to stop -- \n\n" +
|
27
|
+
(45..50).map { |n| "This is line #{n}.\n"}.join,
|
28
|
+
@output.string )
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_statement_lines_count_equal_to_page_at_shouldnt_paginate
|
32
|
+
@terminal.page_at = 6
|
33
|
+
|
34
|
+
@input << "\n"
|
35
|
+
@input.rewind
|
36
|
+
|
37
|
+
list = "a\nb\nc\nd\ne\nf\n"
|
38
|
+
|
39
|
+
@terminal.say(list)
|
40
|
+
assert_equal(list, @output.string)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_statement_with_one_line_bigger_than_page_at_should_paginate
|
44
|
+
@terminal.page_at = 6
|
45
|
+
|
46
|
+
@input << "\n"
|
47
|
+
@input.rewind
|
48
|
+
|
49
|
+
list = "a\nb\nc\nd\ne\nf\ng\n"
|
50
|
+
|
51
|
+
paginated =
|
52
|
+
"a\nb\nc\nd\ne\nf\n" \
|
53
|
+
"\n-- press enter/return to continue or q to stop -- \n\n" \
|
54
|
+
"g\n"
|
55
|
+
|
56
|
+
@terminal.say(list)
|
57
|
+
assert_equal(paginated, @output.string)
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_quiting_paging_shouldnt_raise
|
61
|
+
# See https://github.com/JEG2/highline/issues/168
|
62
|
+
|
63
|
+
@terminal.page_at = 6
|
64
|
+
|
65
|
+
@input << "q"
|
66
|
+
@input.rewind
|
67
|
+
|
68
|
+
list = "a\nb\nc\nd\ne\nf\n"
|
69
|
+
|
70
|
+
# expect not to raise an error on next line
|
71
|
+
@terminal.say(list)
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class TestQuestion < Minitest::Test
|
4
|
+
def setup
|
5
|
+
@input = StringIO.new
|
6
|
+
@output = StringIO.new
|
7
|
+
@highline = HighLine.new(@input, @output)
|
8
|
+
|
9
|
+
@question = HighLine::Question.new("How are you?", nil)
|
10
|
+
@asker = HighLine::QuestionAsker.new(@question, @highline)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_ask_once
|
14
|
+
answer = "Very good, thanks for asking!"
|
15
|
+
|
16
|
+
@input.string = answer
|
17
|
+
|
18
|
+
assert_equal answer, @asker.ask_once
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
require "highline/import"
|
4
|
+
require "highline/simulate"
|
5
|
+
|
6
|
+
class SimulatorTest < Minitest::Test
|
7
|
+
def setup
|
8
|
+
input = StringIO.new
|
9
|
+
output = StringIO.new
|
10
|
+
$terminal = HighLine.new(input, output)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_simulator
|
14
|
+
HighLine::Simulate.with("Bugs Bunny", "18") do
|
15
|
+
name = ask("What is your name?")
|
16
|
+
|
17
|
+
assert_equal "Bugs Bunny", name
|
18
|
+
|
19
|
+
age = ask("What is your age?")
|
20
|
+
|
21
|
+
assert_equal "18", age
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
|
4
|
+
# tc_string_extension.rb
|
5
|
+
#
|
6
|
+
# Created by Richard LeBer 2011-06-27
|
7
|
+
#
|
8
|
+
# This is Free Software. See LICENSE and COPYING for details.
|
9
|
+
|
10
|
+
require "test_helper"
|
11
|
+
|
12
|
+
require "highline"
|
13
|
+
require "stringio"
|
14
|
+
require "string_methods"
|
15
|
+
|
16
|
+
|
17
|
+
# FakeString is here just to avoid
|
18
|
+
# using HighLine.colorize_strings
|
19
|
+
# on tests
|
20
|
+
|
21
|
+
class FakeString < String
|
22
|
+
include HighLine::StringExtensions
|
23
|
+
end
|
24
|
+
|
25
|
+
class TestStringExtension < Minitest::Test
|
26
|
+
def setup
|
27
|
+
HighLine.reset
|
28
|
+
@string = FakeString.new "string"
|
29
|
+
end
|
30
|
+
|
31
|
+
def teardown
|
32
|
+
HighLine.reset
|
33
|
+
end
|
34
|
+
|
35
|
+
include StringMethods
|
36
|
+
|
37
|
+
def test_Highline_String_is_yaml_serializable
|
38
|
+
require 'yaml'
|
39
|
+
unless Gem::Version.new(YAML::VERSION) < Gem::Version.new("2.0.2")
|
40
|
+
highline_string = HighLine::String.new("Yaml didn't messed with HighLine::String")
|
41
|
+
yaml_highline_string = highline_string.to_yaml
|
42
|
+
yaml_loaded_string = YAML.load(yaml_highline_string)
|
43
|
+
|
44
|
+
assert_equal "Yaml didn't messed with HighLine::String", yaml_loaded_string
|
45
|
+
assert_equal highline_string, yaml_loaded_string
|
46
|
+
assert_instance_of HighLine::String, yaml_loaded_string
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_highline_string_respond_to_color
|
51
|
+
assert HighLine::String.new("highline string").respond_to? :color
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_normal_string_doesnt_respond_to_color
|
55
|
+
refute "normal_string".respond_to? :color
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_highline_string_still_raises_for_non_available_messages
|
59
|
+
assert_raises(NoMethodError) do
|
60
|
+
@string.unknown_message
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_String_includes_StringExtension_when_receives_colorize_strings
|
65
|
+
@include_received = 0
|
66
|
+
caller = Proc.new { @include_received += 1 }
|
67
|
+
::String.stub :include, caller do
|
68
|
+
HighLine.colorize_strings
|
69
|
+
end
|
70
|
+
assert_equal 1, @include_received
|
71
|
+
end
|
72
|
+
end
|
@@ -1,17 +1,21 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
|
1
4
|
# tc_highline_string.rb
|
2
5
|
#
|
3
6
|
# Created by Richard LeBer 2011-06-27
|
4
7
|
#
|
5
8
|
# This is Free Software. See LICENSE and COPYING for details.
|
6
9
|
|
7
|
-
require "
|
10
|
+
require "test_helper"
|
8
11
|
|
9
12
|
require "highline"
|
10
13
|
require "stringio"
|
11
14
|
require "string_methods"
|
12
15
|
|
13
|
-
class TestHighLineString < Test
|
16
|
+
class TestHighLineString < Minitest::Test
|
14
17
|
def setup
|
18
|
+
HighLine.reset
|
15
19
|
@string = HighLine::String.new("string")
|
16
20
|
end
|
17
21
|
|
@@ -33,6 +37,6 @@ class TestHighLineString < Test::Unit::TestCase
|
|
33
37
|
include StringMethods
|
34
38
|
|
35
39
|
def test_string_class_is_unchanged
|
36
|
-
|
40
|
+
assert_raises(::NoMethodError) { "string".color(:blue) }
|
37
41
|
end
|
38
42
|
end
|
@@ -1,17 +1,21 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
|
1
4
|
# tc_style.rb
|
2
5
|
#
|
3
6
|
# Created by Richard LeBer on 2011-06-11.
|
4
7
|
#
|
5
8
|
# This is Free Software. See LICENSE and COPYING for details.
|
6
9
|
|
7
|
-
require "
|
10
|
+
require "test_helper"
|
8
11
|
|
9
12
|
require "highline"
|
10
13
|
require "stringio"
|
11
14
|
|
12
|
-
class TestStyle < Test
|
15
|
+
class TestStyle < Minitest::Test
|
13
16
|
|
14
17
|
def setup
|
18
|
+
HighLine.reset
|
15
19
|
@input = StringIO.new
|
16
20
|
@output = StringIO.new
|
17
21
|
@terminal = HighLine.new(@input, @output)
|
@@ -19,12 +23,33 @@ class TestStyle < Test::Unit::TestCase
|
|
19
23
|
@style2 = HighLine::Style.new(:name=>:lando, :code=>"\e[98m")
|
20
24
|
@style3 = HighLine::Style.new(:name=>[:foo, :lando], :list=>[:foo, :lando])
|
21
25
|
@style4 = HighLine::Style(:rgb_654321)
|
26
|
+
@added_styles_on_setup = 4 # update here if added more styles
|
27
|
+
@added_codes_to_index = 3 # :foo, :lando and :rgb_654321
|
22
28
|
end
|
23
|
-
|
24
|
-
def
|
25
|
-
|
29
|
+
|
30
|
+
def test_clear_index_reset_styles_to_builtin
|
31
|
+
styles_size_after_setup = HighLine::Style.list.size
|
32
|
+
expected_styles_size = styles_size_after_setup - @added_styles_on_setup
|
33
|
+
|
34
|
+
HighLine::Style.clear_index
|
35
|
+
styles_size_after_clear_index = HighLine::Style.list.size
|
36
|
+
|
37
|
+
assert_equal expected_styles_size, styles_size_after_clear_index
|
26
38
|
end
|
27
|
-
|
39
|
+
|
40
|
+
def test_clear_index_reset_code_index_to_builtin
|
41
|
+
code_index = HighLine::Style.code_index
|
42
|
+
code_index_array = code_index.map { |code, style_array| style_array }.flatten
|
43
|
+
expected_code_index_array_size = code_index_array.size - @added_codes_to_index
|
44
|
+
|
45
|
+
HighLine::Style.clear_index
|
46
|
+
|
47
|
+
cleared_code_index = HighLine::Style.code_index
|
48
|
+
cleared_code_index_array = cleared_code_index.map { |code, style_array| style_array }.flatten
|
49
|
+
|
50
|
+
assert_equal expected_code_index_array_size, cleared_code_index_array.size
|
51
|
+
end
|
52
|
+
|
28
53
|
def test_style_method
|
29
54
|
# Retrieve a style from an existing Style (no new Style created)
|
30
55
|
new_style = @style1.dup # This will replace @style1 in the indexes
|
@@ -44,18 +69,28 @@ class TestStyle < Test::Unit::TestCase
|
|
44
69
|
assert_nil s.list
|
45
70
|
assert_equal "\e[1m", s.code
|
46
71
|
assert_equal :bold, s.name
|
72
|
+
assert s.builtin
|
47
73
|
|
48
74
|
# Create a builtin style from a new ANSI escape string
|
49
75
|
s = HighLine.Style("\e[96m")
|
50
76
|
assert_instance_of HighLine::Style, s
|
51
77
|
assert_nil s.list
|
52
78
|
assert_equal "\e[96m", s.code
|
79
|
+
assert s.builtin
|
80
|
+
|
81
|
+
# Create a non-builtin style from a string
|
82
|
+
s = HighLine.Style("\e[109m")
|
83
|
+
assert_instance_of HighLine::Style, s
|
84
|
+
assert_nil s.list
|
85
|
+
assert_equal "\e[109m", s.code
|
86
|
+
refute s.builtin
|
53
87
|
|
54
88
|
# Create a builtin style from a symbol
|
55
89
|
s = HighLine.Style(:red)
|
56
90
|
assert_instance_of HighLine::Style, s
|
57
91
|
assert_nil s.list
|
58
92
|
assert_equal :red, s.name
|
93
|
+
assert s.builtin
|
59
94
|
|
60
95
|
# Retrieve an existing style by name (no new Style created)
|
61
96
|
s = HighLine.Style(@style2.name)
|
@@ -101,12 +136,12 @@ class TestStyle < Test::Unit::TestCase
|
|
101
136
|
assert_equal [:underline, :blue], s1.list
|
102
137
|
|
103
138
|
# Raise an error for an undefined style
|
104
|
-
|
139
|
+
assert_raises(::NameError) { HighLine.Style(:fubar) }
|
105
140
|
end
|
106
141
|
|
107
142
|
def test_no_color_scheme
|
108
143
|
HighLine.color_scheme = nil
|
109
|
-
|
144
|
+
assert_raises(::NameError) { HighLine.Style(:critical) }
|
110
145
|
end
|
111
146
|
|
112
147
|
def test_with_color_scheme
|
@@ -155,7 +190,7 @@ class TestStyle < Test::Unit::TestCase
|
|
155
190
|
assert_nil HighLine::Style.list[:s1]
|
156
191
|
assert_nil HighLine::Style.code_index['foo']
|
157
192
|
s1 = HighLine::Style.new(:name=>:s1, :code=>'foo')
|
158
|
-
|
193
|
+
refute_nil HighLine::Style.list[:s1]
|
159
194
|
assert_same s1, HighLine::Style.list[:s1]
|
160
195
|
assert_equal :s1, HighLine::Style.list[:s1].name
|
161
196
|
assert_equal 'foo', HighLine::Style.list[:s1].code
|
@@ -173,7 +208,7 @@ class TestStyle < Test::Unit::TestCase
|
|
173
208
|
s2 = HighLine::Style.new(:name=>:s2, :code=>'bar')
|
174
209
|
assert_equal styles+1, HighLine::Style.list.size
|
175
210
|
assert_equal codes+1, HighLine::Style.code_index.size
|
176
|
-
|
211
|
+
refute_nil HighLine::Style.list[:s2]
|
177
212
|
assert_same s2, HighLine::Style.list[:s2]
|
178
213
|
assert_equal :s2, HighLine::Style.list[:s2].name
|
179
214
|
assert_equal 'bar', HighLine::Style.list[:s2].code
|
@@ -185,16 +220,16 @@ class TestStyle < Test::Unit::TestCase
|
|
185
220
|
|
186
221
|
# Add a Style with an existing name
|
187
222
|
s3_before = HighLine::Style.list[:s2]
|
188
|
-
|
223
|
+
refute_nil HighLine::Style.list[:s2]
|
189
224
|
assert_nil HighLine::Style.code_index['baz']
|
190
225
|
s3 = HighLine::Style.new(:name=>:s2, :code=>'baz')
|
191
|
-
|
192
|
-
|
226
|
+
refute_same s2, s3
|
227
|
+
refute_same s3_before, s3
|
193
228
|
assert_equal styles+1, HighLine::Style.list.size
|
194
229
|
assert_equal codes+2, HighLine::Style.code_index.size
|
195
|
-
|
230
|
+
refute_nil HighLine::Style.list[:s2]
|
196
231
|
assert_same s3, HighLine::Style.list[:s2]
|
197
|
-
|
232
|
+
refute_same s2, HighLine::Style.list[:s2]
|
198
233
|
assert_equal :s2, HighLine::Style.list[:s2].name
|
199
234
|
assert_equal 'baz', HighLine::Style.list[:s2].code
|
200
235
|
assert_instance_of Array, HighLine::Style.code_index['baz']
|
@@ -208,7 +243,7 @@ class TestStyle < Test::Unit::TestCase
|
|
208
243
|
s4 = HighLine::Style.new(:name=>:s4, :code=>'baz')
|
209
244
|
assert_equal styles+2, HighLine::Style.list.size
|
210
245
|
assert_equal codes+2, HighLine::Style.code_index.size
|
211
|
-
|
246
|
+
refute_nil HighLine::Style.list[:s4]
|
212
247
|
assert_same s4, HighLine::Style.list[:s4]
|
213
248
|
assert_equal :s4, HighLine::Style.list[:s4].name
|
214
249
|
assert_equal 'baz', HighLine::Style.list[:s4].code
|
@@ -348,9 +383,9 @@ class TestStyle < Test::Unit::TestCase
|
|
348
383
|
# Add a Style with a new name and code
|
349
384
|
assert_nil HighLine::Style.list[:s5]
|
350
385
|
s5 = HighLine::Style.new(:name=>:s5, :code=>'foo')
|
351
|
-
|
386
|
+
refute_nil HighLine::Style.list[:s5]
|
352
387
|
assert_equal list_size+1, HighLine::Style.list.size
|
353
|
-
|
388
|
+
refute_nil HighLine::Style.list[:s5]
|
354
389
|
assert_same s5, HighLine::Style.list[:s5]
|
355
390
|
assert_equal :s5, HighLine::Style.list[:s5].name
|
356
391
|
assert_equal 'foo', HighLine::Style.list[:s5].code
|
@@ -359,7 +394,7 @@ class TestStyle < Test::Unit::TestCase
|
|
359
394
|
assert_nil HighLine::Style.list[:s6]
|
360
395
|
s6 = HighLine::Style.new(:name=>:s6, :code=>'bar')
|
361
396
|
assert_equal list_size+2, HighLine::Style.list.size
|
362
|
-
|
397
|
+
refute_nil HighLine::Style.list[:s6]
|
363
398
|
assert_same s6, HighLine::Style.list[:s6]
|
364
399
|
assert_equal :s6, HighLine::Style.list[:s6].name
|
365
400
|
assert_equal 'bar', HighLine::Style.list[:s6].code
|
@@ -367,9 +402,9 @@ class TestStyle < Test::Unit::TestCase
|
|
367
402
|
# Add a Style with an existing name
|
368
403
|
s7 = HighLine::Style.new(:name=>:s6, :code=>'baz')
|
369
404
|
assert_equal list_size+2, HighLine::Style.list.size # No net addition to list
|
370
|
-
|
405
|
+
refute_nil HighLine::Style.list[:s6]
|
371
406
|
assert_same s7, HighLine::Style.list[:s6] # New one replaces old one
|
372
|
-
|
407
|
+
refute_same s6, HighLine::Style.list[:s6]
|
373
408
|
assert_equal :s6, HighLine::Style.list[:s6].name
|
374
409
|
assert_equal 'baz', HighLine::Style.list[:s6].code
|
375
410
|
end
|
@@ -460,35 +495,35 @@ class TestStyle < Test::Unit::TestCase
|
|
460
495
|
|
461
496
|
s1 = @style1.variant(:new_foo1, :code=>'abracadabra')
|
462
497
|
assert_instance_of HighLine::Style, s1
|
463
|
-
|
498
|
+
refute_same @style1, s1 # This is a copy
|
464
499
|
assert_equal :new_foo1, s1.name # Changed
|
465
500
|
assert_equal 'abracadabra', s1.code # Changed
|
466
501
|
assert_equal [1,2,3], s1.rgb # Unchanged
|
467
502
|
|
468
503
|
s2 = @style1.variant(:new_foo2, :increment=>-15)
|
469
504
|
assert_instance_of HighLine::Style, s2
|
470
|
-
|
505
|
+
refute_same @style1, s2 # This is a copy
|
471
506
|
assert_equal :new_foo2, s2.name # Changed
|
472
507
|
assert_equal "\e[84m", s2.code # 99 (original code) - 15
|
473
508
|
assert_equal [1,2,3], s2.rgb # Unchanged
|
474
509
|
|
475
510
|
s3 = @style1.variant(:new_foo3, :code=>"\e[55m", :increment=>15)
|
476
511
|
assert_instance_of HighLine::Style, s3
|
477
|
-
|
512
|
+
refute_same @style1, s3 # This is a copy
|
478
513
|
assert_equal :new_foo3, s3.name # Changed
|
479
514
|
assert_equal "\e[70m", s3.code # 99 (new code) + 15
|
480
515
|
assert_equal [1,2,3], s3.rgb # Unchanged
|
481
516
|
|
482
517
|
s4 = @style1.variant(:new_foo4, :code=>"\e[55m", :increment=>15, :rgb=>"blah")
|
483
518
|
assert_instance_of HighLine::Style, s4
|
484
|
-
|
519
|
+
refute_same @style1, s4 # This is a copy
|
485
520
|
assert_equal :new_foo4, s4.name # Changed
|
486
521
|
assert_equal "\e[70m", s4.code # 99 (new code) + 15
|
487
522
|
assert_equal 'blah', s4.rgb # Changed
|
488
523
|
|
489
524
|
s5 = @style1.variant(:new_foo5)
|
490
525
|
assert_instance_of HighLine::Style, s5
|
491
|
-
|
526
|
+
refute_same @style1, s5 # This is a copy
|
492
527
|
assert_equal :new_foo5, s5.name # Changed
|
493
528
|
assert_equal "\e[99m", s5.code # Unchanged
|
494
529
|
assert_equal [1,2,3], s5.rgb # Unchanged
|
@@ -498,7 +533,7 @@ class TestStyle < Test::Unit::TestCase
|
|
498
533
|
assert_equal style1_code, @style1.code
|
499
534
|
assert_equal style1_rgb, @style1.rgb
|
500
535
|
|
501
|
-
|
536
|
+
assert_raises(::RuntimeError) { @style3.variant(:new_foo6) } # Can't create a variant of a list style
|
502
537
|
end
|
503
538
|
|
504
539
|
def test_on
|
@@ -508,7 +543,7 @@ class TestStyle < Test::Unit::TestCase
|
|
508
543
|
|
509
544
|
s1 = @style1.on
|
510
545
|
assert_instance_of HighLine::Style, s1
|
511
|
-
|
546
|
+
refute_same @style1, s1 # This is a copy
|
512
547
|
assert_equal :on_foo, s1.name # Changed
|
513
548
|
assert_equal "\e[109m", s1.code # Changed
|
514
549
|
assert_equal [1,2,3], s1.rgb # Unchanged
|
@@ -518,7 +553,7 @@ class TestStyle < Test::Unit::TestCase
|
|
518
553
|
assert_equal style1_code, @style1.code
|
519
554
|
assert_equal style1_rgb, @style1.rgb
|
520
555
|
|
521
|
-
|
556
|
+
assert_raises(::RuntimeError) { @style3.on } # Can't create a variant of a list style
|
522
557
|
end
|
523
558
|
|
524
559
|
def test_bright
|
@@ -528,7 +563,7 @@ class TestStyle < Test::Unit::TestCase
|
|
528
563
|
|
529
564
|
s1 = @style1.bright
|
530
565
|
assert_instance_of HighLine::Style, s1
|
531
|
-
|
566
|
+
refute_same @style1, s1 # This is a copy
|
532
567
|
assert_equal :bright_foo, s1.name # Changed
|
533
568
|
assert_equal "\e[159m", s1.code # Changed
|
534
569
|
assert_equal [129,130,131], s1.rgb # Changed
|
@@ -541,7 +576,7 @@ class TestStyle < Test::Unit::TestCase
|
|
541
576
|
s2_base = HighLine::Style.new(:name=>:leia, :code=>"\e[92m", :rgb=>[0,0,14])
|
542
577
|
s2 = s2_base.bright
|
543
578
|
assert_instance_of HighLine::Style, s2
|
544
|
-
|
579
|
+
refute_same s2_base, s2 # This is a copy
|
545
580
|
assert_equal :bright_leia, s2.name # Changed
|
546
581
|
assert_equal "\e[152m", s2.code # Changed
|
547
582
|
assert_equal [0,0,142], s2.rgb # Changed
|
@@ -549,7 +584,7 @@ class TestStyle < Test::Unit::TestCase
|
|
549
584
|
s3_base = HighLine::Style.new(:name=>:luke, :code=>"\e[93m", :rgb=>[20,21,0])
|
550
585
|
s3 = s3_base.bright
|
551
586
|
assert_instance_of HighLine::Style, s3
|
552
|
-
|
587
|
+
refute_same s3_base, s3 # This is a copy
|
553
588
|
assert_equal :bright_luke, s3.name # Changed
|
554
589
|
assert_equal "\e[153m", s3.code # Changed
|
555
590
|
assert_equal [148,149,0], s3.rgb # Changed
|
@@ -557,19 +592,19 @@ class TestStyle < Test::Unit::TestCase
|
|
557
592
|
s4_base = HighLine::Style.new(:name=>:r2d2, :code=>"\e[94m", :rgb=>[0,0,0])
|
558
593
|
s4 = s4_base.bright
|
559
594
|
assert_instance_of HighLine::Style, s4
|
560
|
-
|
595
|
+
refute_same s4_base, s4 # This is a copy
|
561
596
|
assert_equal :bright_r2d2, s4.name # Changed
|
562
597
|
assert_equal "\e[154m", s4.code # Changed
|
563
598
|
assert_equal [128,128,128], s4.rgb # Changed; special case
|
564
599
|
|
565
|
-
|
600
|
+
assert_raises(::RuntimeError) { @style3.bright } # Can't create a variant of a list style
|
566
601
|
end
|
567
602
|
|
568
603
|
def test_light_do_the_same_as_bright
|
569
604
|
bright_style = @style1.bright
|
570
605
|
light_style = @style1.light
|
571
606
|
|
572
|
-
|
607
|
+
refute_equal bright_style, light_style
|
573
608
|
assert_equal :bright_foo, bright_style.name
|
574
609
|
assert_equal :light_foo, light_style.name
|
575
610
|
assert_equal bright_style.code, light_style.code
|