You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by bu...@apache.org on 2012/08/03 14:56:06 UTC

svn commit: r1368926 - in /uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima: cas/test/JcasSofaTest.java cas/test/SofaTest.java jcas/test/JCasTest.java

Author: burn
Date: Fri Aug  3 12:56:06 2012
New Revision: 1368926

URL: http://svn.apache.org/viewvc?rev=1368926&view=rev
Log:
[UIMA-2453] Fix JUnit tests that failed under Java 7 (make independent as test order is random; protect against negative hashcodes)

Modified:
    uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/JcasSofaTest.java
    uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/SofaTest.java
    uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/test/JCasTest.java

Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/JcasSofaTest.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/JcasSofaTest.java?rev=1368926&r1=1368925&r2=1368926&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/JcasSofaTest.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/JcasSofaTest.java Fri Aug  3 12:56:06 2012
@@ -26,6 +26,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.PrintWriter;
 import java.nio.ByteBuffer;
 import java.util.Iterator;
 import java.util.StringTokenizer;
@@ -129,8 +130,9 @@ public class JcasSofaTest extends TestCa
       es.setLocalSofaData("this beer is good");
 
       // Test Multiple Sofas across XCAS serialization
+      String xcasFilename = "Sofa.xcas";
       XCASSerializer ser = new XCASSerializer(cas.getTypeSystem());
-      OutputStream outputXCAS = new FileOutputStream("Sofa.xcas");
+      OutputStream outputXCAS = new FileOutputStream(xcasFilename);
       XMLSerializer xmlSer = new XMLSerializer(outputXCAS);
       try {
         ser.serialize(cas, xmlSer.getContentHandler());
@@ -143,7 +145,7 @@ public class JcasSofaTest extends TestCa
 
       // Deserialize XCAS
       cas.reset();
-      InputStream inputXCAS = new FileInputStream("Sofa.xcas");
+      InputStream inputXCAS = new FileInputStream(xcasFilename);
       try {
         XCASDeserializer.deserialize(inputXCAS, cas, false);
         inputXCAS.close();
@@ -152,7 +154,13 @@ public class JcasSofaTest extends TestCa
       } catch (IOException e2) {
         e2.printStackTrace();
       }
-
+      
+      // Delete the generated file.
+      File xcasFile = new File(xcasFilename);
+      if (xcasFile.exists()) {
+        assertTrue(xcasFile.delete());
+      }
+      
       // Add a new Sofa
       // id.setSofaID("GermanDocument");
       // Sofa gs = new Sofa(jcas, id, "text");
@@ -383,7 +391,10 @@ public class JcasSofaTest extends TestCa
       JCas remoteView = jcas.createView("remoteSofaData");
       String sofaFileName = "./Sofa.xcas";
       remoteView.setSofaDataURI("file:" + sofaFileName, "text");
-
+      PrintWriter out = new PrintWriter(sofaFileName);
+      out.print("this beer is good");
+      out.close();
+      
       // read sofa data
       InputStream is = stringView.getSofaDataStream();
       assertTrue(is != null);
@@ -457,6 +468,11 @@ public class JcasSofaTest extends TestCa
       bis.close();
       is = remoteView.getSofaDataStream();
       assertTrue(is != null);
+      buf = new StringBuffer();
+      while (is.read(dest) != -1) {
+        buf.append((char) dest[0]);
+      }
+      assertTrue(buf.toString().equals("this beer is good"));
       is.close();
       
       // Delete the generated file.

Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/SofaTest.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/SofaTest.java?rev=1368926&r1=1368925&r2=1368926&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/SofaTest.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/SofaTest.java Fri Aug  3 12:56:06 2012
@@ -30,6 +30,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
+import java.io.PrintWriter;
 import java.nio.ByteBuffer;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -146,8 +147,9 @@ public class SofaTest extends TestCase {
       es.setLocalSofaData("this beer is good");
 
       // Test Multiple Sofas across XCAS serialization
+      String xcasFilename = "Sofa.xcas";
       XCASSerializer ser = new XCASSerializer(this.cas.getTypeSystem());
-      OutputStream outputXCAS = new FileOutputStream("Sofa.xcas");
+      OutputStream outputXCAS = new FileOutputStream(xcasFilename);
       XMLSerializer xmlSer = new XMLSerializer(outputXCAS);
       try {
         ser.serialize(cas, xmlSer.getContentHandler());
@@ -160,7 +162,7 @@ public class SofaTest extends TestCase {
 
       // Deserialize XCAS
      this.cas.reset();
-      InputStream inputXCAS = new FileInputStream("Sofa.xcas");
+      InputStream inputXCAS = new FileInputStream(xcasFilename);
       try {
         XCASDeserializer.deserialize(inputXCAS, cas, false);
         inputXCAS.close();
@@ -169,7 +171,12 @@ public class SofaTest extends TestCase {
       } catch (IOException e2) {
         e2.printStackTrace();
       }
-
+      // Delete the generated file.
+      File xcasFile = new File(xcasFilename);
+      if (xcasFile.exists()) {
+        assertTrue(xcasFile.delete());
+      }
+      
       // Add a new Sofa
       // SofaID_impl gid = new SofaID_impl();
       // gid.setSofaID("GermanDocument");
@@ -449,7 +456,10 @@ public class SofaTest extends TestCase {
       CAS remoteView =this.cas.createView("remoteSofaData");
       String sofaFileName = "./Sofa.xcas";
       remoteView.setSofaDataURI("file:" + sofaFileName, "text");
-
+      PrintWriter out = new PrintWriter(sofaFileName);
+      out.print("this beer is good");
+      out.close();
+      
       // read sofa data
       // InputStream is = strSofa.getSofaDataStream();
       InputStream is = stringView.getSofaDataStream();
@@ -529,11 +539,17 @@ public class SofaTest extends TestCase {
       }
 
       dest = new byte[1];
+      is.close();
       // is = remoteSofa.getSofaDataStream();
       is = remoteView.getSofaDataStream();
       assertTrue(is != null);
-
+      buf = new StringBuffer();
+      while (is.read(dest) != -1) {
+        buf.append((char) dest[0]);
+      }
+      assertTrue(buf.toString().equals("this beer is good"));
       is.close();
+      
       // Delete the generated file.
       File xcasFile = new File(sofaFileName);
       if (xcasFile.exists()) {

Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/test/JCasTest.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/test/JCasTest.java?rev=1368926&r1=1368925&r2=1368926&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/test/JCasTest.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/test/JCasTest.java Fri Aug  3 12:56:06 2012
@@ -36,7 +36,6 @@ import org.apache.uima.cas.impl.CASImpl;
 import org.apache.uima.cas.impl.LowLevelCAS;
 import org.apache.uima.cas.impl.LowLevelException;
 import org.apache.uima.cas.impl.LowLevelIndexRepository;
-import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.jcas.JFSIndexRepository;
 import org.apache.uima.jcas.cas.EmptyFSList;
@@ -416,7 +415,8 @@ public class JCasTest extends TestCase {
 	MakeAndTest root1 = new MakeAndTest() {
 		public void make() {
 			Root r1 = new Root(jcas);
-			int k = System.identityHashCode(r1);
+			// Note: Java 7 can return -ve hashcodes so must avoid -ve remainders.
+			int k = Math.abs(System.identityHashCode(r1));
 			int imax = 1 + (k % 10);
 			r1.setArrayFloat(new FloatArray(jcas, imax));
 			for (int i = 0; i < imax; i++) {
@@ -434,7 +434,7 @@ public class JCasTest extends TestCase {
 		public void test(Object o1) {
 			assertTrue(o1 instanceof Root);
 			Root r1 = (Root) o1;
-			int k = System.identityHashCode(r1);
+			int k = Math.abs(System.identityHashCode(r1));
 			int imax = 1 + (k % 10);
 			for (int i = 0; i < imax; i++) {
 				assertTrue(r1.getArrayFloat(i) == ((float) k / i));