summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorSamuel Williams <samuel.williams@oriontransfer.co.nz>2022-05-09 17:19:01 +1200
committerGitHub <noreply@github.com>2022-05-09 17:19:01 +1200
commitcea34bd8082784051542131ddf8a353f5656ac88 (patch)
tree0f599852290e4b7409663d1016caae472c42bfed /test/ruby
parentdf0bcb3385746e010e100dfb4e66a25dddc2c8fd (diff)
Add basic binary operators (and, or, xor, not) to `IO::Buffer`. (#5893)
Notes
Notes: Merged-By: ioquatix <samuel@codeotaku.com>
Diffstat (limited to 'test/ruby')
-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