/* * 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.util.Random; import junit.framework.TestCase; import junit.framework.TestSuite; /** * Test case for {@link DataEncoder} and {@link DataDecoder}. *

* 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 TestDataEncoding extends TestCase { private static final int SHORT_TEST = 100; private static final int MEDIUM_TEST = 500; private static final int LONG_TEST = 1000; public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public static TestSuite suite() { return new TestSuite(TestDataEncoding.class); } /** * @return -1, 0, or 1 */ static int byteArrayCompare(byte[] aa, byte[] ab) { int len = Math.min(aa.length, ab.length); int result = byteArrayCompare(aa, ab, len); if (result == 0 && aa.length != ab.length) { if (aa.length == len) { return -1; } if (ab.length == len) { return 1; } } return result; } /** * @return -1, 0, or 1 */ static int byteArrayCompare(byte[] aa, byte[] ab, int len) { for (int i=0; i b) { return 1; } } return 0; } /** * @return -1, 0, or 1 */ static int byteArrayOrNullCompare(byte[] aa, byte[] ab) { if (aa == null) { if (ab == null) { return 0; } else { return 1; } } else if (ab == null) { return -1; } else { return byteArrayCompare(aa, ab); } } /** * @return -1, 0, or 1 */ static int byteArrayOrNullCompare(byte[] aa, byte[] ab, int len) { if (aa == null) { if (ab == null) { return 0; } else { return 1; } } else if (ab == null) { return -1; } else { return byteArrayCompare(aa, ab, len); } } /** * @return -1, 0, or 1 */ static int compare(C a, C b) { if (a == null) { if (b == null) { return 0; } else { return 1; } } else if (b == null) { return -1; } else { return Integer.signum(a.compareTo(b)); } } private final long mSeed; private Random mRandom; public TestDataEncoding(String name) { super(name); mSeed = 5399777425345431L; } protected void setUp() { mRandom = new Random(mSeed); } protected void tearDown() { } public void test_boolean() throws Exception { byte[] bytes = new byte[1]; boolean lastValue = false; byte[] lastBytes = null; for (int i=0; i