diff options
Diffstat (limited to 'src/arrow/r/tests/testthat/test-buffer.R')
-rw-r--r-- | src/arrow/r/tests/testthat/test-buffer.R | 97 |
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)) +}) |