1+ using QuerySQLite
12using Query
23using Test
3- using QuerySQLite
44using SQLite: DB, drop!, execute!, Stmt
55using QueryTables
6+ using Statistics: mean
67
78@testset " SQLite tutorial" begin
89
@@ -60,18 +61,32 @@ database2 = Database(DB(filename))
6061 DataTable |>
6162 length == 347
6263
63- @test (database. Track |>
64- @groupby (_. AlbumId) |>
65- @map ({AlbumId = key (_), Count = length (_. AlbumId)}) |>
66- collect |>
67- first). Count == 10
68-
6964@test (database. Track |>
7065 @map ({_. Name, _. Milliseconds, _. Bytes, _. AlbumId}) |>
7166 @filter (_. AlbumId == 1 ) |>
7267 collect |>
7368 first). Name == " For Those About To Rock (We Salute You)"
7469
70+ group_by_row =
71+ database. Track |>
72+ @groupby (_. AlbumId) |>
73+ @map ({
74+ AlbumId = key (_),
75+ length = length (_. AlbumId),
76+ sum = sum (_. Milliseconds),
77+ min = min (_. Milliseconds),
78+ max = max (_. Milliseconds),
79+ mean = mean (_. Milliseconds)
80+ }) |>
81+ collect |>
82+ first
83+
84+ @test group_by_row. AlbumId == 1
85+ @test group_by_row. length == 10
86+ @test group_by_row. sum == 2400415
87+ @test group_by_row. min == 199836
88+ @test group_by_row. mean == 240041.5
89+
7590end
7691
7792@testset " Systematic tests" begin
@@ -85,10 +100,12 @@ execute!(Stmt(connection, """
85100 b Int,
86101 c Int,
87102 d Text,
88- e Int
103+ e Int,
104+ f Int,
105+ g Text
89106 )""" ))
90107execute! (Stmt (connection, """
91- INSERT INTO test VALUES(0, 1, -1, "ab", NULL)
108+ INSERT INTO test VALUES(0, 1, -1, "ab", NULL, 65, "b" )
92109""" ))
93110database = Database (connection)
94111result =
@@ -113,10 +130,15 @@ result =
113130 if_else_test_6 = if_else (_. b, _. b, 0 ),
114131 if_else_test_7 = if_else (_. b, _. b, _. a),
115132 ismissing_test = ismissing (_. e),
133+ lowercase_test = lowercase (_. d),
116134 max_test = max (_. b, 0 ),
117135 min_test = min (_. a, 1 ),
118- occursin_test = occursin (r" a.*" , _. d),
119- uppercase_test = uppercase (_. d)
136+ occursin_test = occursin (r" A.*" , _. d),
137+ uppercase_test = uppercase (_. d),
138+ char_test = char (_. f),
139+ instr_test_1 = instr (_. d, " b" ),
140+ instr_test_2 = instr (" ab" , _. g),
141+ instr_test_3 = instr (_. d, _. g)
120142 }) |>
121143 collect |>
122144 first
@@ -144,9 +166,17 @@ result =
144166@test result. min_test == 0
145167@test result. occursin_test == 1
146168@test result. uppercase_test == " AB"
169+ @test result. lowercase_test == " ab"
170+ @test result. char_test == " A"
171+ # TODO : fix
172+ @test_broken result. instr_test_1 == 2
173+ @test result. instr_test_2 == 2
174+ @test result. instr_test_3 == 2
147175
148176drop! (connection, " test" )
149177
150178@test_throws ArgumentError Database (" file.not_sqlite" )
151179
152180end
181+
182+ # TODO : add doctests as tests
0 commit comments