[freenet-cvs] r13819 - trunk/freenet/test/freenet/support

sback at freenetproject.org sback at freenetproject.org
Thu Jun 28 21:40:10 UTC 2007


Author: sback
Date: 2007-06-28 21:40:10 +0000 (Thu, 28 Jun 2007)
New Revision: 13819

Modified:
   trunk/freenet/test/freenet/support/SimpleFieldSetTest.java
Log:
Whole Iterator tested

Modified: trunk/freenet/test/freenet/support/SimpleFieldSetTest.java
===================================================================
--- trunk/freenet/test/freenet/support/SimpleFieldSetTest.java	2007-06-28 21:05:30 UTC (rev 13818)
+++ trunk/freenet/test/freenet/support/SimpleFieldSetTest.java	2007-06-28 21:40:10 UTC (rev 13819)
@@ -16,7 +16,10 @@
 
 package freenet.support;
 
+import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.StringReader;
+import java.util.Iterator;
 
 import freenet.node.FSParseException;
 import junit.framework.TestCase;
@@ -28,8 +31,15 @@
  */
 public class SimpleFieldSetTest extends TestCase {
 
-	private static final char KEY_VALUE_SEPARATOR = '='; 
+	private static final char KEY_VALUE_SEPARATOR = '=';
 	
+	private static final String[][] SAMPLE_STRING_PAIRS = 
+		{  {"foo","bar"},
+		   {"foo.bar","foobar"},
+		   {"foo.bar.boo.far","foobar"},
+		   {"foo2","foobar.fooboo.foofar.foofoo"},
+		   {"foo3",KEY_VALUE_SEPARATOR+"bar"} };
+	
 	/**
 	 * Test putSingle(String,String) method
 	 * trying to store a key with two paired
@@ -74,7 +84,7 @@
 	 */
 	public void testSimpleFieldSetPutAndGet_NoMultiLevel(){
 		String[][] methodPairsArray = { {"A","a"},{"B","b"},{"C","c"},{"D","d"},{"E","e"},{"F","f"} };
-		putAndGetPairsTests(methodPairsArray);
+		assertTrue(checkPutAndGetPairs(methodPairsArray));
 	}
 	
 	/**
@@ -87,8 +97,8 @@
 			{ {"A.A","aa"},{"A.B","ab"},{"A.C","ac"},{"A.D","ad"},{"A.E","ae"},{"A.F","af"} };
 		String[][] methodPairsArray_MultiLevel = 
 			{ {"A.A.A.A","aa"},{"A.B.A","ab"},{"A.C.Cc","ac"},{"A.D.F","ad"},{"A.E.G","ae"},{"A.F.J.II.UI.BOO","af"} };
-		putAndGetPairsTests(methodPairsArray_DoubleLevel);
-		putAndGetPairsTests(methodPairsArray_MultiLevel);
+		assertTrue(checkPutAndGetPairs(methodPairsArray_DoubleLevel));
+		assertTrue(checkPutAndGetPairs(methodPairsArray_MultiLevel));
 	}
 	
 	
@@ -97,13 +107,17 @@
 	 * and verify if it can do the correspondant
 	 * get correctly.
 	 * @param aPairsArray
+	 * @return true if it is correct
 	 */
-	private void putAndGetPairsTests(String[][] aPairsArray) {
+	private boolean checkPutAndGetPairs(String[][] aPairsArray) {
+		boolean retValue = true;
 		SimpleFieldSet methodSFS = new SimpleFieldSet(true);
 		for (int i = 0; i < aPairsArray.length; i++)		//putting values
 			methodSFS.putSingle(aPairsArray[i][0], aPairsArray[i][1]);
 		for (int i = 0; i < aPairsArray.length; i++)		//getting values
-			assertEquals(methodSFS.get(aPairsArray[i][0]),aPairsArray[i][1]);
+			retValue &= methodSFS.get(aPairsArray[i][0]).equals(aPairsArray[i][1]);
+		retValue &= checkSimpleFieldSetSize(methodSFS, aPairsArray.length);
+		return retValue;
 	}
 	
 	/**
@@ -125,6 +139,7 @@
 			assertEquals(
 					methodSFS.subset(methodPairsArray_MultiLevel[i][0]).get(methodPairsArray_MultiLevel[i][1]),
 					methodPairsArray_MultiLevel[i][2]);
+		assertTrue(checkSimpleFieldSetSize(methodSFS,methodPairsArray_MultiLevel.length));
 	}
 	
 	/**
@@ -142,9 +157,27 @@
 			methodSFS.put(Integer.toString(i),true);
 		for (int i = 0; i < length; i++)
 			assertEquals(methodSFS.getBoolean(Integer.toString(i),false),true);
+		assertTrue(checkSimpleFieldSetSize(methodSFS,length));
 	}
 	
+	
 	/**
+	 * Check if the provided SimpleFieldSet
+	 * has the right size
+	 * @param aSimpleFieldSet
+	 * @param expectedSize
+	 * @return true if the size is the expected
+	 */
+	private boolean checkSimpleFieldSetSize(SimpleFieldSet aSimpleFieldSet, int expectedSize) {
+		int actualSize = 0;
+		Iterator methodKeyIterator = aSimpleFieldSet.keyIterator();
+		while (methodKeyIterator.hasNext()) {
+			methodKeyIterator.next();
+			actualSize++; }
+		return expectedSize == actualSize;
+	}
+	
+	/**
 	 * Test put(String,int) and 
 	 * [getInt(String),getInt(String,int)]
 	 * methods consistency.
@@ -159,6 +192,9 @@
 			{ {1,1},{2,2},{3,3},{4,4} };
 		for (int i = 0; i < methodPairsArray.length; i++)
 			methodSFS.put(Integer.toString(methodPairsArray[i][0]), methodPairsArray[i][1]);
+		
+		assertTrue(checkSimpleFieldSetSize(methodSFS,methodPairsArray.length));
+		
 		for (int i = 0; i < methodPairsArray.length; i++) {
 			try {
 				assertEquals(methodSFS.getInt(Integer.toString(methodPairsArray[i][0])),methodPairsArray[i][1]);
@@ -183,6 +219,9 @@
 			{ {1,1},{2,2},{3,3},{4,4} };
 		for (int i = 0; i < methodPairsArray.length; i++)
 			methodSFS.put(Long.toString(methodPairsArray[i][0]), methodPairsArray[i][1]);
+		
+		assertTrue(checkSimpleFieldSetSize(methodSFS,methodPairsArray.length));
+		
 		for (int i = 0; i < methodPairsArray.length; i++) {
 			try {
 				assertEquals(methodSFS.getLong(Long.toString(methodPairsArray[i][0])),methodPairsArray[i][1]);
@@ -207,6 +246,9 @@
 			{ {'1','1'},{'2','2'},{'3','3'},{'4','4'} };
 		for (int i = 0; i < methodPairsArray.length; i++)
 			methodSFS.put(String.valueOf(methodPairsArray[i][0]), methodPairsArray[i][1]);
+		
+		assertTrue(checkSimpleFieldSetSize(methodSFS,methodPairsArray.length));
+		
 		for (int i = 0; i < methodPairsArray.length; i++) {
 			try {
 				assertEquals(methodSFS.getChar(String.valueOf(methodPairsArray[i][0])),methodPairsArray[i][1]);
@@ -231,6 +273,9 @@
 			{ {1,1},{2,2},{3,3},{4,4} };
 		for (int i = 0; i < methodPairsArray.length; i++)
 			methodSFS.put(Short.toString(methodPairsArray[i][0]), methodPairsArray[i][1]);
+		
+		assertTrue(checkSimpleFieldSetSize(methodSFS,methodPairsArray.length));
+		
 		for (int i = 0; i < methodPairsArray.length; i++) {
 			try {
 				assertEquals(methodSFS.getShort(Short.toString(methodPairsArray[i][0])),methodPairsArray[i][1]);
@@ -255,14 +300,16 @@
 			{ {1,1},{2,2},{3,3},{4,4} };
 		for (int i = 0; i < methodPairsArray.length; i++)
 			methodSFS.put(Double.toString(methodPairsArray[i][0]), methodPairsArray[i][1]);
+		
+		assertTrue(checkSimpleFieldSetSize(methodSFS,methodPairsArray.length));
+		
 		for (int i = 0; i < methodPairsArray.length; i++) {
 			try {
+				//there is no assertEquals(Double,Double) so we are obliged to do this way -_-
 				assertEquals(Double.compare((methodSFS.getDouble(Double.toString(methodPairsArray[i][0]))),
-											methodPairsArray[i][1]),
-							 0);		//there is no assertEquals(Double,Double) so we are obliged to do this way -_-
+											methodPairsArray[i][1]),0);
 				assertEquals(Double.compare(methodSFS.getDouble(Double.toString(methodPairsArray[i][0]),(double)5),
-											methodPairsArray[i][1]),
-							 0);
+											methodPairsArray[i][1]),0);
 			} catch (FSParseException aException) {
 				fail("Not expected exception thrown : " + aException.getMessage()); }
 		}
@@ -286,34 +333,117 @@
 	
 	/**
 	 * Test SimpleFieldSet(String,boolean,boolean) constructor,
-	 * with a simple string
+	 * with simple and border cases of the canonical form.
 	 */
 	public void testSimpleFieldSet_StringBooleanBoolean() {
-		String[][] methodStringPair = { {"foo","bar"}};
-		String methodStringToParse = sfsReadyString(methodStringPair);
+		String[][] methodStringPairs = SAMPLE_STRING_PAIRS;
+		String methodStringToParse = sfsReadyString(methodStringPairs);
 		try {
 			SimpleFieldSet methodSFS = new SimpleFieldSet(methodStringToParse,false,false);
-			assertEquals(methodSFS.get(methodStringPair[0][0]),methodStringPair[0][1]);
+			for (int i=0; i < methodStringPairs.length; i++)
+				assertEquals(methodSFS.get(methodStringPairs[i][0]),methodStringPairs[i][1]);
 		} catch (IOException aException) {
 			fail("Not expected exception thrown : " + aException.getMessage()); }
 	}
 	
 	/**
-	 * Test SimpleFieldSet(String,boolean,boolean) constructor,
-	 * with border cases of the canonical form.
+	 * Test SimpleFieldSet(BufferedReader,boolean,boolean) constructor,
+	 * with simple and border cases of the canonical form.
 	 */
-	public void testSimpleFieldSet_StringBooleanBoolean_NotCanonical() {
-		String[][] methodStringPairs = 
-			{  {"foo.bar","foobar"},
-			   {"foo.bar.boo.far","foobar"},
-			   {"foo","foobar.fooboo.foofar.foofoo"},
-			   {"foo2",KEY_VALUE_SEPARATOR+"bar"} };
-		String methodStringToParse = sfsReadyString(methodStringPairs);
+	public void testSimpleFieldSet_BufferedReaderBooleanBoolean() {
+		String[][] methodStringPairs = SAMPLE_STRING_PAIRS;
+        BufferedReader methodBufferedReader = 
+        	new BufferedReader(new StringReader(sfsReadyString(methodStringPairs)));
 		try {
-			SimpleFieldSet methodSFS = new SimpleFieldSet(methodStringToParse,false,false);
+			SimpleFieldSet methodSFS = new SimpleFieldSet(methodBufferedReader,false,false);
 			for (int i=0; i < methodStringPairs.length; i++)
 				assertEquals(methodSFS.get(methodStringPairs[i][0]),methodStringPairs[i][1]);
 		} catch (IOException aException) {
 			fail("Not expected exception thrown : " + aException.getMessage()); }
 	}
+	
+	
+	/**
+	 * Generates a SimpleFieldSet using the 
+	 * SAMPLE_STRING_PAIRS and sfs put method
+	 * @return a SimpleFieldSet
+	 */
+	private SimpleFieldSet sfsFromSampleStringPairs() {
+		SimpleFieldSet methodSFS = new SimpleFieldSet(true);
+		for (int i = 0; i < SAMPLE_STRING_PAIRS.length; i++)
+			methodSFS.putSingle(SAMPLE_STRING_PAIRS[i][0],SAMPLE_STRING_PAIRS[i][1]);
+		assertTrue(checkSimpleFieldSetSize(methodSFS,SAMPLE_STRING_PAIRS.length));
+		return methodSFS;
+	}
+	
+	/**
+	 * Test SimpleFieldSet(SimpleFieldSet) constructor,
+	 * with simple and border cases of the canonical form.
+	 */
+	public void testSimpleFieldSet_SimpleFieldSet() {
+		SimpleFieldSet methodSFS = new SimpleFieldSet(sfsFromSampleStringPairs());
+		String[][] methodStringPairs = SAMPLE_STRING_PAIRS;
+		for (int i=0; i < methodStringPairs.length; i++)
+			assertEquals(methodSFS.get(methodStringPairs[i][0]),methodStringPairs[i][1]);
+	}
+	
+	/**
+	 * Search for a key in a given String[][] array.
+	 * We consider that keys are stored in String[x][0] 
+	 * @param aStringPairsArray
+	 * @param aPrefix that could be put before found key
+	 * @param aKey to be searched
+	 * @return true if there is the key
+	 */
+	private boolean isAKey(String[][] aStringPairsArray, String aPrefix, String aKey) {
+		for (int i=0; i<aStringPairsArray.length; i++)
+			if (aKey.equals(aPrefix+aStringPairsArray[i][0])) 
+				return true;
+		return false;
+	}
+	
+	/**
+	 * Verify if all keys in a String[][]
+	 * (We consider that keys are stored in String[x][0])
+	 * are the same that the Iterator provides.
+	 * In this way both hasNext() and next() methods
+	 * are tested.
+	 * @param aStringPairsArray
+	 * @param aPrefix that could be put before found key
+	 * @param aIterator
+	 * @return true if they have the same key set
+	 */
+	private boolean areAllContainedKeys(String[][] aStringPairsArray, String aPrefix, Iterator aIterator) {
+		boolean retValue = true;
+		int actualLength = 0;
+		while (aIterator.hasNext()) {
+			actualLength++;
+			retValue &= isAKey(aStringPairsArray,aPrefix,(String)aIterator.next());
+		}
+		retValue &= (actualLength==aStringPairsArray.length);
+		return retValue;
+	}
+	
+	/**
+	 * Test the Iterator given for the
+	 * SimpleFieldSet class.
+	 * It tests hasNext() and next() methods.
+	 */
+	public void testKeyIterator() {
+		SimpleFieldSet methodSFS = sfsFromSampleStringPairs();
+		Iterator itr = methodSFS.keyIterator();
+		assertTrue(areAllContainedKeys(SAMPLE_STRING_PAIRS,"",itr));
+	}
+	
+	/**
+	 * Test the Iterator created using prefix 
+	 * given for the SimpleFieldSet class
+	 */
+	public void testKeyIterator_String() {
+		String methodPrefix = "bob";
+		SimpleFieldSet methodSFS = sfsFromSampleStringPairs();
+		Iterator itr = methodSFS.keyIterator(methodPrefix);
+		assertTrue(areAllContainedKeys(SAMPLE_STRING_PAIRS,methodPrefix,itr));	
+	}
+	
 }




More information about the cvs mailing list