diff options
Diffstat (limited to 'src/arrow/c_glib/test/test-mutable-buffer.rb')
-rw-r--r-- | src/arrow/c_glib/test/test-mutable-buffer.rb | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/arrow/c_glib/test/test-mutable-buffer.rb b/src/arrow/c_glib/test/test-mutable-buffer.rb new file mode 100644 index 000000000..ccfd6e222 --- /dev/null +++ b/src/arrow/c_glib/test/test-mutable-buffer.rb @@ -0,0 +1,74 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +class TestMutableBuffer < Test::Unit::TestCase + def setup + @data = "Hello" + @buffer = Arrow::MutableBuffer.new(@data) + end + + def test_new_bytes + bytes_data = GLib::Bytes.new(@data) + buffer = Arrow::MutableBuffer.new(bytes_data) + if GLib.check_binding_version?(3, 2, 2) + assert_equal(bytes_data.pointer, buffer.mutable_data.pointer) + else + assert_equal(@data, buffer.mutable_data.to_s) + end + end + + def test_mutable? + assert do + @buffer.mutable? + end + end + + def test_mutable_data + assert_equal(@data, @buffer.mutable_data.to_s) + end + + def test_slice + sliced_buffer = @buffer.slice(1, 3) + assert_equal(@data[1, 3], sliced_buffer.data.to_s) + end + + sub_test_case("#set_data") do + test("offset") do + @buffer.set_data(1, "EL") + assert_equal("HELlo", @buffer.data.to_s) + end + + test("replace") do + @buffer.set_data(0, "World") + assert_equal("World", @buffer.data.to_s) + end + + test("offset: too large") do + message = "[mutable-buffer][set-data]: Data is too large: <(5 + 1) > (5)>" + assert_raise(Arrow::Error::Invalid.new(message)) do + @buffer.set_data(5, "X") + end + end + + test("data too large") do + message = "[mutable-buffer][set-data]: Data is too large: <(0 + 6) > (5)>" + assert_raise(Arrow::Error::Invalid.new(message)) do + @buffer.set_data(0, @data + "!") + end + end + end +end |