summaryrefslogtreecommitdiff
path: root/test/ruby/test_io_buffer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/test_io_buffer.rb')
-rw-r--r--test/ruby/test_io_buffer.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/ruby/test_io_buffer.rb b/test/ruby/test_io_buffer.rb
index e3f7021b26..d77f0afec8 100644
--- a/test/ruby/test_io_buffer.rb
+++ b/test/ruby/test_io_buffer.rb
@@ -331,4 +331,26 @@ class TestIOBuffer < Test::Unit::TestCase
ensure
io.close!
end
+
+ def test_operators
+ source = IO::Buffer.for("1234123412")
+ mask = IO::Buffer.for("133\x00")
+ result = source & mask
+
+ assert_equal (source & mask), IO::Buffer.for("123\x00123\x0012")
+ assert_equal (source | mask), IO::Buffer.for("1334133413")
+ assert_equal (source ^ mask), IO::Buffer.for("\x00\x01\x004\x00\x01\x004\x00\x01")
+ assert_equal ~source, IO::Buffer.for("\xce\xcd\xcc\xcb\xce\xcd\xcc\xcb\xce\xcd")
+ end
+
+ def test_inplace_operators
+ source = IO::Buffer.for("1234123412")
+ mask = IO::Buffer.for("133\x00")
+ result = source & mask
+
+ assert_equal source.dup.and!(mask), IO::Buffer.for("123\x00123\x0012")
+ assert_equal source.dup.or!(mask), IO::Buffer.for("1334133413")
+ assert_equal source.dup.xor!(mask), IO::Buffer.for("\x00\x01\x004\x00\x01\x004\x00\x01")
+ assert_equal source.dup.not!, IO::Buffer.for("\xce\xcd\xcc\xcb\xce\xcd\xcc\xcb\xce\xcd")
+ end
end