summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/-test-/win32/console/attribute.c5
-rw-r--r--test/-ext-/win32/test_console_attr.rb17
2 files changed, 19 insertions, 3 deletions
diff --git a/ext/-test-/win32/console/attribute.c b/ext/-test-/win32/console/attribute.c
index 6d706fb..a5f80fc 100644
--- a/ext/-test-/win32/console/attribute.c
+++ b/ext/-test-/win32/console/attribute.c
@@ -61,4 +61,9 @@ Init_attribute(VALUE m)
rb_define_const(m, "BACKGROUND_GREEN", INT2FIX(BACKGROUND_GREEN));
rb_define_const(m, "BACKGROUND_RED", INT2FIX(BACKGROUND_RED));
rb_define_const(m, "BACKGROUND_INTENSITY", INT2FIX(BACKGROUND_INTENSITY));
+
+#ifndef COMMON_LVB_REVERSE_VIDEO
+#define COMMON_LVB_REVERSE_VIDEO 0x4000
+#endif
+ rb_define_const(m, "REVERSE_VIDEO", INT2FIX(COMMON_LVB_REVERSE_VIDEO));
}
diff --git a/test/-ext-/win32/test_console_attr.rb b/test/-ext-/win32/test_console_attr.rb
index e596e13..35d425d 100644
--- a/test/-ext-/win32/test_console_attr.rb
+++ b/test/-ext-/win32/test_console_attr.rb
@@ -5,6 +5,17 @@ if /mswin|mingw/ =~ RUBY_PLATFORM and STDOUT.tty?
require 'test/unit'
class Test_Win32Console < Test::Unit::TestCase
+ REVERSE_VIDEO = Bug::Win32::REVERSE_VIDEO
+
+ def reverse_video(fore, back = 0x0)
+ info = STDOUT.console_info
+ if (info.attr & REVERSE_VIDEO) == 0
+ (fore << 4) | back
+ else
+ (back << 4) | fore | REVERSE_VIDEO
+ end
+ end
+
def reset
STDOUT.console_attribute(7)
end
@@ -20,7 +31,7 @@ if /mswin|mingw/ =~ RUBY_PLATFORM and STDOUT.tty?
def test_reverse
print "\e[7m"
info = STDOUT.console_info
- assert_equal(0x70, info.attr);
+ assert_equal(reverse_video(0x7), info.attr);
end
def test_bold
@@ -32,13 +43,13 @@ if /mswin|mingw/ =~ RUBY_PLATFORM and STDOUT.tty?
def test_bold_reverse
print "\e[1;7m"
info = STDOUT.console_info
- assert_equal(0xf0, info.attr);
+ assert_equal(reverse_video(0xf), info.attr);
end
def test_reverse_bold
print "\e[7;1m"
info = STDOUT.console_info
- assert_equal(0xf0, info.attr);
+ assert_equal(reverse_video(0xf), info.attr);
end
end
end