summaryrefslogtreecommitdiffstats
path: root/src/arrow/r/tests/testthat/test-compute-no-bindings.R
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/arrow/r/tests/testthat/test-compute-no-bindings.R201
1 files changed, 201 insertions, 0 deletions
diff --git a/src/arrow/r/tests/testthat/test-compute-no-bindings.R b/src/arrow/r/tests/testthat/test-compute-no-bindings.R
new file mode 100644
index 000000000..a51d797a4
--- /dev/null
+++ b/src/arrow/r/tests/testthat/test-compute-no-bindings.R
@@ -0,0 +1,201 @@
+# 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("non-bound compute kernels using TrimOptions", {
+ skip_if_not_available("utf8proc")
+ expect_equal(
+ call_function(
+ "utf8_trim",
+ Scalar$create("abracadabra"),
+ options = list(characters = "ab")
+ ),
+ Scalar$create("racadabr")
+ )
+
+ expect_equal(
+ call_function(
+ "utf8_ltrim",
+ Scalar$create("abracadabra"),
+ options = list(characters = "ab")
+ ),
+ Scalar$create("racadabra")
+ )
+
+ expect_equal(
+ call_function(
+ "utf8_rtrim",
+ Scalar$create("abracadabra"),
+ options = list(characters = "ab")
+ ),
+ Scalar$create("abracadabr")
+ )
+
+ expect_equal(
+ call_function(
+ "utf8_rtrim",
+ Scalar$create("abracadabra"),
+ options = list(characters = "ab")
+ ),
+ Scalar$create("abracadabr")
+ )
+
+ expect_equal(
+ call_function(
+ "ascii_ltrim",
+ Scalar$create("abracadabra"),
+ options = list(characters = "ab")
+ ),
+ Scalar$create("racadabra")
+ )
+
+ expect_equal(
+ call_function(
+ "ascii_rtrim",
+ Scalar$create("abracadabra"),
+ options = list(characters = "ab")
+ ),
+ Scalar$create("abracadabr")
+ )
+
+ expect_equal(
+ call_function(
+ "ascii_rtrim",
+ Scalar$create("abracadabra"),
+ options = list(characters = "ab")
+ ),
+ Scalar$create("abracadabr")
+ )
+})
+
+test_that("non-bound compute kernels using ReplaceSliceOptions", {
+ skip_if_not_available("utf8proc")
+
+ expect_equal(
+ call_function(
+ "binary_replace_slice",
+ Array$create("I need to fix this string"),
+ options = list(start = 1, stop = 1, replacement = " don't")
+ ),
+ Array$create("I don't need to fix this string")
+ )
+
+ expect_equal(
+ call_function(
+ "utf8_replace_slice",
+ Array$create("I need to fix this string"),
+ options = list(start = 1, stop = 1, replacement = " don't")
+ ),
+ Array$create("I don't need to fix this string")
+ )
+})
+
+test_that("non-bound compute kernels using ModeOptions", {
+ expect_equal(
+ as.vector(
+ call_function("mode", Array$create(c(1:10, 10, 9, NA)), options = list(n = 3))
+ ),
+ tibble::tibble("mode" = c(9, 10, 1), "count" = c(2L, 2L, 1L))
+ )
+
+ expect_equal(
+ as.vector(
+ call_function("mode", Array$create(c(1:10, 10, 9, NA)), options = list(n = 3, skip_nulls = FALSE))
+ ),
+ tibble::tibble("mode" = numeric(), "count" = integer())
+ )
+})
+
+test_that("non-bound compute kernels using PartitionNthOptions", {
+ result <- call_function(
+ "partition_nth_indices",
+ Array$create(c(11:20)),
+ options = list(pivot = 3)
+ )
+ # Order of indices on either side of the pivot is not deterministic
+ # (depends on C++ standard library implementation)
+ expect_true(all(as.vector(result[1:3]) < 3))
+ expect_true(all(as.vector(result[4:10]) >= 3))
+})
+
+
+test_that("non-bound compute kernels using MatchSubstringOptions", {
+ skip_if_not_available("utf8proc")
+
+ # Remove this test when ARROW-13924 has been completed
+ expect_equal(
+ call_function(
+ "starts_with",
+ Array$create(c("abracadabra", "abacus", "abdicate", "abrasive")),
+ options = list(pattern = "abr")
+ ),
+ Array$create(c(TRUE, FALSE, FALSE, TRUE))
+ )
+
+ # Remove this test when ARROW-13924 has been completed
+ expect_equal(
+ call_function(
+ "ends_with",
+ Array$create(c("abracadabra", "abacus", "abdicate", "abrasive")),
+ options = list(pattern = "e")
+ ),
+ Array$create(c(FALSE, FALSE, TRUE, TRUE))
+ )
+
+ # Remove this test when ARROW-13156 has been completed
+ expect_equal(
+ as.vector(
+ call_function(
+ "count_substring",
+ Array$create(c("abracadabra", "abacus", "abdicate", "abrasive")),
+ options = list(pattern = "e")
+ )
+ ),
+ c(0, 0, 1, 1)
+ )
+
+ skip_if_not_available("re2")
+
+ # Remove this test when ARROW-13156 has been completed
+ expect_equal(
+ as.vector(
+ call_function(
+ "count_substring_regex",
+ Array$create(c("abracadabra", "abacus", "abdicate", "abrasive")),
+ options = list(pattern = "e")
+ )
+ ),
+ c(0, 0, 1, 1)
+ )
+})
+
+test_that("non-bound compute kernels using ExtractRegexOptions", {
+ skip_if_not_available("re2")
+ expect_equal(
+ call_function("extract_regex", Scalar$create("abracadabra"), options = list(pattern = "(?P<letter>[a])")),
+ Scalar$create(tibble::tibble(letter = "a"))
+ )
+})
+
+test_that("non-bound compute kernels using IndexOptions", {
+ expect_equal(
+ as.vector(
+ call_function("index", Array$create(c(10, 20, 30, 40)), options = list(value = Scalar$create(40)))
+ ),
+ 3
+ )
+})