/******************************************************************************* * Copyright (c) 2007 Symbian Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Andrew Ferguson (Symbian) - Initial implementation * Markus Schorn (Wind River Systems) *******************************************************************************/ package org.eclipse.cdt.internal.pdom.tests; import java.io.File; import java.util.Iterator; import java.util.Properties; import junit.framework.Test; import org.eclipse.cdt.core.testplugin.util.BaseTestCase; import org.eclipse.cdt.internal.core.pdom.db.ChunkCache; import org.eclipse.cdt.internal.core.pdom.db.DBProperties; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.core.runtime.CoreException; /** * Sanity check the DBProperties class */ public class DBPropertiesTests extends BaseTestCase { File dbLoc; Database db; public static Test suite() { return suite(DBPropertiesTests.class); } protected void setUp() throws Exception { dbLoc = File.createTempFile("test", "db"); dbLoc.deleteOnExit(); db = new Database(dbLoc, new ChunkCache(), 0, false); db.setExclusiveLock(); } protected void tearDown() throws Exception { db.close(); } public void testBasic() throws CoreException { DBProperties properties = new DBProperties(db); Properties expected = System.getProperties(); for(Iterator i = expected.keySet().iterator(); i.hasNext(); ) { String key = (String) i.next(); String value = expected.getProperty(key); if(value!=null) { properties.setProperty(key, value); } } for(Iterator i = expected.keySet().iterator(); i.hasNext(); ) { String key = (String) i.next(); String aValue = properties.getProperty(key); assertEquals(expected.getProperty(key), aValue); } for(Iterator i = expected.keySet().iterator(); i.hasNext(); ) { String key = (String) i.next(); properties.removeProperty(key); } assertEquals(0, properties.getKeySet().size()); properties.delete(); } public void testLong() throws Exception { DBProperties ps = new DBProperties(db); StringBuffer largeValue = new StringBuffer(); for(int i=0; i<Database.CHUNK_SIZE*2; i+=64) { largeValue.append("********"); ps.setProperty("key", largeValue.toString()); ps.setProperty(largeValue.toString(), "value"); } assertEquals(largeValue.toString(), ps.getProperty("key")); assertEquals("value", ps.getProperty(largeValue.toString())); ps.delete(); } public void testNulls() throws Exception { DBProperties ps= new DBProperties(db); try { ps.setProperty(null, "val1"); fail("NullPointerException expected"); } catch(NullPointerException e) { } catch(AssertionError e) { } try { ps.setProperty("key", null); fail("NullPointerException expected"); } catch(NullPointerException e) { } catch(AssertionError e) { } try { ps.setProperty(null, null); fail("NullPointerException expected"); } catch(NullPointerException e) { } catch(AssertionError e) { } assertFalse(ps.removeProperty(null)); assertNull(ps.getProperty(null)); String s= ""+System.currentTimeMillis(); assertEquals(s, ps.getProperty(null,s)); } public void testSeq() throws Exception { DBProperties ps = new DBProperties(db); ps.setProperty("a", "b"); assertEquals("b", ps.getProperty("a")); assertEquals(1, ps.getKeySet().size()); ps.setProperty("b", "c"); assertEquals("c", ps.getProperty("b")); assertEquals(2, ps.getKeySet().size()); ps.setProperty("a", "c"); assertEquals("c", ps.getProperty("a")); assertEquals(2, ps.getKeySet().size()); boolean deleted = ps.removeProperty("c"); assertEquals(false, deleted); assertEquals(2, ps.getKeySet().size()); deleted = ps.removeProperty("a"); assertEquals(true, deleted); assertEquals(1, ps.getKeySet().size()); ps.delete(); } }