summaryrefslogtreecommitdiff
path: root/test/reline
diff options
context:
space:
mode:
authorst0012 <stan001212@gmail.com>2022-06-28 14:39:56 +0100
committergit <svn-admin@ruby-lang.org>2022-07-16 02:30:23 +0900
commit36ca0e58b600f3338ad4880d77c8c7fbc8f51460 (patch)
tree31bc41b1c4b4526f10c72cec587d5e66a6d945da /test/reline
parent280b805d040fa537d5a459b40d4bfa6d49700905 (diff)
downloadruby-36ca0e58b600f3338ad4880d77c8c7fbc8f51460.tar.gz
[ruby/reline] Use color name instead of code (integer) in dialog color APIs
As pointed out in the [comment](https://github.com/ruby/reline/pull/413#issuecomment-1168033973), the code is actually a control sequence and not only for colors. To make the dialog color APIs safer to use, we should restrict its usages and extract away the bg/fg concept from the input. So in this commit, I made these changes: 1. The dialog_*_bg/fg_color APIs only takes and returns color names (symbol): - :black - :red - :green - :yellow - :blue - :magenta - :cyan - :white 2. Add additional dialog_*_bg/fg_color_sequence APIs to access the raw code. https://github.com/ruby/reline/commit/b32a977766
Diffstat (limited to 'test/reline')
-rw-r--r--test/reline/test_config.rb16
-rw-r--r--test/reline/test_reline.rb38
2 files changed, 33 insertions, 21 deletions
diff --git a/test/reline/test_config.rb b/test/reline/test_config.rb
index 234eee11f7..eaee2fd580 100644
--- a/test/reline/test_config.rb
+++ b/test/reline/test_config.rb
@@ -411,16 +411,16 @@ class Reline::Config::Test < Reline::TestCase
def test_dialog_configurations
@config.read_lines(<<~LINES.lines)
- set dialog-default-bg-color 1
- set dialog-pointer-bg-color 2
- set dialog-default-fg-color 3
- set dialog-pointer-fg-color 4
+ set dialog-default-bg-color white
+ set dialog-pointer-bg-color black
+ set dialog-default-fg-color cyan
+ set dialog-pointer-fg-color magenta
LINES
- assert_equal 1, @config.dialog_default_bg_color
- assert_equal 2, @config.dialog_pointer_bg_color
- assert_equal 3, @config.dialog_default_fg_color
- assert_equal 4, @config.dialog_pointer_fg_color
+ assert_equal :white, @config.dialog_default_bg_color
+ assert_equal :black, @config.dialog_pointer_bg_color
+ assert_equal :cyan, @config.dialog_default_fg_color
+ assert_equal :magenta, @config.dialog_pointer_fg_color
end
end
diff --git a/test/reline/test_reline.rb b/test/reline/test_reline.rb
index 0201fb3a75..6717914c64 100644
--- a/test/reline/test_reline.rb
+++ b/test/reline/test_reline.rb
@@ -48,19 +48,31 @@ class Reline::Test < Reline::TestCase
def test_dialog_color_configuration
# defaults
- assert_equal(46, Reline.dialog_default_bg_color)
- assert_equal(37, Reline.dialog_default_fg_color)
- assert_equal(45, Reline.dialog_pointer_bg_color)
- assert_equal(37, Reline.dialog_pointer_fg_color)
-
- Reline.dialog_default_bg_color = 40
- assert_equal(40, Reline.dialog_default_bg_color)
- Reline.dialog_default_fg_color = 47
- assert_equal(47, Reline.dialog_default_fg_color)
- Reline.dialog_pointer_bg_color = 37
- assert_equal(37, Reline.dialog_pointer_bg_color)
- Reline.dialog_pointer_fg_color = 30
- assert_equal(30, Reline.dialog_pointer_fg_color)
+ assert_equal(:cyan, Reline.dialog_default_bg_color)
+ assert_equal(:white, Reline.dialog_default_fg_color)
+ assert_equal(:magenta, Reline.dialog_pointer_bg_color)
+ assert_equal(:white, Reline.dialog_pointer_fg_color)
+
+ Reline.dialog_default_bg_color = :black
+ assert_equal(:black, Reline.dialog_default_bg_color)
+ assert_equal(40, Reline.dialog_default_bg_color_sequence)
+
+ Reline.dialog_default_fg_color = :white
+ assert_equal(:white, Reline.dialog_default_fg_color)
+ assert_equal(37, Reline.dialog_default_fg_color_sequence)
+
+ Reline.dialog_pointer_bg_color = :white
+ assert_equal(:white, Reline.dialog_pointer_bg_color)
+ assert_equal(47, Reline.dialog_pointer_bg_color_sequence)
+
+ Reline.dialog_pointer_fg_color = :black
+ assert_equal(:black, Reline.dialog_pointer_fg_color)
+ assert_equal(30, Reline.dialog_pointer_fg_color_sequence)
+
+ # test value validation
+ assert_raise(ArgumentError) do
+ Reline.dialog_pointer_fg_color = :foo
+ end
end
def test_basic_word_break_characters