From cea34bd8082784051542131ddf8a353f5656ac88 Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Mon, 9 May 2022 17:19:01 +1200 Subject: Add basic binary operators (and, or, xor, not) to `IO::Buffer`. (#5893) --- test/ruby/test_io_buffer.rb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'test/ruby') 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 -- cgit v1.2.3