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 17 public class MySqlSqlHandlerTest extends TestCase { 18 19 20 private MySqlSqlHandler instance; 21 22 23 private String prefix = null; 24 25 26 private MMBase mmbase = null; 27 28 29 private MMObjectBuilder images = null; 30 31 32 private BasicSearchQuery query = null; 33 34 public MySqlSqlHandlerTest(java.lang.String testName) { 35 super(testName); 36 } 37 38 public static void main(java.lang.String [] args) { 39 TestRunner.run(suite()); 40 } 41 42 45 public void setUp() throws Exception { 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 65 public void tearDown() throws Exception {} 66 67 68 public void testGetSupportLevel() throws Exception { 69 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 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 91 public void testGetSupportLevel2() throws Exception { 92 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 105 public void testToSql() throws Exception { 106 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 |