Nothing
# 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("can initialize and release a database", {
db <- adbc_database_init(adbc_driver_void(), some_key = "some_value")
expect_s3_class(db, "adbc_database")
adbc_database_release(db)
expect_error(adbc_database_release(db), "INVALID_STATE")
})
test_that("can initialize and release a connection", {
db <- adbc_database_init(adbc_driver_void())
con <- adbc_connection_init(db, some_key = "some_value")
expect_s3_class(con, "adbc_connection")
adbc_connection_release(con)
expect_error(adbc_connection_release(con), "INVALID_STATE")
})
test_that("connection methods work for the void driver", {
db <- adbc_database_init(adbc_driver_void())
con <- adbc_connection_init(db)
expect_error(
adbc_connection_get_info(con, integer()),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_connection_get_info(con, double()),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_connection_get_info(con, NULL),
"NOT_IMPLEMENTED"
)
# With defaults of NULL/OL
expect_error(
adbc_connection_get_objects(con),
"NOT_IMPLEMENTED"
)
# With explicit args
expect_error(
adbc_connection_get_objects(
con, 0,
"catalog", "db_schema",
"table_name", "table_type", "column_name"
),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_connection_get_table_schema(
con,
"catalog", "db_schema", "table_name"
),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_connection_get_table_types(con),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_connection_read_partition(con, raw()),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_connection_commit(con),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_connection_rollback(con),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_connection_cancel(con),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_connection_get_statistic_names(con),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_connection_get_statistics(con, NULL, NULL, "table name"),
"NOT_IMPLEMENTED"
)
expect_identical(
adbc_connection_quote_identifier(con, 'some"identifier'),
'"some""identifier"'
)
expect_identical(
adbc_connection_quote_string(con, "some'value"),
"'some''value'"
)
})
test_that("can initialize and release a statement", {
db <- adbc_database_init(adbc_driver_void())
con <- adbc_connection_init(db)
stmt <- adbc_statement_init(con, some_key = "some_value")
expect_s3_class(stmt, "adbc_statement")
adbc_statement_release(stmt)
expect_error(adbc_statement_release(stmt), "INVALID_STATE")
})
test_that("statement methods work for the void driver", {
db <- adbc_database_init(adbc_driver_void())
con <- adbc_connection_init(db)
stmt <- adbc_statement_init(con)
expect_error(
adbc_statement_set_sql_query(stmt, "some query"),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_statement_set_substrait_plan(stmt, charToRaw("some plan")),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_statement_prepare(stmt),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_statement_get_parameter_schema(stmt),
"NOT_IMPLEMENTED"
)
struct_array <- nanoarrow::as_nanoarrow_array(data.frame(x = 1:5))
expect_error(
adbc_statement_bind(stmt, struct_array),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_statement_bind_stream(stmt, nanoarrow::nanoarrow_allocate_array_stream()),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_statement_execute_query(stmt),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_statement_execute_schema(stmt),
"NOT_IMPLEMENTED"
)
expect_error(
adbc_statement_cancel(stmt),
"NOT_IMPLEMENTED"
)
})
test_that("invalid external pointer inputs generate errors", {
db <- adbc_database_init(adbc_driver_void())
con <- adbc_connection_init(db)
stmt <- adbc_statement_init(con)
expect_error(
adbc_database_init(list(driver_init_func = character())),
"Expected external pointer with class 'adbc_driver_init_func'"
)
expect_error(
adbc_statement_set_sql_query(con, "some query"),
"Expected external pointer with class 'adbc_statement'"
)
# (makes a NULL xptr)
stmt2 <- unserialize(serialize(stmt, NULL))
expect_error(
adbc_statement_set_sql_query(stmt2, "some query"),
"Can't convert external pointer to NULL to T*"
)
})
test_that("invalid integer inputs generate errors", {
db <- adbc_database_init(adbc_driver_void())
con <- adbc_connection_init(db)
expect_error(
adbc_connection_get_objects(con, depth = "abc"),
"Expected integer(1) or double(1)",
fixed = TRUE
)
expect_error(
adbc_connection_get_objects(con, depth = 1:5),
"Expected integer(1) or double(1)",
fixed = TRUE
)
expect_error(
adbc_connection_get_objects(con, structure(1L, class = "non-empty")),
"Can't convert classed object"
)
expect_error(
adbc_connection_get_objects(con, NA_real_),
"Can't convert non-finite"
)
})
test_that("invalid int list inputs generate errors", {
db <- adbc_database_init(adbc_driver_void())
con <- adbc_connection_init(db)
expect_error(
adbc_connection_get_info(con, character()),
"Expected integer"
)
expect_error(
adbc_connection_get_info(con, structure(integer(), class = "non-empty")),
"Can't convert classed object"
)
expect_error(
adbc_connection_get_info(con, NA_real_),
"Can't convert non-finite element"
)
})
test_that("invalid const char* list inputs generate errors", {
db <- adbc_database_init(adbc_driver_void())
con <- adbc_connection_init(db)
expect_error(
adbc_connection_get_objects(
con,
table_type = integer()
),
"Expected character"
)
expect_error(
adbc_connection_get_objects(
con,
table_type = NA_character_
),
"Can't convert NA_character_ element"
)
expect_error(
adbc_connection_get_objects(
con,
table_type = structure("abc", class = "non-empty")
),
"Can't convert classed object"
)
})
test_that("invalid const char* inputs generate errors", {
db <- adbc_database_init(adbc_driver_void())
con <- adbc_connection_init(db)
stmt <- adbc_statement_init(con)
expect_error(
adbc_statement_set_sql_query(stmt, NULL),
"Expected character"
)
expect_error(
adbc_statement_set_sql_query(stmt, structure("abc", class = "non-empty")),
"Can't convert classed object to const char"
)
expect_error(
adbc_statement_set_sql_query(stmt, NA_character_),
"Can't convert NA_character_"
)
})
test_that("invalid bool inputs generate errors", {
db <- adbc_database_init(adbc_driver_void())
con <- adbc_connection_init(db)
expect_error(
adbc_connection_get_statistics(con, NULL, NULL, "table name", character()),
"Expected integer(1) or double(1)",
fixed = TRUE
)
expect_error(
adbc_connection_get_statistics(con, NULL, NULL, "table name", NA),
"Can't convert NA to bool"
)
expect_error(
adbc_connection_get_statistics(
con, NULL, NULL, "table name",
structure(TRUE, class = "non-empty")
),
"Can't convert classed object to bool"
)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.