summaryrefslogtreecommitdiffstats
path: root/src/arrow/r/tests/testthat/test-buffer.R
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/arrow/r/tests/testthat/test-buffer.R97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/arrow/r/tests/testthat/test-buffer.R b/src/arrow/r/tests/testthat/test-buffer.R
new file mode 100644
index 000000000..9b3ebc6de
--- /dev/null
+++ b/src/arrow/r/tests/testthat/test-buffer.R
@@ -0,0 +1,97 @@
+# 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.
+
+test_that("Buffer can be created from raw vector", {
+ vec <- raw(123)
+ buf <- buffer(vec)
+ expect_r6_class(buf, "Buffer")
+ expect_equal(buf$size, 123)
+})
+
+test_that("Buffer can be created from integer vector", {
+ vec <- integer(17)
+ buf <- buffer(vec)
+ expect_r6_class(buf, "Buffer")
+ expect_equal(buf$size, 17 * 4)
+})
+
+test_that("Buffer can be created from numeric vector", {
+ vec <- numeric(17)
+ buf <- buffer(vec)
+ expect_r6_class(buf, "Buffer")
+ expect_equal(buf$size, 17 * 8)
+})
+
+test_that("Buffer can be created from complex vector", {
+ vec <- complex(3)
+ buf <- buffer(vec)
+ expect_r6_class(buf, "Buffer")
+ expect_equal(buf$size, 3 * 16)
+})
+
+test_that("buffer buffer buffers buffers", {
+ expect_r6_class(buffer(buffer(42)), "Buffer")
+})
+
+test_that("Other types can't be converted to Buffers", {
+ expect_error(
+ buffer(data.frame(a = "asdf")),
+ "Cannot convert object of class data.frame to arrow::Buffer"
+ )
+})
+
+test_that("can convert Buffer to raw", {
+ buf <- buffer(rnorm(10))
+ expect_equal(buf$data(), as.raw(buf))
+})
+
+test_that("can read remaining bytes of a RandomAccessFile", {
+ tbl <- tibble::tibble(
+ int = 1:10, dbl = as.numeric(1:10),
+ lgl = sample(c(TRUE, FALSE, NA), 10, replace = TRUE),
+ chr = letters[1:10]
+ )
+ tab <- Table$create(!!!tbl)
+
+ tf <- tempfile()
+ all_bytes <- write_feather(tab, tf)
+
+ file <- ReadableFile$create(tf)
+ expect_equal(file$tell(), 0)
+ x <- file$Read(20)$data()
+ expect_equal(file$tell(), 20)
+ y <- file$Read()$data()
+
+ file <- ReadableFile$create(tf)
+ z <- file$Read()$data()
+
+ file <- ReadableFile$create(tf)
+ a <- file$ReadAt(20)$data()
+
+ expect_equal(file$GetSize(), length(x) + length(y))
+ expect_equal(z, c(x, y))
+ expect_equal(a, y)
+})
+
+test_that("Buffer$Equals", {
+ vec <- integer(17)
+ buf1 <- buffer(vec)
+ buf2 <- buffer(vec)
+ expect_equal(buf1, buf2)
+ expect_true(buf1$Equals(buf2))
+ expect_false(buf1$Equals(vec))
+})