You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2016/12/05 17:02:18 UTC

svn commit: r1772718 [1/3] - in /uima/uimaj/trunk/uimaj-core/src/test: java/org/apache/uima/cas/impl/ resources/SerDes6/

Author: schor
Date: Mon Dec  5 17:02:17 2016
New Revision: 1772718

URL: http://svn.apache.org/viewvc?rev=1772718&view=rev
Log:
[UIMA-5195] add common shared part of serdes form 4 / 6 testing, that can capture and replay random number streams, and capture and load the serialized forms for testing with previously serialized data.  Generate these for SerDes6 and store as test resources.

Added:
    uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTstCommon.java
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/ArrayAuxLong.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/ArrayAuxString.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/DocumentText.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OneTypeSubsetFeaturesOneTypeSubsetFeatures.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsOneType.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsTwoTypes1.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsTwoTypes2.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsTwoTypesNoFeatures.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/SavedInts.binary
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/TwoTypesSubsetFeaturesTwoTypesSubsetFeatures.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/WithDeserFilterDocumentText.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/WithDeserFilterOneTypeSubsetFeaturesOneTypeSubsetFeatures.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/WithDeserFilterOtherAllKindsOneType.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/WithDeserFilterOtherAllKindsTwoTypes1.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/WithDeserFilterOtherAllKindsTwoTypes2.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/WithDeserFilterOtherAllKindsTwoTypesNoFeatures.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/WithDeserFilterTwoTypesSubsetFeaturesTwoTypesSubsetFeatures.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeIndexedOneType0.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeIndexedTwoTypesNoFeatures0.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeIndexedTwoTypesSubsetFeatures0.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeIndexedTwoTypesSubsetFeatures1.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeIndexedTwoTypesSubsetFeatures2.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeIndexedTwoTypesSubsetFeatures3.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeIndexedTwoTypesSubsetFeatures4.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeIndexedTwoTypesSubsetFeatures5.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeIndexedTwoTypesSubsetFeatures6.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeIndexedTwoTypesSubsetFeatures7.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeIndexedTwoTypesSubsetFeatures8.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeIndexedTwoTypesSubsetFeatures9.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeNotIndexedOneType0.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeNotIndexedTwoTypesNoFeatures0.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeNotIndexedTwoTypesSubsetFeatures0.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeNotIndexedTwoTypesSubsetFeatures1.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeNotIndexedTwoTypesSubsetFeatures2.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeNotIndexedTwoTypesSubsetFeatures3.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeNotIndexedTwoTypesSubsetFeatures4.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeNotIndexedTwoTypesSubsetFeatures5.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeNotIndexedTwoTypesSubsetFeatures6.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeNotIndexedTwoTypesSubsetFeatures7.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeNotIndexedTwoTypesSubsetFeatures8.binary   (with props)
    uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/refThroughFilteredTypeNotIndexedTwoTypesSubsetFeatures9.binary   (with props)
Modified:
    uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest4.java
    uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java

Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest4.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest4.java?rev=1772718&r1=1772717&r2=1772718&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest4.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest4.java Mon Dec  5 17:02:17 2016
@@ -64,58 +64,9 @@ import org.apache.uima.util.impl.Seriali
  * 
  * Has main method for creating resources to use in testing
  */
-public class SerDesTest4 extends TestCase {
-  
-  class MyRandom extends Random {
-
-    @Override
-    public int nextInt(int n) {
-      int r = usePrevData ? readNextSavedInt() : super.nextInt(n);
-      if (capture) writeSavedInt(r);
-      return r;
-    }
-
-    @Override
-    public int nextInt() {
-      int r = usePrevData ? readNextSavedInt() : super.nextInt();
-      if (capture) writeSavedInt(r);
-      return r;
-    }
-
-    @Override
-    public long nextLong() {
-      int r = usePrevData ? readNextSavedInt() : super.nextInt();
-      if (capture) writeSavedInt(r);      
-      return r;
-    }
-
-    @Override
-    public boolean nextBoolean() {
-      int r = usePrevData ? readNextSavedInt() : super.nextInt(2);
-      if (capture) writeSavedInt(r);      
-      return r == 0;
-    }
-
-    @Override
-    public float nextFloat() {
-      int r = usePrevData ? readNextSavedInt() : super.nextInt(0x7ffff);
-      if (capture) writeSavedInt(r);
-      return Float.intBitsToFloat(r);
-    }
-
-    @Override
-    public double nextDouble() {
-      int r = usePrevData ? readNextSavedInt() : super.nextInt(0x7ffff);
-      if (capture) writeSavedInt(r);
-      return Double.longBitsToDouble((long) r);
-    }
-  }
-  
-  private final Random random = new MyRandom();
-  private long seed;
-  private char[] sbSavedInts = new char[20];
-  private BufferedReader savedIntsStream;
-  private OutputStreamWriter savedIntsOutStream;
+public class SerDesTest4 extends SerDesTstCommon {
+    
+//  private long seed;
 
   private Type akof;
   private Type topType;
@@ -166,10 +117,6 @@ public class SerDesTest4 extends TestCas
   private TypeSystemImpl ts;
   private List<FeatureStructure> lfs;
   
-  private boolean doPlain = false;
-  private boolean capture = false; // capture the serialized output
-  private boolean usePrevData = false;
-
   public class CASTestSetup  implements AnnotatorInitializer {
 
     /** 
@@ -241,7 +188,7 @@ public class SerDesTest4 extends TestCas
 
   public SerDesTest4() {
     Random sg = new Random();
-    seed = sg.nextLong();
+    long seed = sg.nextLong();
     random.setSeed(seed);
   }
   
@@ -582,9 +529,6 @@ public class SerDesTest4 extends TestCas
   
   private String randomString(Random r) {
     int i = r.nextInt(7);
-//    if (i >= 7) {
-//      System.out.println("debug");
-//    }
     return stringValues[i];
   }
 
@@ -892,80 +836,7 @@ public class SerDesTest4 extends TestCas
       throw new RuntimeException(e);
     }
   }
-  
-  private void writeout(ByteArrayOutputStream baos, String fname) throws IOException {
-    if (null == fname) {
-      return;
-    }
-    BufferedOutputStream fos = setupFileOut(fname);
-    fos.write(baos.toByteArray());
-    fos.close();
-  }
-  
-  private byte[] readIn(String fname) throws IOException {
-    File f = new File("src/test/resources/SerDes4/" + fname + ".binary");
-    int len = (int)f.length();
-    byte[] buffer = new byte[len];
-    BufferedInputStream inStream = 
-      new BufferedInputStream(
-          new FileInputStream(f));
-    int br = inStream.read(buffer);
-    if (br != len) {
-      assertTrue(false);
-    }
-    inStream.close();
-    return buffer;
-  }
-  
-  private BufferedOutputStream setupFileOut(String fname) throws IOException {
-    if (null == fname) {
-      return null;
-    }
-    File dir = new File("src/test/resources/SerDes4/");
-    if (!dir.exists()) {
-      dir.mkdirs();
-    }
-    
-    return
-      new BufferedOutputStream(
-        new FileOutputStream(
-          new File("src/test/resources/SerDes4/" + fname + ".binary")));
-    
-  }
-  
-  private void initWriteSavedInts() {
-    try {
-      savedIntsOutStream = new OutputStreamWriter(setupFileOut("SavedInts"));
-    } catch (IOException e) {
-      throw new RuntimeException(e);
-    }
-  }
-  
-  private void initReadSavedInts() {
-    try {
-      savedIntsStream = new BufferedReader(new FileReader("src/test/resources/SerDes4/SavedInts.binary"));
-    } catch (IOException e) {
-      throw new RuntimeException(e);
-    }
-  }
-  
-  private void writeSavedInt(int i) {
-    try {
-      savedIntsOutStream.write(Integer.toString(i) + '\n');
-    } catch (IOException e) {
-      throw new RuntimeException(e);
-    }
-  }
-  
-  private int readNextSavedInt() {
-    try {
-      String s = savedIntsStream.readLine();
-      return Integer.parseInt(s);
-   } catch (IOException e) {
-      throw new RuntimeException(e);
-   }
-  }
-  
+              
   private void makeRandomUpdatesBelowMark(List<FeatureStructure> fs, int belowMarkSize, Random r) {
     for (int i = 0; i < belowMarkSize; i++ ) {
       makeRandomUpdate(lfs.get(i), r);
@@ -1090,6 +961,11 @@ public class SerDesTest4 extends TestCas
     }      
   }
 
+  @Override
+  protected String getTestRootName() {
+    return "SerDes4";
+  }
+  
   // disable to avoid accidentally overwriting test data
 //  static public void main(String[] args) throws IOException {
 //    (new SerDesTest4()).captureGenerated();

Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java?rev=1772718&r1=1772717&r2=1772718&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java Mon Dec  5 17:02:17 2016
@@ -35,9 +35,6 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Random;
-
-import junit.framework.TestCase;
 
 import org.apache.uima.cas.ArrayFS;
 import org.apache.uima.cas.BooleanArrayFS;
@@ -63,12 +60,13 @@ import org.apache.uima.resource.Resource
 import org.apache.uima.resource.metadata.TypeSystemDescription;
 import org.apache.uima.util.CasCreationUtils;
 import org.apache.uima.util.impl.SerializationMeasures;
+
 /**
  * Serializer and Deserializer testing
  * 
  * 
  */
-public class SerDesTest6 extends TestCase {
+public class SerDesTest6 extends SerDesTstCommon {
 
   enum TypeSystems {
     TwoTypes, EqTwoTypes, OneType, TwoTypesSubsetFeatures, OneTypeSubsetFeatures, TwoTypesNoFeatures,
@@ -89,9 +87,6 @@ public class SerDesTest6 extends TestCas
   private CASImpl casSrc;
   private TTypeSystem[] alternateTTypeSystems;
   
-  private  Random random;
-  private long seed;
-
   public class CASTestSetup implements AnnotatorInitializer {
 
     
@@ -103,7 +98,8 @@ public class SerDesTest6 extends TestCas
       this.kind = kind;
     }
     
-    //     TwoTypes, EqTwoTypes, OneType, TwoTypesSubsetFeatures, OneTypeSubsetFeatures, NoFeatures,
+    // TwoTypes, EqTwoTypes, OneType, TwoTypesSubsetFeatures,
+    // OneTypeSubsetFeatures, NoFeatures,
     public void initTypeSystem(TypeSystemMgr tsm) {
       if (kind == EqTwoTypes) {
         throw new RuntimeException();
@@ -126,7 +122,7 @@ public class SerDesTest6 extends TestCas
       switch (kind) {
       case TwoTypes: 
       case TwoTypesSubsetFeatures: 
-      case TwoTypesNoFeatures: {
+      case TwoTypesNoFeatures:
         m.addType(Akof2.name(),"Top");
         if (kind != TwoTypesNoFeatures) {
           for (String fn : featureNameRoots) {
@@ -137,8 +133,8 @@ public class SerDesTest6 extends TestCas
           }
         }
         break;
-        }
-      }
+      default: // skip the other cases
+      } // end of switch
     }
     
     void addBuiltins() {
@@ -175,15 +171,16 @@ public class SerDesTest6 extends TestCas
   
   static class TTypeSystem {
     final TypeSystems kind;
-    final TypeSystemMgr tsm;
+    TypeSystemMgr tsm;
     Feature[][] featureTable = new Feature[Types.values().length][featureNameRoots.size()];
     Map<String, Type> mapString2Type = new HashMap<String, Type>();
     public TypeSystemImpl ts;
-    public CASImpl cas;  // the Cas setup as part of initialization
+    public CASImpl cas;  // the Cas setup as part of initialization                                                                    // the
     
     public TTypeSystem(TypeSystemMgr tsm, TypeSystems kind) {
       this.tsm = tsm;
       this.kind = kind;
+      this.ts = (TypeSystemImpl) tsm;
     }
 
     void addType(Type type, String shortName) {
@@ -205,7 +202,8 @@ public class SerDesTest6 extends TestCas
     void add(Type type, String featNameRoot) {
       String typeName = type.getShortName();
       int i2 = featureNameRoots.indexOf(featNameRoot);
-      featureTable[Types.valueOf(typeName).ordinal()][i2] = tsm.addFeature(typeName + featNameRoot, type, mapString2Type.get(featNameRoot));          
+      featureTable[Types.valueOf(typeName).ordinal()][i2] = tsm.addFeature(typeName + featNameRoot,
+          type, mapString2Type.get(featNameRoot));
     }
     
     void add(Types typeKind, String featNameRoot) {
@@ -220,36 +218,39 @@ public class SerDesTest6 extends TestCas
       Type t = fs.getType();
       return getFeature(Types.valueOf(t.getShortName()), featNameRoot);
     }
-  }
 
-  // Constructor
-  public SerDesTest6() {
-    setRandom(/*seed = 1994207594477441796L*/);
-    System.out.format("SerDesTest6 RandomSeed: %,d%n", seed);
-   }
-  
-  private void setRandom() {
-    Random sg = new Random();
-    seed = sg.nextLong();
-//    seed =  2934127305128325787L;
-    random = new Random(seed);
-  }
-  
-  private void setRandom(long seed) {
-    random = new Random(seed);
+    void updateAfterCommit() { // needed for v3 only, but doesn't hurt for v2
+      ts = cas.getTypeSystemImpl();
+      tsm = ts;
+      for (String typename : mapString2Type.keySet()) {
+        TypeImpl ti = (TypeImpl) ts.getType(typename);
+        mapString2Type.put(typename, ti);
+      }
+
+      for (Types typeKind : Types.values()) {
+        Type ti = tsm.getType(typeKind.name());
+        if (ti != null) {
+          Feature[] features = featureTable[typeKind.ordinal()];
+          for (int i = 0; i < features.length; i++) {
+            features[i] = ti.getFeatureByBaseName(ti.getShortName() + featureNameRoots.get(i));
+          }
+        }
+      }
+    }
   }
   
   public TTypeSystem setupTTypeSystem(TypeSystems kind) {
     if (kind == EqTwoTypes) {
       TTypeSystem m = new TTypeSystem(mSrc.tsm, kind);
-      m.ts = mSrc.cas.getTypeSystemImpl();
+      m.cas = mSrc.cas;
+      // m.ts = mSrc.cas.getTypeSystemImpl();
       return mSrc;
     }
     CASTestSetup setup = new CASTestSetup(kind);
     CASImpl cas = (CASImpl) CASInitializer.initCas(setup);
     TTypeSystem m = setup.m;
     m.cas = cas;
-    m.ts = cas.getTypeSystemImpl();
+    m.updateAfterCommit();
     return m;
   }
   
@@ -297,9 +298,8 @@ public class SerDesTest6 extends TestCas
     }
   }
 
-  
-  public void testDocText() throws Exception
-  {
+  public void testDocText() {
+    try {
       CAS cas = CasCreationUtils.createCas((TypeSystemDescription) null, null, null);
       cas.setDocumentLanguage("latin");
       cas.setDocumentText("test");
@@ -314,6 +314,9 @@ public class SerDesTest6 extends TestCas
 
       assertEquals("latin", cas2.getDocumentLanguage());
       assertEquals("test", cas2.getDocumentText());
+    } catch (Exception e) {
+      throw new RuntimeException(e);
+    }
   }
   
   public void testDocumentText() {
@@ -322,13 +325,13 @@ public class SerDesTest6 extends TestCas
     casSrc.reset();
     casSrc.setDocumentText(testDocText);
     loadCas(casSrc, mSrc);  
-    verify(remoteCas);
+    verify(remoteCas, "DocumentText");
     assertEquals(remoteCas.getDocumentText(), testDocText);
     
     // test case where serialization is done without type filtering,
     //   and deserialization is done with filtering
     remoteCas.reset();
-    verifyDeserFilter(remoteCas); 
+    verifyDeserFilter(remoteCas, "WithDeserFilterDocumentText");
     assertEquals(remoteCas.getDocumentText(), testDocText);
   }
   
@@ -339,22 +342,26 @@ public class SerDesTest6 extends TestCas
   
   public void testAllKinds() {
     if (doPlain) {
-      serdesSimple(getTT(EqTwoTypes));
+      serdesSimple(getTT(EqTwoTypes), "EqTwoTypes");
     } else {
+      int i = 0;
       for (TTypeSystem m : alternateTTypeSystems) {
         switch (m.kind){
         // note: case statements *not* grouped in order to faclitate debugging
         case OneTypeSubsetFeatures:
-          serdesSimple(m);
+          serdesSimple(m, "OneTypeSubsetFeatures" + m.kind.toString());
           break;
         case TwoTypesSubsetFeatures:
-          serdesSimple(m);
+          serdesSimple(m, "TwoTypesSubsetFeatures" + m.kind.toString());
           break;
         case TwoTypes:
+          i++;
+          serdesSimple(m, "OtherAllKinds" + m.kind.toString() + Integer.toString(i));
+          break;
         case EqTwoTypes:
         case OneType:
         case TwoTypesNoFeatures:
-          serdesSimple(m);
+          serdesSimple(m, "OtherAllKinds" + m.kind.toString());
           break;
         }
       }
@@ -370,26 +377,31 @@ public class SerDesTest6 extends TestCas
   //   T1 fsArray ref -> T2 -> T1 (new) (indexed)
   //   T1         ref -> T2 -> T1 (new) (indexed)
 
-  public void testRefThroughFilteredType() throws IOException {
-    reftft (OneType);
+  public void testRefThroughFilteredType() {
+    reftft(OneType, 0);
     for (int i = 0; i < 10; i++) {
-      reftft (TwoTypesSubsetFeatures);
+      reftft(TwoTypesSubsetFeatures, i);
     }
-    reftft(TwoTypesNoFeatures);
+    reftft(TwoTypesNoFeatures, 0);
   }
   
-  private void reftft(TypeSystems tskind) {
-    reftft(tskind, true);
-    reftft(tskind, false);
+  private void reftft(TypeSystems tskind, int i) {
+    reftft(tskind, true, i);
+    reftft(tskind, false, i);
   }
   
-  private void reftft(TypeSystems tskind, boolean indexed) {
+  /**
+   * Inner part of test of refs through filtered type
+   * 
+   * @param tskind -
+   * @param indexed -
+   */
+  private void reftft(TypeSystems tskind, boolean indexed, int i) {
     lfs.clear();
     
     TTypeSystem m = getTT(tskind);
     remoteCas = setupCas(m);
-    
-    TTypeSystem mSrc = getTT(TwoTypes);
+    // casSrc.reset();
     makeFeaturesForAkof(casSrc, mSrc, Akof1);
     
     FeatureStructure otherTsFs = casSrc.createFS(mSrc.getType(Akof2));
@@ -403,10 +415,13 @@ public class SerDesTest6 extends TestCas
       casSrc.addFsToIndexes(ts1Fs);
     }
     
-    verify(remoteCas);   
+    verify(remoteCas, "refThroughFilteredType" 
+       + (indexed ? "Indexed" : "NotIndexed") 
+       + tskind.toString() + Integer.toString(i));
+    
   }
   // broken out special instances of random tests
-  public void testDeltaWithStringArrayMod() throws IOException {
+  public void testDeltaWithStringArrayMod() {
     // casSrc -> remoteCas,remoteCas updated, serialized back to srcCas
     for (int i = 0; i < 10; i++) {
       TTypeSystem m = getTT(EqTwoTypes);
@@ -426,13 +441,15 @@ public class SerDesTest6 extends TestCas
         verifyDelta(marker, ri);
         break;
       }
-      setRandom();
+      // setRandom();
       setUp();
+      long seed = random.nextLong();
+      random.setSeed(seed);
       System.out.println(" testDelta w/ String array mod random = " + seed + ", i = " + i);
     }
   }
 
-  public void testDeltaWithDblArrayMod() throws IOException {
+  public void testDeltaWithDblArrayMod() {
     for (int i = 0; i < 10; i++) {
       TTypeSystem m = getTT(EqTwoTypes);
       remoteCas = setupCas(m);
@@ -451,13 +468,15 @@ public class SerDesTest6 extends TestCas
         verifyDelta(marker, ri);
         break;
       }      
-      setRandom();
+      // setRandom();
       setUp();
+      long seed = random.nextLong();
+      random.setSeed(seed);
       System.out.println(" testDelta w/ dbl array mod random = " + seed + ", i = " + i);
     }
   }
   
-  public void testDeltaWithByteArrayMod() throws IOException {
+  public void testDeltaWithByteArrayMod() {
     for (int i = 0; i < 10; i++) {
       TTypeSystem m = getTT(EqTwoTypes);
       remoteCas = setupCas(m);
@@ -478,13 +497,13 @@ public class SerDesTest6 extends TestCas
         verifyDelta(marker, ri);
         break;
       }
-      setRandom();  // retry with different random number
+      // setRandom(); // retry with different random number
       setUp();
       System.out.println("  testDelta w byte array mod retrying, i = " + i);
     }
   }
 
-  public void testDeltaWithStrArrayMod() throws IOException {
+  public void testDeltaWithStrArrayMod() {
     TTypeSystem m = getTT(EqTwoTypes);
     remoteCas = setupCas(m);
     loadCas(casSrc, mSrc);
@@ -502,17 +521,16 @@ public class SerDesTest6 extends TestCas
     verifyDelta(marker, ri);
   }
   
-  
-  private void serdesSimple(TTypeSystem m) {
+  private void serdesSimple(TTypeSystem m, String kind) {
     remoteCas = setupCas(m);
     casSrc.reset();
     loadCas(casSrc, mSrc);  
-    verify(remoteCas);  
+    verify(remoteCas, kind);
     
     // test case where serialization is done without type filtering,
     //   and deserialization is done with filtering
     remoteCas.reset();
-    verifyDeserFilter(remoteCas); 
+    verifyDeserFilter(remoteCas, "WithDeserFilter" + kind);
   }
   
   /**
@@ -553,13 +571,15 @@ public class SerDesTest6 extends TestCas
   }
   
   private void serdesDelta(TTypeSystem m) {
-    remoteCas = setupCas(m);
+    remoteCas = setupCas(m); // create empty new CAS with specified type system from m.ts
 //    casSrc.reset();
-    loadCas(casSrc, mSrc);
+    loadCas(casSrc, mSrc); // load up the src cas using mSrc spec
+    // src -> serialize -> deserialize -> rmt
     ReuseInfo[] ri = serializeDeserialize(casSrc, remoteCas, null, null);
     
     MarkerImpl marker = (MarkerImpl) remoteCas.createMarker();
-    loadCas(remoteCas, m);
+    loadCas(remoteCas, m); // load some changes into remote
+    // rmt -> serialize(full ts) -> deserialize(2 ts) -> src, then compare src & rmt
     verifyDelta(marker, ri); 
   }
   
@@ -591,8 +611,9 @@ public class SerDesTest6 extends TestCas
     ReuseInfo ri[] = serializeDeserialize(casSrc, remoteCas, null, null);
     MarkerImpl marker = (MarkerImpl) remoteCas.createMarker();
     
-    lfs = getIndexedFSs(remoteCas, m);
+    lfs = getIndexedFSs(remoteCas, m); // get list of all "Akof1" FS
     FeatureStructure fs = remoteCas.createFS(m.getType(Akof1));
+    // set the lfs.get(0) featurestructure's feature "Fs" to the new fs
     maybeSetFeatureKind( lfs.get(0), m, "Fs", fs);
     
     verifyDelta(marker, ri);
@@ -644,9 +665,7 @@ public class SerDesTest6 extends TestCas
 
   }
   
-
-  
-  public void testDeltaWithIndexMods() throws IOException {
+  public void testDeltaWithIndexMods() {
     TTypeSystem m = getTT(EqTwoTypes);
     remoteCas = setupCas(m);
     loadCas(casSrc, mSrc);
@@ -682,15 +701,88 @@ public class SerDesTest6 extends TestCas
     testArrayAux();
   }
 
+  private void runCaptureSet() {
+    //  Java 8 style
+//    setupRunTeardown(this::testDocText);
+//    setupRunTeardown(this::testDocumentText);
+//    setupRunTeardown(this::testAllKinds);
+//    setupRunTeardown(this::testRefThroughFilteredType);
+//    setupRunTeardown(this::testDeltaWithStringArrayMod);
+//    setupRunTeardown(this::testDeltaWithDblArrayMod);
+//    setupRunTeardown(this::testDeltaWithByteArrayMod);
+//    setupRunTeardown(this::testDeltaWithStrArrayMod);
+//    setupRunTeardown(this::testDelta);
+//    setupRunTeardown(this::testDeltaWithRefsBelow);
+//    setupRunTeardown(this::testDeltaWithMods);
+//    setupRunTeardown(this::testDeltaWithIndexMods);
+//    setupRunTeardown(this::testArrayAux);
+    
+    // Java 7 style
+    setupRunTeardown(new Runnable() {public void run() {testDocText();}});     
+    setupRunTeardown(new Runnable() {public void run() {testDocumentText();}});
+    setupRunTeardown(new Runnable() {public void run() {testAllKinds();}});
+    setupRunTeardown(new Runnable() {public void run() {testRefThroughFilteredType();}});
+    setupRunTeardown(new Runnable() {public void run() {testDeltaWithStringArrayMod();}});
+    setupRunTeardown(new Runnable() {public void run() {testDeltaWithDblArrayMod();}});
+    setupRunTeardown(new Runnable() {public void run() {testDeltaWithByteArrayMod();}});
+    setupRunTeardown(new Runnable() {public void run() {testDeltaWithStrArrayMod();}});
+    setupRunTeardown(new Runnable() {public void run() {testDelta();}});
+    setupRunTeardown(new Runnable() {public void run() {testDeltaWithRefsBelow();}});
+    setupRunTeardown(new Runnable() {public void run() {testDeltaWithMods();}});
+    setupRunTeardown(new Runnable() {public void run() {testDeltaWithIndexMods();}});
+    setupRunTeardown(new Runnable() {public void run() {testArrayAux();}});
+
+  }
+
+  public void captureGenerated() {
+    capture = true;
+    initWriteSavedInts();
+    runCaptureSet();
+    try {
+      savedIntsOutStream.close();
+    } catch (IOException e) {
+      throw new RuntimeException(e);
+    }
+    capture = false;
+
+  }
+
+  /**
+   * See if can read Version 2 serialized things and deserialize them Note:
+   * Delta won't work unless the previous v2 test case indexed or ref'd all the
+   * FSs, because otherwise, some FSs will be "deleted" by the modelling V3 does
+   * for the CAS layout because they're not findable during scanning, and
+   * therefore, delta mods won't be correct.
+   */
+  public void testWithPrevGenerated() {
+    isKeep = true; // forces all akof fss to be indexed
+    usePrevData = true;
+    initReadSavedInts();
+    runCaptureSet();
+    isKeep = false;
+    usePrevData = false;
+    try {
+      savedIntsStream.close();
+    } catch (IOException e) {
+      throw new RuntimeException(e);
+    }
+  }
+
+  public void setupRunTeardown(Runnable tst) {
+    setUp();
+    tst.run();
+    tearDown();
+  }
+
   public void testArrayAux() {
-    ArrayList<FeatureStructure> fsl = new ArrayList<FeatureStructure>();
+    ArrayList<FeatureStructure> fsList = new ArrayList<FeatureStructure>();
     /**
      * Strings, non-array Long/Double:
      * Make equal items,
      * ser/deser, update one of the equal items, insure other not updated
      */
-    FeatureStructure fsAt1 = newAkof(casSrc, mSrc, Akof1, fsl);
-    FeatureStructure fsAt2 = newAkof(casSrc, mSrc, Akof1, fsl);
+    FeatureStructure fsAt1 = newAkof(casSrc, mSrc, Akof1, fsList);
+    FeatureStructure fsAt2 = newAkof(casSrc, mSrc, Akof1, fsList);
     casSrc.addFsToIndexes(fsAt1);
     casSrc.addFsToIndexes(fsAt2);
 
@@ -698,7 +790,7 @@ public class SerDesTest6 extends TestCas
     createStringA(casSrc, mSrc, fsAt2, "at");
     TTypeSystem m = getTT(EqTwoTypes);
     remoteCas = setupCas(m);
-    verify(remoteCas);
+    verify(remoteCas, "ArrayAuxString");
     
     FSIterator<FeatureStructure> it = remoteCas.indexRepository.getAllIndexedFS(m.getType(Akof1));
     FeatureStructure fsAt1d = it.next();
@@ -711,15 +803,15 @@ public class SerDesTest6 extends TestCas
     
     casSrc.reset();
     
-    fsAt1 = newAkof(casSrc, mSrc, Akof1, fsl);
-    fsAt2 = newAkof(casSrc, mSrc, Akof1, fsl);
+    fsAt1 = newAkof(casSrc, mSrc, Akof1, fsList);
+    fsAt2 = newAkof(casSrc, mSrc, Akof1, fsList);
     casSrc.addFsToIndexes(fsAt1);
     casSrc.addFsToIndexes(fsAt2);
 
     createLongA(casSrc, mSrc, fsAt1, 9);
     createLongA(casSrc, mSrc, fsAt2, 9);
     remoteCas.reset();
-    verify(remoteCas);
+    verify(remoteCas, "ArrayAuxLong");
     
     it = remoteCas.indexRepository.getAllIndexedFS(m.getType(Akof1));
     fsAt1d = it.next();
@@ -805,7 +897,8 @@ public class SerDesTest6 extends TestCas
 //    c2.reinit(bais);
 //  }
   
-  private FeatureStructure newAkof(CASImpl cas, TTypeSystem m, Types typeKind, List<FeatureStructure> fsl) {
+  private FeatureStructure newAkof(CASImpl cas, TTypeSystem m, Types typeKind,
+      List<FeatureStructure> fsl) {
     FeatureStructure fs = cas.createFS(m.getType(typeKind.name()));
     fsl.add(fs);
     return fs;
@@ -947,6 +1040,8 @@ public class SerDesTest6 extends TestCas
     case TwoTypesSubsetFeatures:
     case TwoTypesNoFeatures:
       makeFeaturesForAkof(cas, m, Akof2);
+      break;
+    default:
     }
   }
   
@@ -1196,12 +1291,14 @@ public class SerDesTest6 extends TestCas
     makeRandomFss(cas, m, typeKind, 15);
   }
 
-  private void verify(CASImpl casTgt) {
+  private void verify(CASImpl casTgt, String fname) {
     // no delta case:
     // casSrc -> deserCas 
     BinaryCasSerDes6 bcs = null;
     try {
       ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
+      ByteArrayInputStream bais;
+      if (!usePrevData) {
       if (doPlain) {
         (new CASSerializer()).addCAS(casSrc, baos);      
       } else {
@@ -1212,8 +1309,15 @@ public class SerDesTest6 extends TestCas
 //        if (null != sm) {
 //          System.out.println(sm);
 //        }
+          if (capture) {
+            writeout(baos, fname);
+      }
+        }
+        bais = new ByteArrayInputStream(baos.toByteArray());
+      } else {
+        bcs = new BinaryCasSerDes6(casSrc, casTgt.getTypeSystemImpl());
+        bais = new ByteArrayInputStream(readIn(fname));
       }
-      ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
       casTgt.reinit(bais);
       if (doPlain) {
         assertTrue(new BinaryCasSerDes6(casSrc).compareCASes(casSrc, casTgt));
@@ -1229,7 +1333,7 @@ public class SerDesTest6 extends TestCas
     }    
   }
   
-  private void verifyDeserFilter(CASImpl casTgt) {
+  private void verifyDeserFilter(CASImpl casTgt, String fname) {
     // serialize w/o filter
     BinaryCasSerDes6 bcs = null;
     try {
@@ -1239,8 +1343,14 @@ public class SerDesTest6 extends TestCas
       } else {      
         bcs = new BinaryCasSerDes6(casSrc, (ReuseInfo) null);
         bcs.serialize(baos);
+        if (capture) {
+          writeout(baos, fname);
       }
-      ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+      }
+      ByteArrayInputStream bais = (!usePrevData || fname == null) 
+          ? new ByteArrayInputStream(baos.toByteArray())
+          : new ByteArrayInputStream(readIn(fname));
+          
       Serialization.deserializeCAS(casTgt, bais, casSrc.getTypeSystemImpl(), null);
 
       bcs = new BinaryCasSerDes6(casSrc, casTgt.getTypeSystemImpl());
@@ -1255,10 +1365,7 @@ public class SerDesTest6 extends TestCas
   }
 
   // casSrc -> remoteCas
-  private ReuseInfo[] serializeDeserialize(
-      CASImpl casSrc, 
-      CASImpl casTgt, 
-      ReuseInfo ri, 
+  private ReuseInfo[] serializeDeserialize(CASImpl casSrc, CASImpl casTgt, ReuseInfo ri,
       MarkerImpl mark) {
     ReuseInfo[] riToReturn = new ReuseInfo[2];
     try {
@@ -1272,7 +1379,9 @@ public class SerDesTest6 extends TestCas
       } else {
         BinaryCasSerDes6 bcs = new BinaryCasSerDes6(casSrc, casTgt.getTypeSystemImpl());
         SerializationMeasures sm = bcs.serialize(baos);
-        if (sm != null) {System.out.println(sm);}
+        if (sm != null) {
+          System.out.println(sm);
+        }
         riToReturn[0] = bcs.getReuseInfo();
       }
       ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
@@ -1298,14 +1407,17 @@ public class SerDesTest6 extends TestCas
       } else {
         BinaryCasSerDes6 bcs = new BinaryCasSerDes6(remoteCas, mark, null, ri[1]);
         SerializationMeasures sm = bcs.serialize(baos);
-        if (sm != null) {System.out.println(sm);}
+        if (sm != null) {
+          System.out.println(sm);
+        }
       }
       ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
       if (doPlain) {
         casSrc.reinit(bais);
         assertTrue(new BinaryCasSerDes6(casSrc).compareCASes(casSrc, remoteCas));
       } else {
-          BinaryCasSerDes6 bcsDeserialize = Serialization.deserializeCAS(casSrc, bais, remoteCas.getTypeSystemImpl(), ri[0]);
+        BinaryCasSerDes6 bcsDeserialize = Serialization.deserializeCAS(casSrc, bais,
+            remoteCas.getTypeSystemImpl(), ri[0]);
           assertTrue(bcsDeserialize.compareCASes(casSrc, remoteCas));
       }      
     } catch (IOException e) {
@@ -1448,4 +1560,15 @@ public class SerDesTest6 extends TestCas
     }
     return lfs;
   }
+
+  @Override
+  protected String getTestRootName() {
+    return "SerDes6";
+  }
+
+  // disable to avoid accidentally overwriting test data
+  static public void main(String[] args) throws IOException {
+    new SerDesTest6().captureGenerated();
+  }
+
 }

Added: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTstCommon.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTstCommon.java?rev=1772718&view=auto
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTstCommon.java (added)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTstCommon.java Mon Dec  5 17:02:17 2016
@@ -0,0 +1,233 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.uima.cas.impl;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.util.Random;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import junit.framework.TestCase;
+
+/**
+ * Serializer and Deserializer testing
+ * Common code for testing
+ * 
+ * Has main method for creating resources to use in testing
+ *   will update resources in SerDes4 or 6.  If you do this by mistake, just revert those resources.
+ *   
+ * Multi-threading:  
+ * Create one instance of this class per instance of using class
+ *   ** Not one instance per "setup" call **
+ */
+public abstract class SerDesTstCommon extends TestCase {
+
+  // FIXME need to understand why includeUid is false, seems to be disabling some testing Nov 2016
+  private static final boolean includeUid = false;
+  private static final AtomicInteger aint = includeUid? new AtomicInteger(0) : null;
+  
+  /**
+   * A version of Random that can pull numbers from a stream instead
+   *   - useful for reproducing a previously generated set of random numbers
+   *   - used when running against previously generated serialized data
+   *
+   */
+  class MyRandom extends Random {
+
+    @Override
+    public int nextInt(int n) {
+      int r = usePrevData ? readNextSavedInt() : super.nextInt(n);
+      if (capture) writeSavedInt(r);
+      if (r >= n) {
+        throw new RuntimeException("Internal error - using prev value, max is " + n + ", val read was " + r);
+      }
+      return r;
+    }
+
+    @Override
+    public int nextInt() {
+      int r = usePrevData ? readNextSavedInt() : super.nextInt();
+      if (capture) writeSavedInt(r);
+      return r;
+    }
+
+    @Override
+    public long nextLong() {
+      int r = usePrevData ? readNextSavedInt() : super.nextInt();
+      if (capture) writeSavedInt(r);      
+      return r;
+    }
+
+    @Override
+    public boolean nextBoolean() {
+      int r = usePrevData ? readNextSavedInt() : super.nextInt(2);
+      if (capture) writeSavedInt(r);      
+      return r == 0;
+    }
+
+    @Override
+    public float nextFloat() {
+      int r = usePrevData ? readNextSavedInt() : super.nextInt(0x7ffff);
+      if (capture) writeSavedInt(r);
+      return Float.intBitsToFloat(r);
+    }
+
+    @Override
+    public double nextDouble() {
+      int r = usePrevData ? readNextSavedInt() : super.nextInt(0x7ffff);
+      if (capture) writeSavedInt(r);
+      return CASImpl.long2double((long) r);
+    }
+
+    @Override
+    protected int next(int bits) {
+      if (usePrevData) {
+        throw new RuntimeException("invalid - never called");
+      }
+      return super.next(bits);
+    }
+    
+  }
+  
+  // Create a random number generator to use for random seeds
+  // one per thread (one per class instance)
+  private final Random randomseed = new Random();
+  
+  { long seed = randomseed.nextLong();
+    // long seed = 1_449_257_605_347_913_923L;   // to set a specific seed
+    randomseed.setSeed(seed);  
+    System.out.format("SerDesTstCommon Initial RandomSeed: %,d%n", seed);
+  }
+  
+  /**
+   * The random number generator - used throughout.
+   * Can return a pre-computed stream of random numbers if usePrevData is true
+   * Can save the stream of random numbers if capture is true
+   * 
+   */
+  protected final Random           random      = new MyRandom();
+  { random.setSeed(randomseed.nextLong()); }
+
+  /** set to true to change FS creation to keep references to all created FS
+   * needed for testing backward compatibility with delta cas
+   * Done by adding to indexes FSs which otherwise would be lost
+   */
+  protected boolean isKeep = false;
+  
+  // saving random numbers 
+  protected BufferedReader         savedIntsStream;
+  protected OutputStreamWriter     savedIntsOutStream;
+  private int                    savedIntSeq = 0;  // useful in debug mode
+  protected boolean capture = false; // capture the serialized output
+  protected boolean                usePrevData = false;
+
+  protected boolean                doPlain     = false;
+
+  protected void writeout(ByteArrayOutputStream baos, String fname) throws IOException {
+    if (null == fname) {
+      return;
+    }
+    BufferedOutputStream fos = setupFileOut(fname);
+    fos.write(baos.toByteArray());
+    fos.close();
+  }
+
+  // read and create byte array to use as 
+  // test data for checking previously serialized
+  protected byte[] readIn(String fname) throws IOException {
+    File f = new File("src/test/resources/" + getTestRootName() + "/" + fname + ".binary");
+    int len = (int) f.length();
+    byte[] buffer = new byte[len];
+    BufferedInputStream inStream = 
+      new BufferedInputStream(
+          new FileInputStream(f));
+    int br = inStream.read(buffer);
+    if (br != len) {
+      throw new RuntimeException("Corrupted test saved ints stream");
+    }
+    inStream.close();
+    return buffer;
+  }
+
+  protected abstract String getTestRootName();
+  
+  private BufferedOutputStream setupFileOut(String fname) throws IOException {
+    if (null == fname) {
+      return null;
+    }
+    File dir = new File("src/test/resources/" + getTestRootName() + "/");
+    if (!dir.exists()) {
+      dir.mkdirs();
+    }
+    
+    System.out.println("debug out file name is " + fname);  
+    
+
+    return
+      new BufferedOutputStream(
+        new FileOutputStream(
+          new File("src/test/resources/" + getTestRootName() + "/" + fname + ".binary")));
+
+  }
+
+  protected void initWriteSavedInts() {
+    try {
+      savedIntsOutStream = new OutputStreamWriter(setupFileOut("SavedInts"));
+    } catch (IOException e) {
+      throw new RuntimeException(e);
+    }
+  }
+
+  protected void initReadSavedInts() {
+    try {
+      savedIntsStream = new BufferedReader(new FileReader("src/test/resources/" + getTestRootName() + "/SavedInts.binary"));
+      savedIntSeq = 0;
+    } catch (IOException e) {
+      throw new RuntimeException(e);
+    }
+  }
+
+  private void writeSavedInt(int i) {
+    try {
+      savedIntsOutStream.write(Integer.toString(i) + '\n');
+    } catch (IOException e) {
+      throw new RuntimeException(e);
+    }
+  }
+
+   
+  private int readNextSavedInt() {
+    try {
+      String s = savedIntsStream.readLine();
+//      System.out.println("debug savedInt " + savedIntSeq++ + ", value " + s);
+      return Integer.parseInt(s);
+    } catch (IOException e) {
+      throw new RuntimeException(e);
+    }
+  }
+
+}
\ No newline at end of file

Added: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/ArrayAuxLong.binary
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/ArrayAuxLong.binary?rev=1772718&view=auto
==============================================================================
Binary file - no diff available.

Propchange: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/ArrayAuxLong.binary
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/ArrayAuxString.binary
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/ArrayAuxString.binary?rev=1772718&view=auto
==============================================================================
Binary file - no diff available.

Propchange: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/ArrayAuxString.binary
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/DocumentText.binary
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/DocumentText.binary?rev=1772718&view=auto
==============================================================================
Binary file - no diff available.

Propchange: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/DocumentText.binary
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OneTypeSubsetFeaturesOneTypeSubsetFeatures.binary
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OneTypeSubsetFeaturesOneTypeSubsetFeatures.binary?rev=1772718&view=auto
==============================================================================
Binary file - no diff available.

Propchange: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OneTypeSubsetFeaturesOneTypeSubsetFeatures.binary
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsOneType.binary
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsOneType.binary?rev=1772718&view=auto
==============================================================================
Binary file - no diff available.

Propchange: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsOneType.binary
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsTwoTypes1.binary
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsTwoTypes1.binary?rev=1772718&view=auto
==============================================================================
Binary file - no diff available.

Propchange: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsTwoTypes1.binary
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsTwoTypes2.binary
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsTwoTypes2.binary?rev=1772718&view=auto
==============================================================================
Binary file - no diff available.

Propchange: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsTwoTypes2.binary
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsTwoTypesNoFeatures.binary
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsTwoTypesNoFeatures.binary?rev=1772718&view=auto
==============================================================================
Binary file - no diff available.

Propchange: uima/uimaj/trunk/uimaj-core/src/test/resources/SerDes6/OtherAllKindsTwoTypesNoFeatures.binary
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream