diff options
| author | Brian S. O'Neill <bronee@gmail.com> | 2008-07-22 09:19:51 +0000 | 
|---|---|---|
| committer | Brian S. O'Neill <bronee@gmail.com> | 2008-07-22 09:19:51 +0000 | 
| commit | 4311256bbfdcc051cc1bfc5874ea260ffe482b8e (patch) | |
| tree | 0ea096cc9eccce001f448f073afcf8f2204ccde9 /src | |
| parent | 6e54671ace39adb30f0b6179eaba6c3aaa958496 (diff) | |
Added advanced conversion capability when setting query filter properties. This is used to ensure that BigDecimal values are properly normalized.
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/java/com/amazon/carbonado/TestStorables.java | 53 | ||||
| -rw-r--r-- | src/test/java/com/amazon/carbonado/util/TestConversionComparator.java (renamed from src/test/java/com/amazon/carbonado/info/TestConversionComparator.java) | 2 | 
2 files changed, 49 insertions, 6 deletions
diff --git a/src/test/java/com/amazon/carbonado/TestStorables.java b/src/test/java/com/amazon/carbonado/TestStorables.java index 9d05056..a170409 100644 --- a/src/test/java/com/amazon/carbonado/TestStorables.java +++ b/src/test/java/com/amazon/carbonado/TestStorables.java @@ -3050,11 +3050,22 @@ public class TestStorables extends TestCase {          s = query.with(BigInteger.ZERO).tryLoadOne();          assertEquals(null, s); + +        s = storage.prepare(); +        s.setId(3); +        s.setNumber(BigInteger.ONE); +        s.insert(); + +        s = query.with(BigInteger.ONE).loadOne(); +        assertEquals(BigInteger.ONE, s.getNumber()); + +        s = query.with(1).loadOne(); +        assertEquals(BigInteger.ONE, s.getNumber());      }      public void test_BigDecimal() throws Exception {          BigDecimal bd = new BigDecimal("12345678901234567890.1234567890"); -        BigDecimal normalized = bd.stripTrailingZeros(); +        BigDecimal normalized = expectedNormalization(bd);          Storage<WithBigDecimal> storage = getRepository().storageFor(WithBigDecimal.class); @@ -3069,9 +3080,18 @@ public class TestStorables extends TestCase {          s = storage.prepare();          s.setId(1);          s.load(); -        assertFalse(bd.equals(s.getNumber()));          assertEquals(normalized, s.getNumber()); +        { +            s = storage.prepare(); +            s.setId(1); +            BigDecimal bd2 = new BigDecimal("123.0"); +            s.setNumber(bd2); +            assertFalse(s.tryInsert()); +            // Verify that normalization is rolled back if insert fails. +            assertEquals(bd2, s.getNumber()); +        } +          s = storage.prepare();          s.setId(2);          s.setNumber(null); @@ -3088,11 +3108,10 @@ public class TestStorables extends TestCase {          s = query.with(bd).loadOne();          assertEquals(1, s.getId()); -        assertFalse(bd.equals(s.getNumber()));          assertEquals(normalized, s.getNumber());          BigDecimal bd2 = new BigDecimal("123.0"); -        BigDecimal nm2 = bd2.stripTrailingZeros(); +        BigDecimal nm2 = expectedNormalization(bd2);          s.setNumber(bd2);          s.update(); @@ -3100,12 +3119,36 @@ public class TestStorables extends TestCase {          // Ensure update behaves as if Storable was reloaded.          assertEquals(nm2, s.getNumber()); +        { +            WithBigDecimal s2 = storage.prepare(); +            s2.setId(999); +            BigDecimal bd3 = new BigDecimal("123.0"); +            s2.setNumber(bd3); +            assertFalse(s2.tryUpdate()); +            // Verify that normalization is rolled back if update fails. +            assertEquals(bd3, s2.getNumber()); +        } +          s.load(); -        assertFalse(bd2.equals(s.getNumber()));          assertEquals(nm2, s.getNumber());          s = query.with(BigDecimal.ZERO).tryLoadOne();          assertEquals(null, s); + +        s = storage.prepare(); +        s.setId(3); +        s.setNumber(BigDecimal.ONE); +        s.insert(); + +        s = query.with(BigDecimal.ONE).loadOne(); +        assertEquals(BigDecimal.ONE, s.getNumber()); + +        s = query.with(1).loadOne(); +        assertEquals(BigDecimal.ONE, s.getNumber()); +    } + +    protected BigDecimal expectedNormalization(BigDecimal bd) { +        return bd.stripTrailingZeros();      }      private void assertUninitialized(boolean expected, Storable storable, String... properties) { diff --git a/src/test/java/com/amazon/carbonado/info/TestConversionComparator.java b/src/test/java/com/amazon/carbonado/util/TestConversionComparator.java index a4e5614..bb4cb7f 100644 --- a/src/test/java/com/amazon/carbonado/info/TestConversionComparator.java +++ b/src/test/java/com/amazon/carbonado/util/TestConversionComparator.java @@ -16,7 +16,7 @@   * limitations under the License.
   */
 -package com.amazon.carbonado.info;
 +package com.amazon.carbonado.util;
  import junit.framework.TestCase;
  import junit.framework.TestSuite;
  | 
