Add regression test to check for trailing '/' problem
[filehash.git] / tests / reg-tests.R
blob96098d8dba7e32d0d6f8bfe2a6d991c884a959fe
1 library(filehash)
3 ######################################################################
4 ## Test 'filehashRDS' class
6 dbCreate("mydbRDS", "RDS")
7 db <- dbInit("mydbRDS", "RDS")
8 show(db)
10 ## Put some data into it
11 set.seed(1000)
12 dbInsert(db, "a", 1:10)
13 dbInsert(db, "b", rnorm(100))
14 dbInsert(db, "c", 100:1)
15 dbInsert(db, "d", runif(1000))
16 dbInsert(db, "other", "hello")
18 dbList(db)
20 dbExists(db, "e")
21 dbExists(db, "a")
23 env <- db2env(db)
24 ls(env)
26 env$a
27 env$b
28 env$c
29 str(env$d)
30 env$other
32 env$b <- rnorm(100)
33 mean(env$b)
35 env$a[1:5] <- 5:1
36 print(env$a)
38 dbDelete(db, "c")
40 tryCatch(print(env$c), error = function(e) print(e))
41 tryCatch(dbFetch(db, "c"), error = function(e) print(e))
43 ## Check trailing '/' problem
44 dbCreate("testRDSdb", "RDS")
45 db <- dbInit("testRDSdb/", "RDS")
46 print(db)
48 ######################################################################
49 ## test filehashDB1 class
51 dbCreate("mydb", "DB1")
52 db <- dbInit("mydb", "DB1")
54 ## Put some data into it
55 set.seed(1000)
56 dbInsert(db, "a", 1:10)
57 dbInsert(db, "b", rnorm(100))
58 dbInsert(db, "c", 100:1)
59 dbInsert(db, "d", runif(1000))
60 dbInsert(db, "other", "hello")
62 dbList(db)
64 env <- db2env(db)
65 ls(env)
67 env$a
68 env$b
69 env$c
70 str(env$d)
71 env$other
73 env$b <- rnorm(100)
74 mean(env$b)
76 env$a[1:5] <- 5:1
77 print(env$a)
79 dbDelete(db, "c")
81 tryCatch(print(env$c), error = function(e) print(e))
82 tryCatch(dbFetch(db, "c"), error = function(e) print(e))
84 numbers <- rnorm(100)
85 dbInsert(db, "numbers", numbers)
86 b <- dbFetch(db, "numbers")
87 stopifnot(all.equal(numbers, b))
88 stopifnot(identical(numbers, b))
93 ######################################################################
94 ######################################################################
95 ## Test everything on all database formats
97 types <- c("DB1", "RDS")
98 set.seed(1000)
100 for(type in types) {
101     cat("-----------------\n")
102     cat("-----------------\n")
103     cat("TESTING TYPE", type, "\n")
104     cat("-----------------\n")
105     cat("-----------------\n")
107     name <- paste("mydb", type, sep = "")
108     dbCreate(name, type)
109     db <- dbInit(name, type)
111     dbInsert(db, "a", 1:10)  ## integer
112     dbInsert(db, "b", rnorm(100))  ## numeric
113     dbInsert(db, "c", 100:1)  ## integer
114     dbInsert(db, "d", runif(1000))  ## numeric
115     dbInsert(db, "other", "hello")  ## character
117     ## Use extractor/replacement methods
118     db$list <- as.list(1:100)
119     db$dataf <- data.frame(x = rnorm(2000), y = rnorm(2000), z = rnorm(2000))
121     show(db)
123     str(db$dataf)
124     str(db$list)
125     print(db$d)
126     print(db$a)
127     print(db$b)
128     print(db$c)
129     print(db$other)
130         
131     env <- db2env(db)
132     ls(env)
133     
134     print(env$a)
135     print(env$b)
136     print(env$c)
137     str(env$d)
138     print(env$other)
140     env$b <- rnorm(100)
141     mean(env$b)
142     
143     env$a[1:5] <- 5:1
144     print(env$a)
146     with(db, print(mean(b)))
148     r <- lapply(db, summary)
149     str(r)
151     dbDelete(db, "c")
153     tryCatch(print(env$c), error = function(e) print(e))
154     tryCatch(dbFetch(db, "c"), error = function(e) print(e))
155     
156     numbers <- rnorm(100)
157     dbInsert(db, "numbers", numbers)
158     b <- dbFetch(db, "numbers")
159     stopifnot(all.equal(numbers, b))
160     stopifnot(identical(numbers, b))
165 ## Other tests
167 rm(list = ls())
170 dbCreate("testLoadingDB", "DB1")
171 db <- dbInit("testLoadingDB", "DB1")
173 set.seed(234)
175 db$a <- rnorm(100)
176 db$b <- runif(1000)
178 dbLoad(db)  ## 'a', 'b'
179 summary(a)
180 summary(b)
182 rm(list = ls())
183 db <- dbInit("testLoadingDB", "DB1")
185 dbLazyLoad(db)
187 summary(a)
188 summary(b)
192 ################################################################################
193 ## Check dbReorganize
195 dbCreate("test_reorg", "DB1")
196 db <- dbInit("test_reorg", "DB1")
198 set.seed(1000)
199 dbInsert(db, "a", 1)
200 dbInsert(db, "a", 1)
201 dbInsert(db, "a", 1)
202 dbInsert(db, "a", 1)
203 dbInsert(db, "b", rnorm(1000))
204 dbInsert(db, "b", rnorm(1000))
205 dbInsert(db, "b", rnorm(1000))
206 dbInsert(db, "b", rnorm(1000))
207 dbInsert(db, "c", runif(1000))
208 dbInsert(db, "c", runif(1000))
209 dbInsert(db, "c", runif(1000))
210 dbInsert(db, "c", runif(1000))
212 summary(db$b)
213 summary(db$c)
215 print(file.info(db@datafile)$size)
217 dbReorganize(db)
219 db <- dbInit("test_reorg", "DB1")
221 print(file.info(db@datafile)$size)
223 summary(db$b)
224 summary(db$c)