meatier test case and tweaks for PositionWritable
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionWritable.java
index ae02982..593ed65 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionWritable.java
@@ -16,6 +16,12 @@
     protected int offset;
     public static final int LENGTH = 8;
     
+    public static final int totalBits = 64;
+    private static final int bitsForMate = 1;
+    private static final int bitsForPosition = 16;
+    private static final int readIdShift = bitsForPosition + bitsForMate;
+    private static final int positionIdShift = bitsForMate;
+    
     public PositionWritable() {
         storage = new byte[LENGTH];
         offset = 0;
@@ -35,7 +41,7 @@
     }
     
     public void set(byte mateId, long readId, int posId){
-        long uuid = (readId << 17) + ((posId & 0xFFFF) << 1) + (mateId & 0b1);
+        long uuid = (readId << readIdShift) + ((posId & 0xFFFF) << positionIdShift) + (mateId & 0b1);
         Marshal.putLong(uuid, storage, offset);
     }
     
@@ -57,11 +63,11 @@
     }
     
     public long getReadId(){
-        return Marshal.getLong(storage, offset) >> 17;
+        return Marshal.getLong(storage, offset) >>> readIdShift;
     }
     
     public int getPosId(){
-        return (int) ((Marshal.getLong(storage, offset) >> 1) & 0xffff);
+        return (int) ((Marshal.getLong(storage, offset) >>> positionIdShift) & 0xffff);
     }
     
     public byte[] getByteArray() {
@@ -104,8 +110,11 @@
         return (this.getUUID() < other.getUUID()) ? -1 : ((this.getUUID() == other.getUUID()) ? 0 : 1);
     }
     
+    /*
+     * String of form "(readId-posID_mate)" where mate is _1 or _2
+     */
     @Override
     public String toString() {
-        return "(" + Long.toString(this.getUUID()) + ")";
+        return "(" + this.getReadId() + "-" + this.getPosId() + "_" + (this.getMateId() + 1) + ")";
     }
 }
diff --git a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/PositionWritableTest.java b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/PositionWritableTest.java
index f7e634b..540c6eb 100644
--- a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/PositionWritableTest.java
+++ b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/PositionWritableTest.java
@@ -1,4 +1,6 @@
 package edu.uci.ics.genomix.data.test;
+import java.util.Random;
+
 import junit.framework.Assert;
 
 import org.junit.Test;
@@ -15,11 +17,12 @@
         byte mateId;
         long readId;
         int posId;
-        byte[] start = new byte[8];
-        for (int i = 0; i < 65535; i++) {
-            mateId = (byte)1;//0
-            readId = (long)i;
-            posId = i;
+        Random gen = new Random();
+        byte[] start = new byte[15];
+        for (long i = 0; i < (1 << 47); i++) {
+            mateId = (byte) (gen.nextBoolean() ? 1 : 0);
+            readId = i;
+            posId = (int) (i % (1 << 16));
             pos = new PositionWritable(mateId, readId, posId);
             Assert.assertEquals(pos.getMateId(), mateId);
             Assert.assertEquals(pos.getReadId(), readId);
@@ -36,6 +39,9 @@
             Assert.assertEquals(pos.getMateId(), mateId);
             Assert.assertEquals(pos.getReadId(), readId + 1);
             Assert.assertEquals(pos.getPosId(), posId);
+            
+            Assert.assertEquals(pos1.toString(), pos.toString());
+            String out = pos.toString();
         }
     }
 }