You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2006/11/19 01:36:42 UTC

svn commit: r476668 - in /beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit: beaninfo/BeanInfoTest.java inherit/InheritTest.java utils/ControlIntrospector.java utils/ControlTestUtils.java

Author: ekoneil
Date: Sat Nov 18 16:36:42 2006
New Revision: 476668

URL: http://svn.apache.org/viewvc?view=rev&rev=476668
Log:
Merge SVN 476666 from trunk/ into branches/v1.0.2/ to fix the Controls tests that are failing on win32.

Test: Controls pass


Modified:
    beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/beaninfo/BeanInfoTest.java
    beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/inherit/InheritTest.java
    beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/utils/ControlIntrospector.java
    beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/utils/ControlTestUtils.java

Modified: beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/beaninfo/BeanInfoTest.java
URL: http://svn.apache.org/viewvc/beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/beaninfo/BeanInfoTest.java?view=diff&rev=476668&r1=476667&r2=476668
==============================================================================
--- beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/beaninfo/BeanInfoTest.java (original)
+++ beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/beaninfo/BeanInfoTest.java Sat Nov 18 16:36:42 2006
@@ -19,15 +19,16 @@
 
 package org.apache.beehive.controls.test.junit.beaninfo;
 
-import junit.framework.TestCase;
-import org.apache.beehive.controls.test.controls.beaninfo.InfoTestBean;
-import org.apache.beehive.controls.test.junit.utils.ControlIntrospector;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.InputStream;
 
+import junit.framework.TestCase;
+import org.apache.beehive.controls.test.controls.beaninfo.InfoTestBean;
+import org.apache.beehive.controls.test.junit.utils.ControlTestUtils;
+
+
 /**
  * A TestCase that tests generated BeanInfo
  * <p/>
@@ -40,42 +41,11 @@
 
     public void testBeanInfo() throws Exception {
 
-        File tempFile = null;
-        FileOutputStream fos = null;
-        try {
-            tempFile = File.createTempFile("InfoTestBean", ".beaninfo");
-            fos = new FileOutputStream(tempFile);
-            ControlIntrospector ci = new ControlIntrospector(InfoTestBean.class, fos);
-            ci.introspect();
-        }
-        finally {
-            if (fos != null)
-                fos.close();
-        }
-
-        InputStream valid = null;
-        InputStream current = null;
-        try {
-            valid = this.getClass().getClassLoader().getResourceAsStream(BEANINFO);
-            assertNotNull(valid);
-
-            current = new FileInputStream(tempFile);
-            int validVal;
-            int currentVal;
-            do {
-                validVal = valid.read();
-                currentVal = current.read();
-                assertEquals(validVal, currentVal);
-            } while (validVal != -1);
-        }
-        finally {
-            if (current != null)
-                current.close();
-            if (valid != null)
-                valid.close();
-        }
-
-        // Pass, so remove the temporary output file
-        tempFile.delete();
+	File tempFile = File.createTempFile(getClass().getSimpleName(), ".beaninfo");
+	boolean same = ControlTestUtils.compareBeanInfo(BEANINFO, tempFile, InfoTestBean.class);
+	
+	if(!same) 
+	    fail("Generated beaninfo file " + tempFile + " differs from expected beaninfo " + BEANINFO + " in classloader");
+	else tempFile.delete();
     }
 }

Modified: beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/inherit/InheritTest.java
URL: http://svn.apache.org/viewvc/beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/inherit/InheritTest.java?view=diff&rev=476668&r1=476667&r2=476668
==============================================================================
--- beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/inherit/InheritTest.java (original)
+++ beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/inherit/InheritTest.java Sat Nov 18 16:36:42 2006
@@ -19,20 +19,19 @@
 
 package org.apache.beehive.controls.test.junit.inherit;
 
-import junit.framework.TestCase;
-
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.io.FileInputStream;
 
-import org.apache.beehive.controls.test.junit.utils.ControlIntrospector;
+import junit.framework.TestCase;
+import org.apache.beehive.controls.test.junit.utils.ControlTestUtils;
 
 /**
  * A TestCase that tests control interface, extension, and implementation inheritance
  */
-public class InheritTest extends TestCase
-{
+public class InheritTest extends TestCase {
+
     /**
      * Verifies the generated BeanInfo for Intf1
      */
@@ -61,10 +60,20 @@
         validateBeanInfo("Ext2Bean");
     }
 
-    private void validateBeanInfo(String shortName) throws Exception {
+    private void validateBeanInfo(String simpleName) 
+	throws Exception {
 
-        String beanClassName = "org.apache.beehive.controls.test.controls.inherit." + shortName;
-        String beanInfo = "org/apache/beehive/controls/test/junit/inherit/" + shortName + ".beaninfo";
+        String beanClassName = "org.apache.beehive.controls.test.controls.inherit." + simpleName;
+        String beanInfo = "org/apache/beehive/controls/test/junit/inherit/" + simpleName + ".beaninfo";
+	
+	File tempFile = File.createTempFile(simpleName, ".beaninfo");
+	boolean same = ControlTestUtils.compareBeanInfo(beanInfo, tempFile, Class.forName(beanClassName));
+	
+	if(!same) 
+	    fail("Generated beaninfo file " + tempFile + " differs from expected beaninfo " + beanInfo + " in classloader");
+	else tempFile.delete();
+    }	
+    /*
 
         File tempFile = null;
         FileOutputStream fos = null;
@@ -81,33 +90,30 @@
                 fos.close();
         }
 
-        InputStream valid = null;
-        InputStream current = null;
+        InputStream expected = null;
+        InputStream actual = null;
         try {
-            valid = this.getClass().getClassLoader().getResourceAsStream(beanInfo);
+            expected = getClass().getClassLoader().getResourceAsStream(beanInfo);
 
-            if (valid == null)
-                fail("Could not locate valid beaninfo file \"" + beanInfo + "\"");
+            if (expected == null)
+                fail("Could not locate expected beaninfo file \"" + beanInfo + "\"");
 
-            current = new FileInputStream(tempFile);
-            int validVal, currentVal;
-            do {
-                validVal = valid.read();
-                currentVal = current.read();
-
-                if (validVal != currentVal)
-                    fail("BeanInfo data in " + tempFile.getName() + " differs from valid file");
-            }
-            while (validVal != -1);
+            actual = new FileInputStream(tempFile);
+	    
+	    boolean same = ControlTestUtils.compareFiles(expected, actual);
+	    
+	    if(!same) 
+		fail("File " + tempFile.getName() " differs from expected file " + beanInfo + " in classloader");
         }
         finally {
-            if(valid != null)
-                valid.close();
-            if(current != null)
-                current.close();
+            if(expected != null)
+                expected.close();
+            if(actual != null)
+                actual.close();
         }
 
         // Pass, so remove the temporary output file
         tempFile.delete();
     }
+    */
 }

Modified: beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/utils/ControlIntrospector.java
URL: http://svn.apache.org/viewvc/beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/utils/ControlIntrospector.java?view=diff&rev=476668&r1=476667&r2=476668
==============================================================================
--- beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/utils/ControlIntrospector.java (original)
+++ beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/utils/ControlIntrospector.java Sat Nov 18 16:36:42 2006
@@ -42,7 +42,9 @@
 /**
  * A utility class for introspecting Control beans
  */
-public final class ControlIntrospector {
+final class ControlIntrospector {
+
+    private static String LINE_SEPARATOR = System.getProperty("line.separator");
 
     private Class _beanClass;
     private int _indentLevel = 0;
@@ -65,7 +67,7 @@
         for (int i = 0; i < _indentLevel; i++)
             _pw.append("    ");
         _pw.printf(format, args);
-        _pw.printf("\n");
+        _pw.printf(LINE_SEPARATOR);
     }
 
     private void printElement(String name, String value) {

Modified: beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/utils/ControlTestUtils.java
URL: http://svn.apache.org/viewvc/beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/utils/ControlTestUtils.java?view=diff&rev=476668&r1=476667&r2=476668
==============================================================================
--- beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/utils/ControlTestUtils.java (original)
+++ beehive/branches/v1.0.2/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/utils/ControlTestUtils.java Sat Nov 18 16:36:42 2006
@@ -18,13 +18,15 @@
  */
 package org.apache.beehive.controls.test.junit.utils;
 
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
-import java.io.ObjectOutputStream;
+import java.io.InputStream;
 import java.io.IOException;
-import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
 import java.io.ObjectInputStream;
-
-import org.apache.beehive.controls.test.controls.composition.OuterControlBean;
+import java.io.ObjectOutputStream;
 
 public final class ControlTestUtils {
 
@@ -69,5 +71,62 @@
         }
 
         return object;
+    }
+
+    /**
+       Compare two bean info files.  Two InputStream instances are created given the parameters
+       and compared byte-by-byte.  Any difference between these comparisons will result in a 
+       return value of <code>false</code>.
+       
+       @param expectedBeanInfo the String path to an expected beaninfo file that must be available in classloader
+       @param tempFile the location of a temporary file into which the actual beaninfo will be generated
+       @param controlBeanClass the type of control bean to introspect
+       @return <code>false</code> if the files differ by any byte; <code>true</code> otherwise
+    */
+    public static boolean compareBeanInfo(String expectedBeanInfo, File tempFile, Class controlBeanClass) 
+	throws Exception {
+
+	assert controlBeanClass != null;
+	assert tempFile != null;
+
+        FileOutputStream fos = null;
+        try {
+            fos = new FileOutputStream(tempFile);
+            ControlIntrospector ci = new ControlIntrospector(controlBeanClass, fos);
+            ci.introspect();
+        }
+        finally {
+            if (fos != null)
+                fos.close();
+        }
+
+	boolean fail = false;
+        InputStream valid = null;
+        InputStream current = null;
+        try {
+            valid = controlBeanClass.getClassLoader().getResourceAsStream(expectedBeanInfo);
+            current = new FileInputStream(tempFile);
+
+            assert valid != null;
+	    assert current != null;
+
+            int validVal;
+            int currentVal;
+            do {
+                validVal = valid.read();
+                currentVal = current.read();
+
+		if(validVal != currentVal) 
+		    return false;
+            } while (validVal != -1);
+        }
+        finally {
+            if (current != null)
+                current.close();
+            if (valid != null)
+                valid.close();
+        }
+	
+	return true;
     }
 }