KickJava   Java API By Example, From Geeks To Geeks.

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


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

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

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

65     public void tearDown() throws Exception JavaDoc {}
66
67     /** Test of getSupportLevel(int,SearchQuery) method, of class org.mmbase.storage.search.implementation.database.MySqlSqlHandler. */
68     public void testGetSupportLevel() throws Exception JavaDoc {
69         // Support max number.
70
assertTrue(instance.getSupportLevel(SearchQueryHandler.FEATURE_MAX_NUMBER, query)
71         == SearchQueryHandler.SUPPORT_OPTIMAL);
72         query.setMaxNumber(100);
73         assertTrue(instance.getSupportLevel(SearchQueryHandler.FEATURE_MAX_NUMBER, query)
74         == SearchQueryHandler.SUPPORT_OPTIMAL);
75         query.setMaxNumber(-1);
76         assertTrue(instance.getSupportLevel(SearchQueryHandler.FEATURE_MAX_NUMBER, query)
77         == SearchQueryHandler.SUPPORT_OPTIMAL);
78
79         // Support offset.
80
assertTrue(instance.getSupportLevel(SearchQueryHandler.FEATURE_OFFSET, query)
81         == SearchQueryHandler.SUPPORT_OPTIMAL);
82         query.setOffset(100);
83         assertTrue(instance.getSupportLevel(SearchQueryHandler.FEATURE_OFFSET, query)
84         == SearchQueryHandler.SUPPORT_OPTIMAL);
85         query.setOffset(0);
86         assertTrue(instance.getSupportLevel(SearchQueryHandler.FEATURE_OFFSET, query)
87         == SearchQueryHandler.SUPPORT_OPTIMAL);
88     }
89
90     /** Test of getSupportLevel2(Constraint,SearchQuery) method, of class org.mmbase.storage.search.implementation.database.MySqlSqlHandler. */
91     public void testGetSupportLevel2() throws Exception JavaDoc {
92         // Should return basic support level of constraint.
93
SearchQuery query = new BasicSearchQuery();
94         Constraint constraint = new TestConstraint(SearchQueryHandler.SUPPORT_NONE);
95         assertTrue(instance.getSupportLevel(constraint, query) == SearchQueryHandler.SUPPORT_NONE);
96         constraint = new TestConstraint(SearchQueryHandler.SUPPORT_WEAK);
97         assertTrue(instance.getSupportLevel(constraint, query) == SearchQueryHandler.SUPPORT_WEAK);
98         constraint = new TestConstraint(SearchQueryHandler.SUPPORT_NORMAL);
99         assertTrue(instance.getSupportLevel(constraint, query) == SearchQueryHandler.SUPPORT_NORMAL);
100         constraint = new TestConstraint(SearchQueryHandler.SUPPORT_OPTIMAL);
101         assertTrue(instance.getSupportLevel(constraint, query) == SearchQueryHandler.SUPPORT_OPTIMAL);
102     }
103
104     /** Test of toSql method, of class org.mmbase.storage.search.implementation.database.MySqlSqlHandler. */
105     public void testToSql() throws Exception JavaDoc {
106         // Test use of "LIMIT" construct.
107
assertTrue(instance.toSql(query, instance),
108         instance.toSql(query, instance).equalsIgnoreCase("SELECT number FROM " + prefix + "images IMAGES WHERE number IS NULL"));
109
110         query.setMaxNumber(100);
111         assertTrue(instance.toSql(query, instance),
112         instance.toSql(query, instance).equalsIgnoreCase("SELECT number FROM " + prefix + "images IMAGES WHERE number IS NULL LIMIT 100"));
113
114         query.setOffset(50);
115         assertTrue(instance.toSql(query, instance),
116         instance.toSql(query, instance).equalsIgnoreCase("SELECT number FROM " + prefix + "images IMAGES WHERE number IS NULL LIMIT 50,100"));
117
118         query.setMaxNumber(-1);
119         assertTrue(instance.toSql(query, instance),
120         instance.toSql(query, instance).equalsIgnoreCase("SELECT number FROM " + prefix + "images IMAGES WHERE number IS NULL LIMIT 50," + Integer.MAX_VALUE));
121     }
122
123     public static Test suite() {
124         TestSuite suite = new TestSuite(MySqlSqlHandlerTest.class);
125
126         return suite;
127     }
128
129 }
130
Popular Tags