1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
set.seed(0x977)
mk_df <- function()
{
mk_blob <- function(n) as.raw(sample(0:255, n, replace = TRUE))
name <- letters[1:10]
data <- lapply(1:10, function(x) mk_blob(sample(10:256, 1)))
score <- rnorm(10)
count <- sample(1:10)
df <- data.frame(name = name, score = score, count = count,
data = I(data),
stringsAsFactors = FALSE)
}
mk_db <- function(df)
{
db <- dbConnect(SQLite(), dbname = ":memory:")
dbGetQuery(db, "create table t (name text, score float,
count integer, data blob)")
dbGetPreparedQuery(db, "insert into t values (?, ?, ?, ?)", df)
db
}
do_column_test <- function(colName)
{
df <- mk_df()
db <- mk_db(df)
ans <- RSQLite:::sqliteQuickColumn(db, "t", colName)
## for list valued columns, there will be an AsIs class attr
want <- df[[colName]]
if (is.list(want)) class(want) <- NULL
checkEquals(want, ans)
dbDisconnect(db)
}
test_column_access <- function()
{
for (cn in names(mk_df())) {
do_column_test(cn)
}
}
|