activetokyocabinet 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,481 @@
1
+ $wd = File.dirname(File.expand_path(__FILE__))
2
+ ENV['RUBYLIB'] = "#{$wd}/../lib"
3
+
4
+ require 'spec_helper'
5
+ include SpecHelper
6
+ include ActiveTokyoCabinetSpec
7
+
8
+ describe 'tokyotyrant:' do
9
+ before do
10
+ TokyoTyrantSpec.establish_connection
11
+ TokyoTyrantSpec.create_tables
12
+ TokyoTyrantSpec.setup_employee
13
+ TokyoTyrantSpec.setup_department
14
+ end
15
+
16
+ it "employees length > 0" do
17
+ employees = Employee.find(:all)
18
+ employees.length.should == employee_data.length
19
+ end
20
+
21
+ it "employees has a one data (ename = 'SMITH')" do
22
+ employees = Employee.find(:all, :conditions => ['ename = ?', 'SMITH'])
23
+ employees.length.should == 1
24
+ data = employee_data.find {|i| i[EMP_ENAME] == 'SMITH' }
25
+ validate_employee(data, employees[0])
26
+ end
27
+
28
+ it "employees has a one data (empno = 7521)" do
29
+ employees = Employee.find(:all, :conditions => ['empno = ?', 7521])
30
+ employees.length.should == 1
31
+ data = employee_data.find {|i| i[EMP_EMPNO] == 7521 }
32
+ validate_employee(data, employees[0])
33
+ end
34
+
35
+ it "employees has no data (ename = 'SMITH' and job = 'SALESMAN')" do
36
+ employees = Employee.find(:all, :conditions => ['ename = ? and job = ?', 'SMITH', 'SALESMAN'])
37
+ employees.should be_empty
38
+ end
39
+
40
+ it "employees a one data (ename = 'TURNER' and job = 'SALESMAN')" do
41
+ employees = Employee.find(:all, :conditions => ['ename = ? and job = ?', 'TURNER', 'SALESMAN'])
42
+ employees.length.should == 1
43
+ data = employee_data.find {|i| i[EMP_ENAME] == 'TURNER' and i[EMP_JOB] == 'SALESMAN' }
44
+ validate_employee(data, employees[0])
45
+ end
46
+
47
+ it "employees a one data ({:ename => 'TURNER', :job => 'SALESMAN'})" do
48
+ employees = Employee.find(:all, :conditions => {:ename => 'TURNER', :job => 'SALESMAN'})
49
+ employees.length.should == 1
50
+ data = employee_data.find {|i| i[EMP_ENAME] == 'TURNER' and i[EMP_JOB] == 'SALESMAN' }
51
+ validate_employee(data, employees[0])
52
+ end
53
+
54
+ it "employees has any data" do
55
+ employee_data.each do |data|
56
+ employee_id = data.id
57
+ employee = Employee.find(employee_id)
58
+
59
+ employee.should_not be_nil
60
+ employee.id.should == employee_id
61
+ validate_employee(data, employee)
62
+ end
63
+ end
64
+
65
+ it "employees has any data (job = 'SALESMAN')" do
66
+ employees = Employee.find(:all, :conditions => ['job = ?', 'SALESMAN'])
67
+ employees.should_not be_empty
68
+
69
+ employees.each do |employee|
70
+ data = employee_data[employee.id - 1]
71
+
72
+ data.should_not be_nil
73
+ data[EMP_JOB].should == 'SALESMAN'
74
+ validate_employee(data, employee)
75
+ end
76
+ end
77
+
78
+ it "employees has any data (id=1,2,3)" do
79
+ employees = Employee.find([1, 2, 3])
80
+ employees.should_not be_empty
81
+ data_list = employee_data[0..2]
82
+ employees.length.should == data_list.length
83
+
84
+ data_list.each do |data|
85
+ empno, ename, job, mgr, hiredate, sal, comm, deptno = data
86
+ employee_id = data.id
87
+ employee = employees.find {|i| i.id == employee_id }
88
+
89
+ employee.should_not be_nil
90
+ employee.id.should == employee_id
91
+ validate_employee(data, employee)
92
+ end
93
+ end
94
+
95
+ it "employees has any data (order by ename desc limit 3)" do
96
+ employees = Employee.find(:all, :order => 'ename desc', :limit => 3)
97
+ data_list = employee_data.sort_by {|i| i[EMP_ENAME] || '' }.reverse[0..2]
98
+ employees.length.should == data_list.length
99
+
100
+ data_list.each do |data|
101
+ employee = employees.find {|i| i.id == data.id }
102
+ employee.should_not be_nil
103
+ validate_employee(data, employee)
104
+ end
105
+ end
106
+
107
+ it "employees has any data (order by ename desc limit 4 offset 5)" do
108
+ employees = Employee.find(:all, :order => 'ename desc', :limit => 4, :offset => 5)
109
+ employees.should_not be_empty
110
+ data_list = employee_data.sort_by {|i| i[EMP_ENAME] || '' }.reverse[5..8]
111
+ employees.length.should == data_list.length
112
+
113
+ data_list.each do |data|
114
+ employee = employees.find {|i| i.id == data.id }
115
+ employee.should_not be_nil
116
+ validate_employee(data, employee)
117
+ end
118
+ end
119
+
120
+ it "employees has any data (ename bw 'J')" do
121
+ employees = Employee.find(:all, :conditions => ['ename bw ?', 'J'])
122
+ employees.should_not be_empty
123
+ data_list = employee_data.select {|i| i[EMP_ENAME] =~ /\AJ/ }
124
+ employees.length.should == data_list.length
125
+
126
+ data_list.each do |data|
127
+ employee = employees.find {|i| i.id == data.id }
128
+ employee.should_not be_nil
129
+ validate_employee(data, employee)
130
+ end
131
+ end
132
+
133
+ it "employees has any data (ename ew 'ES')" do
134
+ employees = Employee.find(:all, :conditions => ['ename ew ?', 'ES'])
135
+ employees.should_not be_empty
136
+ data_list = employee_data.select {|i| i[EMP_ENAME] =~ /ES\Z/ }
137
+ employees.length.should == data_list.length
138
+
139
+ data_list.each do |data|
140
+ employee = employees.find {|i| i.id == data.id }
141
+ employee.should_not be_nil
142
+ validate_employee(data, employee)
143
+ end
144
+ end
145
+
146
+ it "employees has any data (ename inc 'LA')" do
147
+ employees = Employee.find(:all, :conditions => ['ename inc ?', 'LA'])
148
+ employees.should_not be_empty
149
+ data_list = employee_data.select {|i| i[EMP_ENAME] =~ /LA/ }
150
+ employees.length.should == data_list.length
151
+
152
+ data_list.each do |data|
153
+ employee = employees.find {|i| i.id == data.id }
154
+ employee.should_not be_nil
155
+ validate_employee(data, employee)
156
+ end
157
+ end
158
+
159
+ it "employees has any data (job incall ('ANALYST', 'MANAGER'))" do
160
+ employees = Employee.find(:all, :conditions => ['job incall (?)', ['ANALYST', 'MANAGER']])
161
+ employees.should_not be_empty
162
+ data_list = employee_data.select {|i| i[EMP_JOB] =~ /ANALYST/ and i[EMP_JOB] =~ /MANAGER/ }
163
+ employees.length.should == data_list.length
164
+
165
+ data_list.each do |data|
166
+ employee = employees.find {|i| i.id == data.id }
167
+ employee.should_not be_nil
168
+ validate_employee(data, employee)
169
+ end
170
+ end
171
+
172
+ it "employees has any data (job incany ('ANALYST', 'MANAGER'))" do
173
+ employees = Employee.find(:all, :conditions => ['job incany (?)', ['ANALYST', 'MANAGER']])
174
+ employees.should_not be_empty
175
+ data_list = employee_data.select {|i| i[EMP_JOB] =~ /ANALYST/ or i[EMP_JOB] =~ /MANAGER/ }
176
+ employees.length.should == data_list.length
177
+
178
+ data_list.each do |data|
179
+ employee = employees.find {|i| i.id == data.id }
180
+ employee.should_not be_nil
181
+ validate_employee(data, employee)
182
+ end
183
+ end
184
+
185
+ it "employees has any data (job in ('ANALYST', 'MANAGER'))" do
186
+ employees = Employee.find(:all, :conditions => ['job in (?)', ['ANALYST', 'MANAGER']])
187
+ employees.should_not be_empty
188
+ data_list = employee_data.select {|i| i[EMP_JOB] == 'ANALYST' or i[EMP_JOB] == 'MANAGER' }
189
+ employees.length.should == data_list.length
190
+
191
+ data_list.each do |data|
192
+ employee = employees.find {|i| i.id == data.id }
193
+ employee.should_not be_nil
194
+ validate_employee(data, employee)
195
+ end
196
+ end
197
+
198
+ it "employees has any data (empno in (7934, 7935, 7936))" do
199
+ employees = Employee.find(:all, :conditions => ['empno in (?)', [7934, 7935, 7936]])
200
+ employees.should_not be_empty
201
+ data_list = employee_data.select {|i| [7934, 7935, 7936].include?(i[EMP_EMPNO]) }
202
+ employees.length.should == data_list.length
203
+
204
+ data_list.each do |data|
205
+ employee = employees.find {|i| i.id == data.id }
206
+ employee.should_not be_nil
207
+ validate_employee(data, employee)
208
+ end
209
+ end
210
+
211
+ it "employees has any data (job anyone ('ANALYST', 'MANAGER'))" do
212
+ employees = Employee.find(:all, :conditions => ['job anyone (?)', ['ANALYST', 'MANAGER']])
213
+ employees.should_not be_empty
214
+ data_list = employee_data.select {|i| i[EMP_JOB] == 'ANALYST' or i[EMP_JOB] == 'MANAGER' }
215
+ employees.length.should == data_list.length
216
+
217
+ data_list.each do |data|
218
+ employee = employees.find {|i| i.id == data.id }
219
+ employee.should_not be_nil
220
+ validate_employee(data, employee)
221
+ end
222
+ end
223
+
224
+ it "employees has any data (ename regexp '^J[AO].+$')" do
225
+ employees = Employee.find(:all, :conditions => ['ename regexp ?', '^J[AO].+$'])
226
+ employees.should_not be_empty
227
+ data_list = employee_data.select {|i| i[EMP_ENAME] =~ /\AJ[AO].+\Z/ }
228
+ employees.length.should == data_list.length
229
+
230
+ data_list.each do |data|
231
+ employee = employees.find {|i| i.id == data.id }
232
+ employee.should_not be_nil
233
+ validate_employee(data, employee)
234
+ end
235
+ end
236
+
237
+ it "employees has any data (ename fts 'MI')" do
238
+ employees = Employee.find(:all, :conditions => ['ename fts ?', 'MI'])
239
+ employees.should_not be_empty
240
+ data_list = employee_data.select {|i| i[EMP_ENAME] =~ /MI/ }
241
+ employees.length.should == data_list.length
242
+
243
+ data_list.each do |data|
244
+ employee = employees.find {|i| i.id == data.id }
245
+ employee.should_not be_nil
246
+ validate_employee(data, employee)
247
+ end
248
+ end
249
+
250
+ it "employees has any data (ename ftsand 'HATSUNE MIKU')" do
251
+ # XXX:
252
+ employees = Employee.find(:all, :conditions => ['ename ftsand ?', 'HATSUNE MIKU'])
253
+ employees = Employee.find(:all, :conditions => ['ename ftsand (?)', ['HATSUNE', 'MIKU']])
254
+ end
255
+
256
+ it "employees has any data (hiredate ftsor '1983 DEC')" do
257
+ # XXX:
258
+ employees = Employee.find(:all, :conditions => ['hiredate ftsor ?', '1983 DEC'])
259
+ employees = Employee.find(:all, :conditions => ['hiredate ftsor (?)', ['1983', 'DEC']])
260
+ end
261
+
262
+ it "employees has any data (ename ftsex 'MIKU || RIN')" do
263
+ employees = Employee.find(:all, :conditions => ['ename ftsex ?', 'MIKU || RIN'])
264
+ employees.should_not be_empty
265
+ data_list = employee_data.select {|i| i[EMP_ENAME] =~ /MIKU/ or i[EMP_ENAME] =~ /RIN/ }
266
+ employees.length.should == data_list.length
267
+
268
+ data_list.each do |data|
269
+ employee = employees.find {|i| i.id == data.id }
270
+ employee.should_not be_nil
271
+ validate_employee(data, employee)
272
+ end
273
+ end
274
+
275
+ it "employees has any data (ename ftsex 'HATSUNE && MIKU')" do
276
+ employees = Employee.find(:all, :conditions => ['ename ftsex ?', 'HATSUNE && MIKU'])
277
+ employees.should_not be_empty
278
+ data_list = employee_data.select {|i| i[EMP_ENAME] =~ /HATSUNE/ and i[EMP_ENAME] =~ /MIKU/ }
279
+ employees.length.should == data_list.length
280
+
281
+ data_list.each do |data|
282
+ employee = employees.find {|i| i.id == data.id }
283
+ employee.should_not be_nil
284
+ validate_employee(data, employee)
285
+ end
286
+ end
287
+
288
+ it "employees has any data ([])" do
289
+ employee_data.each do |data|
290
+ empno, ename, job, mgr, hiredate, sal, comm, deptno = data
291
+ employee_id = data.id
292
+ employee = Employee.find(employee_id)
293
+
294
+ employee.should_not be_nil
295
+ employee[:id].should == employee_id
296
+ employee[:empno].should == empno.to_s
297
+ employee[:ename].should == ename.to_s
298
+ employee[:job].should == job.to_s
299
+ employee[:mgr].should == mgr.to_s
300
+ employee[:hiredate].should == hiredate.to_s
301
+ employee[:sal].should == sal.to_s
302
+ employee[:comm].should == comm.to_s
303
+ employee[:deptno].should == deptno.to_s
304
+ end
305
+ end
306
+
307
+ # -------------------------------------------------------------------
308
+
309
+ it "departments length > 0" do
310
+ departments = Department.find(:all)
311
+ departments.length.should == department_data.length
312
+ end
313
+
314
+ it "departments has a one data (dname = 'SALES')" do
315
+ departments = Department.find(:all, :conditions => ['dname = ?', 'SALES'])
316
+ departments.length.should == 1
317
+ data = department_data.find {|i| i[DEPT_DNAME] == 'SALES' }
318
+ validate_department(data, departments[0])
319
+ end
320
+
321
+ it "departments has a one data (deptno = 20)" do
322
+ departments = Department.find(:all, :conditions => ['deptno = ?', 20])
323
+ departments.length.should == 1
324
+ data = department_data.find {|i| i[DEPT_DEPTNO] == 20 }
325
+ validate_department(data, departments[0])
326
+ end
327
+
328
+ it "departments has no data (deptno = 20 and loc = 'BOSTON')" do
329
+ departments = Department.find(:all, :conditions => ['deptno = ? and loc = ?', 20, 'BOSTON'])
330
+ departments.should be_empty
331
+ end
332
+
333
+ it "departments has a one data (deptno = 40 and loc = 'BOSTON')" do
334
+ departments = Department.find(:all, :conditions => ['deptno = ? and loc = ?', 40, 'BOSTON'])
335
+ departments.length.should == 1
336
+ data = department_data.find {|i| i[DEPT_DEPTNO] == 40 and i[DEPT_LOC] == 'BOSTON' }
337
+ validate_department(data, departments[0])
338
+ end
339
+
340
+ it "departments has a one data ({:deptno => 40. :loc => 'BOSTON'})" do
341
+ departments = Department.find(:all, :conditions => {:deptno => 40, :loc => 'BOSTON'})
342
+ departments.length.should == 1
343
+ data = department_data.find {|i| i[DEPT_DEPTNO] == 40 and i[DEPT_LOC] == 'BOSTON' }
344
+ validate_department(data, departments[0])
345
+ end
346
+
347
+ it "departments has any data" do
348
+ department_data.each do |data|
349
+ department_id = data.id
350
+ department = Department.find(department_id)
351
+
352
+ department.should_not be_nil
353
+ department.id.should == department_id
354
+ validate_department(data, department)
355
+ end
356
+ end
357
+
358
+ it "departments has any data ([])" do
359
+ department_data.each do |data|
360
+ deptno, dname, loc = data
361
+ department_id = data.id
362
+ department = Department.find(department_id)
363
+
364
+ department.should_not be_nil
365
+ department[:id].should == department_id
366
+ department[:deptno].should == deptno.to_s
367
+ department[:dname].should == dname.to_s
368
+ department[:loc].should == loc.to_s
369
+ end
370
+ end
371
+
372
+ it "department has any data (loc in ('NEW YORK', 'CHICAGO'))" do
373
+ departments = Department.find(:all, :conditions => ['loc in (?)', ['NEW YORK', 'CHICAGO']])
374
+ departments.should_not be_empty
375
+
376
+ departments.each do |department|
377
+ data = department_data[department.id - 1]
378
+
379
+ data.should_not be_nil
380
+ validate_department(data, department)
381
+ end
382
+ end
383
+
384
+ it "department has any data ({:loc => ['NEW YORK', 'CHICAGO']})" do
385
+ departments = Department.find(:all, :conditions => {:loc => ['NEW YORK', 'CHICAGO']})
386
+ departments.should_not be_empty
387
+
388
+ departments.each do |department|
389
+ data = department_data[department.id - 1]
390
+
391
+ data.should_not be_nil
392
+ ['NEW YORK', 'CHICAGO'].should include(data[DEPT_LOC])
393
+ validate_department(data, department)
394
+ end
395
+ end
396
+
397
+ it "departments has any data (id=1,2,3)" do
398
+ departments = Department.find([1, 2, 3])
399
+ departments.should_not be_empty
400
+ data_list = department_data[0..2]
401
+ departments.length.should == data_list.length
402
+
403
+ data_list.each do |data|
404
+ deptno, dname, loc = data
405
+ department_id = data.id
406
+ department = departments.find {|i| i.id == department_id }
407
+
408
+ department.should_not be_nil
409
+ validate_department(data, department)
410
+ end
411
+ end
412
+
413
+ it "departments has any data (order by deptno numdesc limit 65535 offset 1)" do
414
+ departments = Department.find(:all, :order => 'deptno numdesc', :limit => 65535, :offset => 1)
415
+ departments.should_not be_empty
416
+ data_list = department_data.sort_by {|i| i[DEPT_DEPTNO] || 0 }.reverse[1..-1]
417
+ departments.length.should == data_list.length
418
+
419
+ data_list.each do |data|
420
+ department = departments.find {|i| i.id == data.id }
421
+ department.should_not be_nil
422
+ validate_department(data, department)
423
+ end
424
+ end
425
+
426
+ it "departments has any data (order by deptno numasc)" do
427
+ departments = Department.find(:all, :order => 'deptno numasc')
428
+ departments.should_not be_empty
429
+ data_list = department_data.sort_by {|i| i[DEPT_DEPTNO] || 0 }
430
+ departments.length.should == data_list.length
431
+
432
+ data_list.each do |data|
433
+ department = departments.find {|i| i.id == data.id }
434
+ department.should_not be_nil
435
+ validate_department(data, department)
436
+ end
437
+ end
438
+
439
+ it "departments has any data (deptno between 20 and 30)" do
440
+ departments = Department.find(:all, :conditions => ['deptno between ? and ?', 20, 30])
441
+ departments.should_not be_empty
442
+ data_list = department_data.select {|i| i[DEPT_DEPTNO] and 20 <= i[DEPT_DEPTNO] and i[DEPT_DEPTNO] <= 30 }
443
+ departments.length.should == data_list.length
444
+
445
+ data_list.each do |data|
446
+ department = departments.find {|i| i.id == data.id }
447
+ department.should_not be_nil
448
+ validate_department(data, department)
449
+ end
450
+ end
451
+
452
+ it "departments has any data (deptno bt (?) [20, 30])" do
453
+ departments = Department.find(:all, :conditions => ['deptno bt (?)', [20, 30]])
454
+ departments.should_not be_empty
455
+ data_list = department_data.select {|i| i[DEPT_DEPTNO] and 20 <= i[DEPT_DEPTNO] and i[DEPT_DEPTNO] <= 30 }
456
+ departments.length.should == data_list.length
457
+
458
+ data_list.each do |data|
459
+ department = departments.find {|i| i.id == data.id }
460
+ department.should_not be_nil
461
+ validate_department(data, department)
462
+ end
463
+ end
464
+
465
+ it "departments has any data (deptno bt (?, ?) [20, 30])" do
466
+ departments = Department.find(:all, :conditions => ['deptno bt (?, ?)', 20, 30])
467
+ departments.should_not be_empty
468
+ data_list = department_data.select {|i| i[DEPT_DEPTNO] and 20 <= i[DEPT_DEPTNO] and i[DEPT_DEPTNO] <= 30 }
469
+ departments.length.should == data_list.length
470
+
471
+ data_list.each do |data|
472
+ department = departments.find {|i| i.id == data.id }
473
+ department.should_not be_nil
474
+ validate_department(data, department)
475
+ end
476
+ end
477
+
478
+ after do
479
+ TokyoTyrantSpec.clean
480
+ end
481
+ end