-
Notifications
You must be signed in to change notification settings - Fork 1
/
list_tuple.ml
68 lines (56 loc) · 1.51 KB
/
list_tuple.ml
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
(*pp camlp4o -I ../lib -I `ocamlfind query type-conv` pa_type_conv.cmo pa_orm.cma *)
TYPE_CONV_PATH "List_tuple"
type x = {
foo: (int * char list) list;
bar: string
} with
orm()
open Printf
open Orm
open OUnit
open Test_utils
let x1 = {foo=[(1,['x';'y'])] ; bar="hello world" }
let x2 = {foo=[(2,[]); (3,['a';'b';'c']); (4,['a'])] ; bar="world hello" }
let x3 = {foo=[] ; bar="world hello" }
let name = "list_tuple.db"
let test_init () =
ignore(open_db init name);
ignore(open_db ~rm:false init name);
ignore(open_db ~rm:false init name)
let test_save () =
let db = open_db init name in
x_save db x1;
x_save db x2;
x_save db x3
let test_update () =
let db = open_db init name in
x_save db x1;
x_save db x2;
x_save db x2;
x_save db x1;
x_save db x2;
x_save db x3
let test_get () =
let db = open_db ~rm:false init name in
"3 x in db" @? (List.length (x_get db) = 3)
let test_save_get () =
let db = open_db init name in
x_save db x1;
x_save db x2;
x_save db x3;
match x_get db with
|[a3;a2;a1] ->
"structural values equal" @? ( x1 = a1);
"physical values equal" @? ( x1 == a1);
"structural values equal" @? ( x2 = a2);
"physical values equal" @? ( x2 == a2);
"structural values equal" @? ( x3 = a3);
"physical values equal" @? ( x3 == a3)
|_ -> assert false
let suite = [
"list_tuple_init" >:: test_init;
"list_tuple_save" >:: test_save;
"list_tuple_update" >:: test_update;
"list_tuple_get" >:: test_get;
"list_tuple_save_get" >:: test_save_get;
]