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 16 public class InformixSqlHandlerTest extends TestCase { 17 18 19 private InformixSqlHandler instance; 20 21 22 private String prefix = null; 23 24 25 private MMBase mmbase = null; 26 27 28 private MMObjectBuilder images = null; 29 30 31 private BasicSearchQuery query = null; 32 33 public InformixSqlHandlerTest(java.lang.String testName) { 34 super(testName); 35 } 36 37 public static void main(java.lang.String [] args) { 38 junit.textui.TestRunner.run(suite()); 39 } 40 41 44 public void setUp() throws Exception { 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 64 public void tearDown() throws Exception {} 65 66 67 public void testGetSupportLevel() throws Exception { 68 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 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 84 public void testGetSupportLevel2() throws Exception { 85 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 98 public void testToSql() throws Exception { 99 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 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 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 |