1 package org.melati.poem.test;
2
3 import java.util.Enumeration;
4
5 import org.melati.poem.CachedTailoredQuery;
6 import org.melati.poem.Column;
7 import org.melati.poem.Field;
8 import org.melati.poem.FieldSet;
9 import org.melati.poem.Table;
10 import org.melati.poem.util.EnumUtils;
11
12
13
14
15 public class CachedTailoredQueryTest extends PoemTestCase {
16
17
18
19
20
21
22 public CachedTailoredQueryTest(String name) {
23 super(name);
24 }
25
26
27
28
29
30 protected void setUp()
31 throws Exception {
32 super.setUp();
33 }
34
35
36
37
38
39 protected void tearDown()
40 throws Exception {
41 super.tearDown();
42 }
43
44
45
46
47 public void testSelection() {
48
49 }
50
51
52
53
54
55
56 public void testSelection_firstRaw() {
57 Column<?>[] cols = new Column[1];
58 cols[0] = getDb().getTableCategoryTable().troidColumn();
59
60 Table<?>[] tables = new Table[1];
61 tables[0] = getDb().getTableCategoryTable();
62
63 int queries = getDb().getQueryCount();
64 CachedTailoredQuery ctq = new CachedTailoredQuery(cols,
65 tables,
66 null,
67 null);
68 int queries2 = getDb().getQueryCount();
69 assertEquals(queries, queries2);
70 assertEquals(3,EnumUtils.vectorOf(ctq.selection_firstRaw()).size());
71 int queries3 = getDb().getQueryCount();
72
73
74 assertEquals(3,EnumUtils.vectorOf(ctq.selection_firstRaw()).size());
75 int queries4 = getDb().getQueryCount();
76 assertEquals(queries3, queries4);
77
78 }
79
80
81
82
83 public void testCachedTailoredQueryStringColumnArrayTableArrayStringString() {
84 Column<?>[] colsInQuery = new Column[2];
85 colsInQuery[0] = getDb().getGroupTable().getColumn("name");
86 colsInQuery[1] = getDb().getGroupTable().troidColumn();
87 Table<?>[] tables = new Table[1];
88 tables[0] = getDb().getGroupTable();
89
90 int queries = getDb().getQueryCount();
91 CachedTailoredQuery ctq = new CachedTailoredQuery(colsInQuery,
92 tables,
93 null,
94 null);
95 int queries2 = getDb().getQueryCount();
96 assertEquals(queries, queries2);
97
98 getDb().setLogSQL(true);
99
100 Enumeration<FieldSet> results = ctq.selection();
101 while (results.hasMoreElements()) {
102 results.nextElement();
103 }
104 results = ctq.selection();
105 assertEquals(1,EnumUtils.vectorOf(results).size());
106 while (results.hasMoreElements()) {
107 results.nextElement();
108 }
109 getDb().setLogSQL(false);
110
111 int queries3 = getDb().getQueryCount();
112
113
114 int numberOfCachedTableinfoRecords = 0;
115 Enumeration<Object> r = getDb().getTableInfoTable().getCacheInfo().getHeldElements();
116 while(r.hasMoreElements()){
117 r.nextElement();
118 numberOfCachedTableinfoRecords++;
119 }
120 System.err.println("TableInfo records:" + numberOfCachedTableinfoRecords);
121 assertEquals(9,numberOfCachedTableinfoRecords);
122 int numberOfCachedGroupRecords = 0;
123 Enumeration<Object> g = getDb().getGroupTable().getCacheInfo().getHeldElements();
124 while(g.hasMoreElements()){
125 g.nextElement();
126 numberOfCachedGroupRecords++;
127 }
128 assertEquals(1,numberOfCachedGroupRecords);
129 assertEquals(1,EnumUtils.vectorOf(ctq.selection()).size());
130 int queries4 = getDb().getQueryCount();
131 assertEquals(queries3, queries4);
132
133 System.err.println(ctq.toString());
134 Enumeration<FieldSet> en = ctq.selection();
135 while (en.hasMoreElements()) {
136 FieldSet fs = (FieldSet) en.nextElement();
137 Enumeration<Field<?>> fields = fs.elements();
138 System.err.println("--");
139 while (fields.hasMoreElements()) {
140 Field<?> f = (Field<?>) fields.nextElement();
141 System.err.println(f.getName() + "=" + f.getRawString());
142 }
143
144 }
145 System.err.println("==");
146 CachedTailoredQuery ctqDistinct = new CachedTailoredQuery("DISTINCT", colsInQuery,
147 tables, null,
148 null);
149 assertEquals(1,EnumUtils.vectorOf(ctqDistinct.selection()).size());
150 System.err.println(ctqDistinct.toString());
151 Enumeration<FieldSet> en2 = ctqDistinct.selection();
152 while (en2.hasMoreElements()) {
153 FieldSet fs = (FieldSet) en2.nextElement();
154 Enumeration<Field<?>> fields = fs.elements();
155 System.err.println("--");
156 while (fields.hasMoreElements()) {
157 Field<?> f = (Field<?>) fields.nextElement();
158 System.err.println(f.getName() + "=" + f.getRawString());
159 }
160 }
161 CachedTailoredQuery ctqOthers = new CachedTailoredQuery("DISTINCT", colsInQuery,
162 tables, "id=0",
163 null);
164 assertEquals(1,EnumUtils.vectorOf(ctqOthers.selection()).size());
165 }
166
167
168
169
170
171 public void testCachedTailoredQueryColumnArrayTableArrayStringString() {
172
173 }
174
175
176
177
178 public void testUpToDate() {
179
180 }
181
182 }