/* * Copyright 2006 Amazon Technologies, Inc. or its affiliates. * Amazon, Amazon.com and Carbonado are trademarks or registered trademarks * of Amazon Technologies, Inc. or its affiliates. All rights reserved. * * Licensed 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 com.amazon.carbonado.raw; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Random; import junit.framework.TestCase; import junit.framework.TestSuite; /** * Test case for {@link KeyEncoder} and {@link KeyDecoder}. *

* It generates random data values, checks that the decoding produces the * original results, and it checks that the order of the encoded bytes matches * the order of the original data values. * * @author Brian S O'Neill */ public class TestKeyEncoding extends TestCase { private static final int SHORT_TEST = 100; private static final int MEDIUM_TEST = 1000; private static final int LONG_TEST = 10000; public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public static TestSuite suite() { return new TestSuite(TestKeyEncoding.class); } private final long mSeed; private Random mRandom; public TestKeyEncoding(String name) { super(name); mSeed = 5399777425345431L; } protected void setUp() { mRandom = new Random(mSeed); } protected void tearDown() { } public void test_booleanDesc() throws Exception { byte[] bytes = new byte[1]; boolean lastValue = false; byte[] lastBytes = null; for (int i=0; i 0); ref[0] = BigDecimal.ZERO; KeyDecoder.decodeDesc(b1, 0, ref); assertEquals(d1, ref[0]); ref[0] = BigDecimal.ZERO; KeyDecoder.decodeDesc(b2, 0, ref); assertEquals(d2, ref[0]); } { BigDecimal d1 = new BigDecimal("-123.0"); BigDecimal d2 = new BigDecimal("-123"); assertTrue(d1.compareTo(d2) == 0); assertFalse(d1.equals(d2)); byte[] b1 = new byte[KeyEncoder.calculateEncodedLength(d1)]; KeyEncoder.encodeDesc(d1, b1, 0); byte[] b2 = new byte[KeyEncoder.calculateEncodedLength(d2)]; KeyEncoder.encodeDesc(d2, b2, 0); assertTrue(TestDataEncoding.byteArrayCompare(b1, b2) > 0); ref[0] = BigDecimal.ZERO; KeyDecoder.decodeDesc(b1, 0, ref); assertEquals(d1, ref[0]); ref[0] = BigDecimal.ZERO; KeyDecoder.decodeDesc(b2, 0, ref); assertEquals(d2, ref[0]); } byte[] bytes = new byte[5 + 1 + 100 + 5]; BigDecimal lastValue = null; byte[] lastBytes = null; for (int i=0; i