Groonga 3.0.9 Source Code Document
Main Page
Related Pages
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
groonga
test
unit
core
dat
test-key-cursor.cpp
Go to the documentation of this file.
1
/* -*- c-basic-offset: 2; coding: utf-8 -*- */
2
/*
3
Copyright (C) 2011-2012 Brazil
4
5
This library is free software; you can redistribute it and/or
6
modify it under the terms of the GNU Lesser General Public
7
License version 2.1 as published by the Free Software Foundation.
8
9
This library is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
Lesser General Public License for more details.
13
14
You should have received a copy of the GNU Lesser General Public
15
License along with this library; if not, write to the Free Software
16
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
*/
18
19
#include <gcutter.h>
20
#include <cppcutter.h>
21
22
#include <
grn-assertions.h
>
23
#include <
dat/key-cursor.hpp
>
24
#include <
dat/trie.hpp
>
25
26
#include <cstring>
27
28
namespace
29
{
30
void
create_trie
(
grn::dat::Trie
*trie)
31
{
32
trie->
create
();
33
trie->
insert
(
"Werdna"
, std::strlen(
"Werdna"
));
// 7th
34
trie->
insert
(
"Trebor"
, std::strlen(
"Trebor"
));
// 6th
35
trie->
insert
(
"Human"
, std::strlen(
"Human"
));
// 5th
36
trie->
insert
(
"Elf"
, std::strlen(
"Elf"
));
// 2nd
37
trie->
insert
(
"Dwarf"
, std::strlen(
"Dward"
));
// 1st
38
trie->
insert
(
"Gnome"
, std::strlen(
"Gnome"
));
// 3rd
39
trie->
insert
(
"Hobbit"
, std::strlen(
"Hobbit"
));
// 4th
40
}
41
}
42
43
namespace
test_dat_key_cursor
44
{
45
void
test_null(
void
)
46
{
47
grn::dat::Trie
trie;
48
create_trie
(&trie);
49
50
grn::dat::KeyCursor
cursor;
51
cursor.
open
(trie,
grn::dat::String
(),
grn::dat::String
());
52
cppcut_assert_equal(
grn::dat::UInt32
(5), cursor.
next
().
id
());
53
cppcut_assert_equal(
grn::dat::UInt32
(4), cursor.
next
().
id
());
54
cppcut_assert_equal(
grn::dat::UInt32
(6), cursor.
next
().
id
());
55
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
56
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
57
cppcut_assert_equal(
grn::dat::UInt32
(2), cursor.
next
().
id
());
58
cppcut_assert_equal(
grn::dat::UInt32
(1), cursor.
next
().
id
());
59
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
60
}
61
62
void
test_min
(
void
)
63
{
64
grn::dat::Trie
trie;
65
create_trie
(&trie);
66
67
grn::dat::KeyCursor
cursor;
68
69
cursor.
open
(trie,
grn::dat::String
(
"Hobbit"
),
grn::dat::String
());
70
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
71
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
72
cppcut_assert_equal(
grn::dat::UInt32
(2), cursor.
next
().
id
());
73
cppcut_assert_equal(
grn::dat::UInt32
(1), cursor.
next
().
id
());
74
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
75
76
cursor.
open
(trie,
grn::dat::String
(
"T"
),
grn::dat::String
());
77
cppcut_assert_equal(
grn::dat::UInt32
(2), cursor.
next
().
id
());
78
cppcut_assert_equal(
grn::dat::UInt32
(1), cursor.
next
().
id
());
79
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
80
81
cursor.
open
(trie,
grn::dat::String
(
"Z"
),
grn::dat::String
());
82
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
83
}
84
85
void
test_max_by_str
(
void
)
86
{
87
grn::dat::Trie
trie;
88
create_trie
(&trie);
89
90
grn::dat::KeyCursor
cursor;
91
92
cursor.
open
(trie,
grn::dat::String
(),
grn::dat::String
(
"Elf"
));
93
cppcut_assert_equal(
grn::dat::UInt32
(5), cursor.
next
().
id
());
94
cppcut_assert_equal(
grn::dat::UInt32
(4), cursor.
next
().
id
());
95
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
96
97
cursor.
open
(trie,
grn::dat::String
(),
grn::dat::String
(
"F"
));
98
cppcut_assert_equal(
grn::dat::UInt32
(5), cursor.
next
().
id
());
99
cppcut_assert_equal(
grn::dat::UInt32
(4), cursor.
next
().
id
());
100
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
101
102
cursor.
open
(trie,
grn::dat::String
(),
grn::dat::String
(
"A"
));
103
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
104
}
105
106
void
test_min_max
(
void
)
107
{
108
grn::dat::Trie
trie;
109
create_trie
(&trie);
110
111
grn::dat::KeyCursor
cursor;
112
cursor.
open
(trie,
grn::dat::String
(
"Gnome"
),
grn::dat::String
(
"Trebor"
));
113
cppcut_assert_equal(
grn::dat::UInt32
(6), cursor.
next
().
id
());
114
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
115
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
116
cppcut_assert_equal(
grn::dat::UInt32
(2), cursor.
next
().
id
());
117
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
118
}
119
120
void
test_offset
(
void
)
121
{
122
grn::dat::Trie
trie;
123
create_trie
(&trie);
124
125
grn::dat::KeyCursor
cursor;
126
127
cursor.
open
(trie,
grn::dat::String
(
"Hobbit"
),
128
grn::dat::String
(
"Trebor"
), 0);
129
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
130
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
131
cppcut_assert_equal(
grn::dat::UInt32
(2), cursor.
next
().
id
());
132
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
133
134
cursor.
open
(trie,
grn::dat::String
(),
grn::dat::String
(), 5);
135
cppcut_assert_equal(
grn::dat::UInt32
(2), cursor.
next
().
id
());
136
cppcut_assert_equal(
grn::dat::UInt32
(1), cursor.
next
().
id
());
137
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
138
139
cursor.
open
(trie,
grn::dat::String
(
"Gnome"
),
140
grn::dat::String
(
"Trebor"
), 2);
141
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
142
cppcut_assert_equal(
grn::dat::UInt32
(2), cursor.
next
().
id
());
143
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
144
145
cursor.
open
(trie,
grn::dat::String
(
"Gnome"
),
146
grn::dat::String
(
"Trebor"
), 100);
147
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
148
}
149
150
void
test_limit
(
void
)
151
{
152
grn::dat::Trie
trie;
153
create_trie
(&trie);
154
155
grn::dat::KeyCursor
cursor;
156
157
cursor.
open
(trie,
grn::dat::String
(
"Gnome"
),
grn::dat::String
(
"Werdna"
),
158
0,
grn::dat::MAX_UINT32
);
159
cppcut_assert_equal(
grn::dat::UInt32
(6), cursor.
next
().
id
());
160
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
161
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
162
cppcut_assert_equal(
grn::dat::UInt32
(2), cursor.
next
().
id
());
163
cppcut_assert_equal(
grn::dat::UInt32
(1), cursor.
next
().
id
());
164
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
165
166
cursor.
open
(trie,
grn::dat::String
(
"Gnome"
),
grn::dat::String
(
"Werdna"
),
167
0, 3);
168
cppcut_assert_equal(
grn::dat::UInt32
(6), cursor.
next
().
id
());
169
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
170
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
171
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
172
173
cursor.
open
(trie,
grn::dat::String
(
"A"
),
grn::dat::String
(
"Z"
), 3, 2);
174
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
175
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
176
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
177
178
cursor.
open
(trie,
grn::dat::String
(
"A"
),
grn::dat::String
(
"Z"
), 0, 0);
179
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
180
}
181
182
void
test_ascending_cursor
(
void
)
183
{
184
grn::dat::Trie
trie;
185
create_trie
(&trie);
186
187
grn::dat::KeyCursor
cursor;
188
189
cursor.
open
(trie,
grn::dat::String
(),
grn::dat::String
(),
190
0,
grn::dat::MAX_UINT32
,
grn::dat::ASCENDING_CURSOR
);
191
cppcut_assert_equal(
grn::dat::UInt32
(5), cursor.
next
().
id
());
192
cppcut_assert_equal(
grn::dat::UInt32
(4), cursor.
next
().
id
());
193
cppcut_assert_equal(
grn::dat::UInt32
(6), cursor.
next
().
id
());
194
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
195
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
196
cppcut_assert_equal(
grn::dat::UInt32
(2), cursor.
next
().
id
());
197
cppcut_assert_equal(
grn::dat::UInt32
(1), cursor.
next
().
id
());
198
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
199
200
cursor.
open
(trie,
grn::dat::String
(
"Elf"
),
grn::dat::String
(
"Human"
),
201
0,
grn::dat::MAX_UINT32
,
grn::dat::ASCENDING_CURSOR
);
202
cppcut_assert_equal(
grn::dat::UInt32
(4), cursor.
next
().
id
());
203
cppcut_assert_equal(
grn::dat::UInt32
(6), cursor.
next
().
id
());
204
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
205
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
206
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
207
208
cursor.
open
(trie,
grn::dat::String
(
"Dwarf"
),
grn::dat::String
(
"Trebor"
),
209
3, 2,
grn::dat::ASCENDING_CURSOR
);
210
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
211
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
212
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
213
}
214
215
void
test_descending_cursor
(
void
)
216
{
217
grn::dat::Trie
trie;
218
create_trie
(&trie);
219
220
grn::dat::KeyCursor
cursor;
221
222
cursor.
open
(trie,
grn::dat::String
(),
grn::dat::String
(),
223
0,
grn::dat::MAX_UINT32
,
grn::dat::DESCENDING_CURSOR
);
224
cppcut_assert_equal(
grn::dat::UInt32
(1), cursor.
next
().
id
());
225
cppcut_assert_equal(
grn::dat::UInt32
(2), cursor.
next
().
id
());
226
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
227
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
228
cppcut_assert_equal(
grn::dat::UInt32
(6), cursor.
next
().
id
());
229
cppcut_assert_equal(
grn::dat::UInt32
(4), cursor.
next
().
id
());
230
cppcut_assert_equal(
grn::dat::UInt32
(5), cursor.
next
().
id
());
231
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
232
233
cursor.
open
(trie,
grn::dat::String
(
"Elf"
),
grn::dat::String
(
"Human"
),
234
0,
grn::dat::MAX_UINT32
,
grn::dat::DESCENDING_CURSOR
);
235
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
236
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
237
cppcut_assert_equal(
grn::dat::UInt32
(6), cursor.
next
().
id
());
238
cppcut_assert_equal(
grn::dat::UInt32
(4), cursor.
next
().
id
());
239
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
240
241
cursor.
open
(trie,
grn::dat::String
(
"Dwarf"
),
grn::dat::String
(
"Trebor"
),
242
3, 2,
grn::dat::DESCENDING_CURSOR
);
243
cppcut_assert_equal(
grn::dat::UInt32
(6), cursor.
next
().
id
());
244
cppcut_assert_equal(
grn::dat::UInt32
(4), cursor.
next
().
id
());
245
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
246
}
247
248
void
test_except_boundary
(
void
)
249
{
250
grn::dat::Trie
trie;
251
create_trie
(&trie);
252
253
grn::dat::KeyCursor
cursor;
254
255
cursor.
open
(trie,
grn::dat::String
(),
grn::dat::String
(),
256
0,
grn::dat::MAX_UINT32
,
257
grn::dat::EXCEPT_LOWER_BOUND
|
grn::dat::EXCEPT_UPPER_BOUND
);
258
cppcut_assert_equal(
grn::dat::UInt32
(5), cursor.
next
().
id
());
259
cppcut_assert_equal(
grn::dat::UInt32
(4), cursor.
next
().
id
());
260
cppcut_assert_equal(
grn::dat::UInt32
(6), cursor.
next
().
id
());
261
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
262
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
263
cppcut_assert_equal(
grn::dat::UInt32
(2), cursor.
next
().
id
());
264
cppcut_assert_equal(
grn::dat::UInt32
(1), cursor.
next
().
id
());
265
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
266
267
cursor.
open
(trie,
grn::dat::String
(
"Dwarf"
),
grn::dat::String
(
"Werdna"
),
268
0,
grn::dat::MAX_UINT32
,
269
grn::dat::EXCEPT_LOWER_BOUND
|
grn::dat::EXCEPT_UPPER_BOUND
);
270
cppcut_assert_equal(
grn::dat::UInt32
(4), cursor.
next
().
id
());
271
cppcut_assert_equal(
grn::dat::UInt32
(6), cursor.
next
().
id
());
272
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
273
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
274
cppcut_assert_equal(
grn::dat::UInt32
(2), cursor.
next
().
id
());
275
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
276
277
cursor.
open
(trie,
grn::dat::String
(
"Elf"
),
grn::dat::String
(
"Trebor"
),
278
2, 100,
grn::dat::EXCEPT_LOWER_BOUND
);
279
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
280
cppcut_assert_equal(
grn::dat::UInt32
(2), cursor.
next
().
id
());
281
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
282
283
cursor.
open
(trie,
grn::dat::String
(
"Elf"
),
grn::dat::String
(
"Trebor"
),
284
2, 100,
grn::dat::EXCEPT_UPPER_BOUND
);
285
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
286
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
287
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
288
289
cursor.
open
(trie,
grn::dat::String
(
"Fighter"
),
grn::dat::String
(
"Samurai"
),
290
0,
grn::dat::MAX_UINT32
,
291
grn::dat::EXCEPT_LOWER_BOUND
|
grn::dat::EXCEPT_UPPER_BOUND
);
292
cppcut_assert_equal(
grn::dat::UInt32
(6), cursor.
next
().
id
());
293
cppcut_assert_equal(
grn::dat::UInt32
(7), cursor.
next
().
id
());
294
cppcut_assert_equal(
grn::dat::UInt32
(3), cursor.
next
().
id
());
295
cppcut_assert_equal(
false
, cursor.
next
().
is_valid
());
296
}
297
}
Generated on Sun Nov 10 2013 09:49:04 for Groonga 3.0.9 Source Code Document by
1.8.1.2