KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > storage > search > implementation > database > InformixSqlHandlerTest


1 package org.mmbase.storage.search.implementation.database;
2
3 import junit.framework.*;
4 import org.mmbase.module.core.*;
5 import org.mmbase.module.corebuilders.FieldDefs;
6 import org.mmbase.storage.search.implementation.database.InformixSqlHandler;
7 import org.mmbase.storage.search.*;
8 import org.mmbase.storage.search.implementation.*;
9
10 /**
11  * JUnit tests.
12  *
13  * @author Rob van Maris
14  * @version $Revision: 1.6 $
15  */

16 public class InformixSqlHandlerTest extends TestCase {
17
18     /** Test instance. */
19     private InformixSqlHandler instance;
20
21     /** Prefix applied to buildernames to create tablenames. */
22     private String JavaDoc prefix = null;
23
24     /** MMBase query. */
25     private MMBase mmbase = null;
26
27     /** Images builder, used as builder example. */
28     private MMObjectBuilder images = null;
29
30     /** Test query. */
31     private BasicSearchQuery query = null;
32
33     public InformixSqlHandlerTest(java.lang.String JavaDoc testName) {
34         super(testName);
35     }
36
37     public static void main(java.lang.String JavaDoc[] args) {
38         junit.textui.TestRunner.run(suite());
39     }
40
41     /**
42      * Sets up before each test.
43      */

44     public void setUp() throws Exception JavaDoc {
45         MMBaseContext.init();
46         mmbase = MMBase.getMMBase();
47         images = mmbase.getBuilder("images");
48
49         instance = new InformixSqlHandler();
50
51         prefix = mmbase.getBaseName() + "_";
52
53         query = new BasicSearchQuery();
54         BasicStep imageStep = query.addStep(images);
55         FieldDefs imageNumber = images.getField("number");
56         BasicStepField imageNumberField = query.addField(imageStep, imageNumber);
57         Constraint constraint = new BasicFieldNullConstraint(imageNumberField);
58         query.setConstraint(constraint);
59     }
60
61     /**
62      * Tears down after each test.
63      */

64     public void tearDown() throws Exception JavaDoc {}
65
66     /** Test of getSupportLevel(int,SearchQuery) method, of class org.mmbase.storage.search.implementation.database.InformixSqlHandler. */
67     public void testGetSupportLevel() throws Exception JavaDoc {
68         // Support max number.
69
assertTrue(instance.getSupportLevel(SearchQueryHandler.FEATURE_MAX_NUMBER, query) == SearchQueryHandler.SUPPORT_OPTIMAL);
70         query.setMaxNumber(100);
71         assertTrue(instance.getSupportLevel(SearchQueryHandler.FEATURE_MAX_NUMBER, query) == SearchQueryHandler.SUPPORT_OPTIMAL);
72         query.setMaxNumber(-1);
73         assertTrue(instance.getSupportLevel(SearchQueryHandler.FEATURE_MAX_NUMBER, query) == SearchQueryHandler.SUPPORT_OPTIMAL);
74
75         // Support offset only when set to default (= 0).
76
assertTrue(instance.getSupportLevel(SearchQueryHandler.FEATURE_OFFSET, query) == SearchQueryHandler.SUPPORT_OPTIMAL);
77         query.setOffset(100);
78         assertTrue(instance.getSupportLevel(SearchQueryHandler.FEATURE_OFFSET, query) == SearchQueryHandler.SUPPORT_NONE);
79         query.setOffset(0);
80         assertTrue(instance.getSupportLevel(SearchQueryHandler.FEATURE_OFFSET, query) == SearchQueryHandler.SUPPORT_OPTIMAL);
81     }
82
83     /** Test of getSupportLevel(Constraint,SearchQuery) method, of class org.mmbase.storage.search.implementation.database.InformixSqlHandler. */
84     public void testGetSupportLevel2() throws Exception JavaDoc {
85         // Should return basic support level of constraint.
86
SearchQuery query = new BasicSearchQuery();
87         Constraint constraint = new TestConstraint(SearchQueryHandler.SUPPORT_NONE);
88         assertTrue(instance.getSupportLevel(constraint, query) == SearchQueryHandler.SUPPORT_NONE);
89         constraint = new TestConstraint(SearchQueryHandler.SUPPORT_WEAK);
90         assertTrue(instance.getSupportLevel(constraint, query) == SearchQueryHandler.SUPPORT_WEAK);
91         constraint = new TestConstraint(SearchQueryHandler.SUPPORT_NORMAL);
92         assertTrue(instance.getSupportLevel(constraint, query) == SearchQueryHandler.SUPPORT_NORMAL);
93         constraint = new TestConstraint(SearchQueryHandler.SUPPORT_OPTIMAL);
94         assertTrue(instance.getSupportLevel(constraint, query) == SearchQueryHandler.SUPPORT_OPTIMAL);
95     }
96
97     /** Test of toSql method, of class org.mmbase.storage.search.implementation.database.InformixSqlHandler. */
98     public void testToSql() throws Exception JavaDoc {
99         // Test use of "FIRST" construct.
100
assertTrue(instance.toSql(query, instance),
101         instance.toSql(query, instance).equalsIgnoreCase("SELECT number FROM " + prefix + "images IMAGES WHERE number IS NULL"));
102
103         query.setMaxNumber(100);
104         assertTrue(instance.toSql(query, instance),
105         instance.toSql(query, instance).equalsIgnoreCase("SELECT FIRST 100 number FROM " + prefix + "images IMAGES WHERE number IS NULL"));
106
107         // Distinct keyword avoided in aggregating query.
108
query = new BasicSearchQuery(true);
109         BasicStep step1 = query.addStep(images).setAlias(null);
110         FieldDefs imagesTitle = images.getField("title");
111         query.addAggregatedField(step1, imagesTitle, AggregatedField.AGGREGATION_TYPE_COUNT).setAlias(null);
112         query.setDistinct(true);
113         String JavaDoc strSql = instance.toSql(query, instance);
114         assertTrue(strSql, strSql.equalsIgnoreCase("SELECT COUNT(TITLE) FROM " + prefix + "images IMAGES"));
115     }
116
117     public static Test suite() {
118         TestSuite suite = new TestSuite(InformixSqlHandlerTest.class);
119
120         return suite;
121     }
122
123 }
124
Popular Tags