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 16 public class PostgreSqlSqlHandlerTest extends TestCase { 17 18 19 private PostgreSqlSqlHandler 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 PostgreSqlSqlHandlerTest(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 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 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_OPTIMAL); 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 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 |