KickJava   Java API By Example, From Geeks To Geeks.

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


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

16 public class PostgreSqlSqlHandlerTest extends TestCase {
17
18     /** Test instance. */
19     private PostgreSqlSqlHandler 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 PostgreSqlSqlHandlerTest(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 PostgreSqlSqlHandler();
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 method, of class org.mmbase.storage.search.implementation.database.PostgreSqlSqlHandler. */
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.
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_OPTIMAL);
79         query.setOffset(0);
80         assertTrue(instance.getSupportLevel(SearchQueryHandler.FEATURE_OFFSET, query) == SearchQueryHandler.SUPPORT_OPTIMAL);
81     }
82
83     /** Test of getSupportLevel2(Constraint,SearchQuery) method, of class org.mmbase.storage.search.implementation.database.PostgreSqlSqlHandler. */
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.PostgreSqlSqlHandler. */
98     public void testToSql() throws Exception JavaDoc {
99         // Test use of "LIMIT/OFFSET" 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 NUMBER FROM " + prefix + "images IMAGES WHERE NUMBER IS NULL LIMIT 100"));
106
107         query.setOffset(50);
108         assertTrue(instance.toSql(query, instance),
109                    instance.toSql(query, instance).equalsIgnoreCase("SELECT NUMBER FROM " + prefix + "images IMAGES WHERE NUMBER IS NULL LIMIT 100 OFFSET 50"));
110         
111         query.setMaxNumber(-1);
112         assertTrue(instance.toSql(query, instance),
113                    instance.toSql(query, instance).equalsIgnoreCase("SELECT NUMBER FROM " + prefix + "images IMAGES WHERE NUMBER IS NULL OFFSET 50"));
114     }
115
116     public static Test suite() {
117         TestSuite suite = new TestSuite(PostgreSqlSqlHandlerTest.class);
118
119         return suite;
120     }
121
122 }
123
Popular Tags