01: /* Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com
02:
03: This file is part of the db4o open source object database.
04:
05: db4o is free software; you can redistribute it and/or modify it under
06: the terms of version 2 of the GNU General Public License as published
07: by the Free Software Foundation and as clarified by db4objects' GPL
08: interpretation policy, available at
09: http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
10: Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
11: Suite 350, San Mateo, CA 94403, USA.
12:
13: db4o is distributed in the hope that it will be useful, but WITHOUT ANY
14: WARRANTY; without even the implied warranty of MERCHANTABILITY or
15: FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16: for more details.
17:
18: You should have received a copy of the GNU General Public License along
19: with this program; if not, write to the Free Software Foundation, Inc.,
20: 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
21: package com.db4o.test.conjunctions;
22:
23: import com.db4o.*;
24: import com.db4o.query.*;
25: import com.db4o.test.*;
26:
27: public class CJChildField implements CJHasID {
28:
29: public CJChild _child;
30:
31: public int _id;
32:
33: public CJChildField() {
34: }
35:
36: public CJChildField(int id) {
37: _id = id;
38: _child = new CJChild(_id);
39: }
40:
41: public void store() {
42: Test.deleteAllInstances(CJChildField.class);
43: for (int i = 0; i < 20; i++) {
44: store(i);
45: }
46: }
47:
48: public void configure() {
49: Db4o.configure().objectClass(this ).objectField("_child")
50: .indexed(true);
51: Db4o.configure().objectClass(CJChild.class).objectField("_id")
52: .indexed(true);
53: }
54:
55: private void store(int i) {
56: Test.store(new CJChildField(i));
57: }
58:
59: public void test() {
60:
61: Query q = Test.query();
62: q.constrain(this .getClass());
63: Query qId = q.descend("_child").descend("_id");
64: qId.constrain(new Integer(1)).greater();
65: qId.constrain(new Integer(2)).smaller().equal();
66: ConjunctionsTestSuite.expect(q, new int[] { 2 });
67:
68: q = Test.query();
69: q.constrain(this .getClass());
70: qId = q.descend("_child").descend("_id");
71: qId.constrain(new Integer(0)).greater();
72: qId.constrain(new Integer(1)).greater();
73: qId.constrain(new Integer(2)).smaller().equal();
74: qId.constrain(new Integer(3)).smaller().equal();
75: qId.constrain(new Integer(4)).smaller().equal();
76: ConjunctionsTestSuite.expect(q, new int[] { 2 });
77:
78: store(1);
79:
80: q = Test.query();
81: q.constrain(this .getClass());
82: qId = q.descend("_child").descend("_id");
83: qId.constrain(new Integer(1)).smaller().equal();
84: ConjunctionsTestSuite.expect(q, new int[] { 0, 1, 1 });
85:
86: }
87:
88: public int getID() {
89: return _id;
90: }
91:
92: }
|