diff options
| author | Brian S. O'Neill <bronee@gmail.com> | 2008-07-25 06:13:20 +0000 |
|---|---|---|
| committer | Brian S. O'Neill <bronee@gmail.com> | 2008-07-25 06:13:20 +0000 |
| commit | 799ead1e727d9abe87d55d890644c409b337f524 (patch) | |
| tree | a8936526fb896c147a3922c370549093ff882e28 /src/test/java/com/amazon/carbonado/TestStorables.java | |
| parent | c991e3fc885200737682f088969845f43c0c4f4c (diff) | |
Complete BigDecimal support -- ensure that failed update rolls back normalization.
Diffstat (limited to 'src/test/java/com/amazon/carbonado/TestStorables.java')
| -rw-r--r-- | src/test/java/com/amazon/carbonado/TestStorables.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/test/java/com/amazon/carbonado/TestStorables.java b/src/test/java/com/amazon/carbonado/TestStorables.java index c54099e..bfedd12 100644 --- a/src/test/java/com/amazon/carbonado/TestStorables.java +++ b/src/test/java/com/amazon/carbonado/TestStorables.java @@ -3156,6 +3156,46 @@ public class TestStorables extends TestCase { return bd.stripTrailingZeros(); } + public void test_BigDecimalVersioned() throws Exception { + BigDecimal bd = new BigDecimal("123.000"); + BigDecimal expected = expected(bd); + + Storage<WithBigDecimalVersioned> storage = + getRepository().storageFor(WithBigDecimalVersioned.class); + + WithBigDecimalVersioned s = storage.prepare(); + s.setId(1); + s.setNumber(bd); + s.insert(); + + // Ensure insert behaves as if Storable was reloaded. + assertEquals(expected, s.getNumber()); + + int version = s.getVersion(); + + bd = new BigDecimal("200.000"); + expected = expected(bd); + + s = storage.prepare(); + s.setId(1); + s.setNumber(bd); + s.setVersion(version - 1); + try { + s.update(); + fail(); + } catch (OptimisticLockException e) { + } + + // Since no update actually happened, scale should stay the same. + assertEquals(bd, s.getNumber()); + + s.setVersion(version); + s.update(); + + // Now side-effect should be visble. + assertEquals(expected, s.getNumber()); + } + public void test_BigDecimalCompare() throws Exception { BigDecimal bd1 = new BigDecimal("123.0"); BigDecimal bd2 = new BigDecimal("123"); |
