File: sqliteQuickColumn_test.R

package info (click to toggle)
r-cran-rsqlite 0.11.4-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 6,288 kB
  • ctags: 9,498
  • sloc: ansic: 89,625; sh: 17; makefile: 2
file content (42 lines) | stat: -rw-r--r-- 1,081 bytes parent folder | download | duplicates (2)
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)
    }
}