summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/amazon/carbonado/gen/TestStorableSerializer.java248
1 files changed, 248 insertions, 0 deletions
diff --git a/src/test/java/com/amazon/carbonado/gen/TestStorableSerializer.java b/src/test/java/com/amazon/carbonado/gen/TestStorableSerializer.java
index 7e51fa6..eaae78c 100644
--- a/src/test/java/com/amazon/carbonado/gen/TestStorableSerializer.java
+++ b/src/test/java/com/amazon/carbonado/gen/TestStorableSerializer.java
@@ -106,6 +106,98 @@ public class TestStorableSerializer extends TestCase {
assertEquals(s.toString(), s2.toString());
}
+ public void testReadAndWrite3() throws Exception {
+ // Regression test for bug introduced in GenericEncodingStrategy.
+ // Definition of ManyProperties class must not change.
+
+ Storage<ManyProperties> storage = mRepository.storageFor(ManyProperties.class);
+ ManyProperties s = storage.prepare();
+
+ s.setProp01(1);
+ s.setProp02(null);
+ s.setProp03("3");
+ s.setProp04("hello");
+ s.setProp06(6);
+ s.setProp07(7);
+ s.setProp08(8);
+ s.markAllPropertiesClean();
+ s.setProp09(9);
+ s.setProp10(10);
+ s.setProp11(11);
+ s.setProp12(12);
+ s.setProp13(13);
+ s.setProp14(1.4);
+ s.setProp16(16);
+ s.setProp17(17);
+ s.setProp18(18);
+ s.setProp19(19);
+ s.setProp20(20);
+ s.setProp21(21);
+ s.setProp22(22);
+ s.setProp23(23);
+ s.setProp24(24);
+ s.setProp25(25);
+ s.setProp26(26);
+ s.setProp27(27);
+ s.setProp28(28);
+ s.setProp29(29);
+ s.setProp30(30);
+ s.setProp31(31);
+ s.setProp32(32);
+ s.setProp33(33);
+ s.setProp34(34);
+ s.setProp35(35);
+ s.setProp37(37);
+
+ ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ s.writeTo(bout);
+ byte[] bytes = bout.toByteArray();
+
+ ByteArrayInputStream bin = new ByteArrayInputStream(bytes);
+ ManyProperties s2 = storage.prepare();
+ s2.readFrom(bin);
+
+ assertEquals(s, s2);
+ assertEquals(s.toString(), s2.toString());
+
+ assertTrue(s2.isPropertyClean("prop01"));
+ assertTrue(s2.isPropertyClean("prop02"));
+ assertTrue(s2.isPropertyClean("prop03"));
+ assertTrue(s2.isPropertyClean("prop04"));
+ assertTrue(s2.isPropertyClean("prop06"));
+ assertTrue(s2.isPropertyClean("prop07"));
+ assertTrue(s2.isPropertyClean("prop08"));
+ assertTrue(s2.isPropertyClean("prop15"));
+
+ assertTrue(s2.isPropertyDirty("prop09"));
+ assertTrue(s2.isPropertyDirty("prop10"));
+ assertTrue(s2.isPropertyDirty("prop11"));
+ assertTrue(s2.isPropertyDirty("prop12"));
+ assertTrue(s2.isPropertyDirty("prop13"));
+ assertTrue(s2.isPropertyDirty("prop14"));
+ assertTrue(s2.isPropertyDirty("prop16"));
+ assertTrue(s2.isPropertyDirty("prop17"));
+ assertTrue(s2.isPropertyDirty("prop18"));
+ assertTrue(s2.isPropertyDirty("prop19"));
+ assertTrue(s2.isPropertyDirty("prop20"));
+ assertTrue(s2.isPropertyDirty("prop21"));
+ assertTrue(s2.isPropertyDirty("prop22"));
+ assertTrue(s2.isPropertyDirty("prop23"));
+ assertTrue(s2.isPropertyDirty("prop24"));
+ assertTrue(s2.isPropertyDirty("prop25"));
+ assertTrue(s2.isPropertyDirty("prop26"));
+ assertTrue(s2.isPropertyDirty("prop27"));
+ assertTrue(s2.isPropertyDirty("prop28"));
+ assertTrue(s2.isPropertyDirty("prop29"));
+ assertTrue(s2.isPropertyDirty("prop30"));
+ assertTrue(s2.isPropertyDirty("prop31"));
+ assertTrue(s2.isPropertyDirty("prop32"));
+ assertTrue(s2.isPropertyDirty("prop33"));
+ assertTrue(s2.isPropertyDirty("prop34"));
+ assertTrue(s2.isPropertyDirty("prop35"));
+ assertTrue(s2.isPropertyDirty("prop37"));
+ }
+
/*
public void testReadAndWriteLobs() throws Exception {
Storage<StorableWithLobs> storage = mRepository.storageFor(StorableWithLobs.class);
@@ -132,4 +224,160 @@ public class TestStorableSerializer extends TestCase {
assertEquals(s, s2);
}
*/
+
+ @PrimaryKey("id")
+ public static abstract class ManyProperties implements Storable {
+ public abstract int getId();
+ public abstract void setId(int id);
+
+ public abstract int getProp01();
+ public abstract void setProp01(int v);
+
+ @Nullable
+ public abstract Long getProp02();
+ public abstract void setProp02(Long v);
+
+ public abstract String getProp03();
+ public abstract void setProp03(String v);
+
+ @Nullable
+ public abstract String getProp04();
+ public abstract void setProp04(String v);
+
+ @Join(internal="prop06", external="id")
+ public abstract ManyProperties getProp05() throws FetchException;
+ public abstract void setProp05(ManyProperties v);
+
+ public abstract int getProp06();
+ public abstract void setProp06(int v);
+
+ public abstract int getProp07();
+ public abstract void setProp07(int v);
+
+ public abstract int getProp08();
+ public abstract void setProp08(int v);
+
+ @Derived
+ public int getProp08_1() {
+ return getProp08() + 1;
+ }
+
+ public abstract int getProp09();
+ public abstract void setProp09(int v);
+
+ public abstract int getProp10();
+ public abstract void setProp10(int v);
+
+ public abstract int getProp11();
+ public abstract void setProp11(int v);
+
+ public abstract double getProp12();
+ public abstract void setProp12(double v);
+
+ public abstract int getProp13();
+ public abstract void setProp13(int v);
+
+ public abstract Double getProp14();
+ public abstract void setProp14(Double v);
+
+ @Nullable
+ public abstract Double getProp15();
+ public abstract void setProp15(Double v);
+
+ public abstract int getProp16();
+ public abstract void setProp16(int v);
+
+ public abstract int getProp17();
+ public abstract void setProp17(int v);
+
+ public abstract int getProp18();
+ public abstract void setProp18(int v);
+
+ public abstract int getProp19();
+ public abstract void setProp19(int v);
+
+ public abstract int getProp20();
+ public abstract void setProp20(int v);
+
+ public abstract int getProp21();
+ public abstract void setProp21(int v);
+
+ public abstract int getProp22();
+ public abstract void setProp22(int v);
+
+ public abstract int getProp23();
+ public abstract void setProp23(int v);
+
+ public abstract int getProp24();
+ public abstract void setProp24(int v);
+
+ public abstract int getProp25();
+ public abstract void setProp25(int v);
+
+ public abstract int getProp26();
+ public abstract void setProp26(int v);
+
+ public abstract int getProp27();
+ public abstract void setProp27(int v);
+
+ public abstract int getProp28();
+ public abstract void setProp28(int v);
+
+ public abstract int getProp29();
+ public abstract void setProp29(int v);
+
+ public abstract int getProp30();
+ public abstract void setProp30(int v);
+
+ public abstract int getProp31();
+ public abstract void setProp31(int v);
+
+ public abstract int getProp32();
+ public abstract void setProp32(int v);
+
+ public abstract int getProp33();
+ public abstract void setProp33(int v);
+
+ public abstract int getProp34();
+ public abstract void setProp34(int v);
+
+ public abstract int getProp35();
+ public abstract void setProp35(int v);
+
+ @Join(internal="id", external="prop06")
+ public abstract Query<ManyProperties> getProp36() throws FetchException;
+
+ public abstract int getProp37();
+ public abstract void setProp37(int v);
+
+ public abstract int getProp38();
+ public abstract void setProp38(int v);
+
+ public abstract int getProp39();
+ public abstract void setProp39(int v);
+
+ public abstract int getProp40();
+ public abstract void setProp40(int v);
+
+ public abstract int getProp41();
+ public abstract void setProp41(int v);
+
+ public abstract int getProp42();
+ public abstract void setProp42(int v);
+
+ public abstract int getProp43();
+ public abstract void setProp43(int v);
+
+ public abstract int getProp44();
+ public abstract void setProp44(int v);
+
+ public abstract int getProp45();
+ public abstract void setProp45(int v);
+
+ public abstract int getProp46();
+ public abstract void setProp46(int v);
+
+ public abstract int getProp47();
+ public abstract void setProp47(int v);
+ }
}