/**
* Copyright 2005-2012 Akiban Technologies, Inc.
*
* 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.persistit.unit;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.Serializable;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import org.junit.Test;
import com.persistit.Exchange;
import com.persistit.PersistitUnitTestCase;
import com.persistit.Value;
import com.persistit.encoding.CollectionValueCoder;
import com.persistit.exception.PersistitException;
public class ValueTest2 extends PersistitUnitTestCase {
Exchange _exchange;
@Override
public void setUp() throws Exception {
super.setUp();
_exchange = _persistit.getExchange("persistit", getClass().getSimpleName(), true);
}
@Override
public void tearDown() throws Exception {
_persistit.releaseExchange(_exchange);
_exchange = null;
super.tearDown();
}
@Test
public void test1() throws PersistitException {
System.out.print("test1 ");
final TreeMap tmap = new TreeMap();
for (int i = 0; i < 1000; i++) {
tmap.put("Key " + i, "Value " + i);
}
_exchange.getValue().put(tmap);
_exchange.clear().append("test1").store();
_exchange.getValue().clear();
_exchange.fetch();
final Object tmap2 = _exchange.getValue().get();
assertEquals(tmap2, tmap);
System.out.println("- done");
}
/**
*
* Every primitive type and its wrapper. Tests get() getTTT() where TTT is
* Boolean, Byte, Short, Character, etc. getType() isDefined() isNull()
* trim() trim(int n) clear() ensureFit() equals() put(ttt) where ttt is
* null, boolean, byte, ..., double put(TTT) where TTT is Boolean, Byte, ...
* Double put(ttt) where ttt is boolean, byte, ..., double
*
*/
@Test
public void test2() throws PersistitException {
System.out.print("test2 ");
final Value value = _exchange.getValue();
value.clear();
value.trim();
assertEquals(false, value.isDefined());
assertEquals(0, value.getEncodedSize());
assertEquals(0, value.getEncodedBytes().length);
value.put(null);
value.trim();
assertEquals(Void.TYPE, value.getType());
assertEquals(true, value.isNull());
assertEquals(true, value.isDefined());
assertEquals(value.get(), null);
value.put(true);
value.trim();
assertEquals(value.getType(), Boolean.TYPE);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getBoolean(), true);
assertEquals(value.get(), Boolean.TRUE);
value.put(false);
assertEquals(value.getType(), Boolean.TYPE);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getBoolean(), false);
assertEquals(value.get(), Boolean.FALSE);
value.put(Boolean.TRUE);
value.trim();
assertEquals(value.getType(), Boolean.class);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getBoolean(), true);
assertEquals(value.get(), Boolean.TRUE);
value.put(Boolean.FALSE);
assertEquals(value.getType(), Boolean.class);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getBoolean(), false);
assertEquals(value.get(), Boolean.FALSE);
value.put((byte) 123);
assertEquals(value.getType(), Byte.TYPE);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getByte(), (byte) 123);
assertEquals(value.get(), new Byte((byte) 123));
value.put(new Byte((byte) 123));
assertEquals(value.getType(), Byte.class);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getByte(), (byte) 123);
assertEquals(value.get(), new Byte((byte) 123));
value.put((short) 234);
assertEquals(value.getType(), Short.TYPE);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getShort(), (short) 234);
assertEquals(value.get(), new Short((short) 234));
value.put(new Short((short) 234));
assertEquals(value.getType(), Short.class);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getShort(), (short) 234);
assertEquals(value.get(), new Short((short) 234));
value.put((char) 345);
assertEquals(value.getType(), Character.TYPE);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getChar(), (char) 345);
assertEquals(value.get(), new Character((char) 345));
value.put(new Character((char) 345));
assertEquals(value.getType(), Character.class);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getChar(), (char) 345);
assertEquals(value.get(), new Character((char) 345));
value.put(456);
assertEquals(value.getType(), Integer.TYPE);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getInt(), 456);
assertEquals(value.get(), new Integer(456));
value.put(new Integer(456));
assertEquals(value.getType(), Integer.class);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
value.trim();
assertEquals(value.getInt(), 456);
assertEquals(value.get(), new Integer(456));
value.put((float) 567);
assertEquals(value.getType(), Float.TYPE);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getFloat(), 567, 0.0001f);
assertEquals(value.get(), new Float(567));
value.put(new Float(567));
assertEquals(value.getType(), Float.class);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getFloat(), 567, 0.0001f);
assertEquals(value.get(), new Float(567));
value.put((double) 678);
assertEquals(value.getType(), Double.TYPE);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
assertEquals(value.getDouble(), 678, 0.0001f);
assertEquals(value.get(), new Double(678));
value.put(new Double(678));
assertEquals(value.getType(), Double.class);
assertEquals(value.isNull(), false);
assertEquals(value.isDefined(), true);
value.trim(100);
assertEquals(value.getDouble(), 678, 0.0001f);
assertEquals(value.get(), new Double(678));
final Value value2 = new Value(value);
assertTrue(value.equals(value2));
value2.put("not a Double");
assertTrue(!value.equals(value2));
value.copyTo(value2);
assertTrue(value.equals(value2));
assertTrue(value2.isDefined());
value2.clear();
assertTrue(!value2.isDefined());
assertEquals(0, value2.getEncodedSize());
_exchange.clear().append("test2").store();
System.out.println("- done");
}
@Test
public void test3() throws PersistitException {
System.out.print("test3 ");
testNullArray();
testByteArray();
testShortArray();
testCharArray();
testIntArray();
testLongArray();
testFloatArray();
testDoubleArray();
_exchange.clear().append("test3").store();
System.out.println("- done");
}
@Test
public void testNullArray() {
final Value value = _exchange.getValue();
final Object[] o1 = new Object[10]; // leave null
value.putObjectArray(o1);
assertEquals(Object[].class, value.getType());
assertTrue(equals(o1, value.get()));
assertTrue(equals(o1, value.getObjectArray()));
value.clear();
value.put(o1);
assertEquals(Object[].class, value.getType());
assertTrue(equals(o1, value.get()));
assertTrue(equals(o1, value.getObjectArray()));
o1[5] = "Not null";
assertTrue(!equals(o1, value.getObjectArray()));
value.put(o1);
assertTrue(equals(o1, value.getObjectArray()));
assertEquals(10, value.getArrayLength());
System.out.print(".");
}
/**
* Tests array methods on byte[] and Byte[]
*
*/
@Test
public void testByteArray() {
final Value value = _exchange.getValue();
final byte[] a1 = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
value.putByteArray(a1);
assertEquals(byte[].class, value.getType());
assertTrue(equals(a1, value.get()));
assertTrue(equals(a1, value.getByteArray()));
value.put(a1);
assertTrue(equals(a1, value.getByteArray()));
final byte[] a2 = new byte[a1.length];
value.getByteArray(a2, 0, 0, a2.length);
assertTrue(equals(a1, a2));
value.putByteArray(a1, 2, 7);
a2[5] = -1;
value.getByteArray(a2, 0, 2, 7);
assertTrue(equals(a1, a2));
final Byte[] b1 = new Byte[10];
for (int i = 0; i < 10; i++) {
b1[i] = new Byte((byte) i);
}
value.putObjectArray(b1);
assertEquals(Byte[].class, value.getType());
assertTrue(equals(b1, value.get()));
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getArray()));
assertEquals(10, value.getArrayLength());
System.out.print(".");
}
/**
* Tests array methods on short[] and Short[]
*
*/
@Test
public void testShortArray() {
final Value value = _exchange.getValue();
final short[] a1 = new short[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
value.putShortArray(a1);
assertEquals(short[].class, value.getType());
assertTrue(equals(a1, value.get()));
assertTrue(equals(a1, value.getShortArray()));
value.put(a1);
assertTrue(equals(a1, value.getShortArray()));
final short[] a2 = new short[a1.length];
value.getShortArray(a2, 0, 0, a2.length);
assertTrue(equals(a1, a2));
value.putShortArray(a1, 2, 7);
a2[5] = -1;
value.getShortArray(a2, 0, 2, 7);
assertTrue(equals(a1, a2));
final Short[] b1 = new Short[10];
for (int i = 0; i < 10; i++) {
b1[i] = new Short((short) i);
}
value.putObjectArray(b1);
assertEquals(Short[].class, value.getType());
assertTrue(equals(b1, value.get()));
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getArray()));
assertEquals(10, value.getArrayLength());
System.out.print(".");
}
/**
* Tests array methods on char[] and Character[]
*
*/
@Test
public void testCharArray() {
final Value value = _exchange.getValue();
final char[] a1 = new char[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
value.putCharArray(a1);
assertEquals(char[].class, value.getType());
assertTrue(equals(a1, value.get()));
assertTrue(equals(a1, value.getCharArray()));
value.put(a1);
assertTrue(equals(a1, value.getCharArray()));
final char[] a2 = new char[a1.length];
value.getCharArray(a2, 0, 0, a2.length);
assertTrue(equals(a1, a2));
value.putCharArray(a1, 2, 7);
a2[5] = 2345;
value.getCharArray(a2, 0, 2, 7);
assertTrue(equals(a1, a2));
final Character[] b1 = new Character[10];
for (int i = 0; i < 10; i++) {
b1[i] = new Character((char) i);
}
value.putObjectArray(b1);
assertEquals(Character[].class, value.getType());
assertTrue(equals(b1, value.get()));
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getArray()));
assertEquals(10, value.getArrayLength());
System.out.print(".");
}
/**
* Tests array methods on int[] and Integer[]
*
*/
@Test
public void testIntArray() {
final Value value = _exchange.getValue();
final int[] a1 = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
value.putIntArray(a1);
assertEquals(int[].class, value.getType());
assertTrue(equals(a1, value.get()));
assertTrue(equals(a1, value.getIntArray()));
value.put(a1);
assertTrue(equals(a1, value.getIntArray()));
final int[] a2 = new int[a1.length];
value.getIntArray(a2, 0, 0, a2.length);
assertTrue(equals(a1, a2));
value.putIntArray(a1, 2, 7);
a2[5] = 2345;
value.getIntArray(a2, 0, 2, 7);
assertTrue(equals(a1, a2));
final Integer[] b1 = new Integer[10];
for (int i = 0; i < 10; i++) {
b1[i] = new Integer(i);
}
value.putObjectArray(b1);
assertEquals(Integer[].class, value.getType());
assertTrue(equals(b1, value.get()));
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getArray()));
assertEquals(10, value.getArrayLength());
System.out.print(".");
}
/**
* Tests array methods on long[] and Long[]
*
*/
@Test
public void testLongArray() {
final Value value = _exchange.getValue();
final long[] a1 = new long[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
value.putLongArray(a1);
assertEquals(long[].class, value.getType());
assertTrue(equals(a1, value.get()));
assertTrue(equals(a1, value.getLongArray()));
value.put(a1);
assertTrue(equals(a1, value.getLongArray()));
final long[] a2 = new long[a1.length];
value.getLongArray(a2, 0, 0, a2.length);
assertTrue(equals(a1, a2));
value.putLongArray(a1, 2, 7);
a2[5] = 2345;
value.getLongArray(a2, 0, 2, 7);
assertTrue(equals(a1, a2));
final Long[] b1 = new Long[10];
for (int i = 0; i < 10; i++) {
b1[i] = new Long(i);
}
value.putObjectArray(b1);
assertEquals(Long[].class, value.getType());
assertTrue(equals(b1, value.get()));
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getArray()));
assertEquals(10, value.getArrayLength());
System.out.print(".");
}
/**
* Tests array methods on float[] and Float[]
*
*/
@Test
public void testFloatArray() {
final Value value = _exchange.getValue();
final float[] a1 = new float[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
value.putFloatArray(a1);
assertEquals(float[].class, value.getType());
assertTrue(equals(a1, value.get()));
assertTrue(equals(a1, value.getFloatArray()));
value.put(a1);
assertTrue(equals(a1, value.getFloatArray()));
final float[] a2 = new float[a1.length];
value.getFloatArray(a2, 0, 0, a2.length);
assertTrue(equals(a1, a2));
value.putFloatArray(a1, 2, 7);
a2[5] = -1;
value.getFloatArray(a2, 0, 2, 7);
assertTrue(equals(a1, a2));
final Float[] b1 = new Float[10];
for (int i = 0; i < 10; i++) {
b1[i] = new Float(i);
}
value.putObjectArray(b1);
assertEquals(Float[].class, value.getType());
assertTrue(equals(b1, value.get()));
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getArray()));
assertEquals(10, value.getArrayLength());
System.out.print(".");
}
/**
* Tests array methods on double[] and Double[]
*
*/
@Test
public void testDoubleArray() {
final Value value = _exchange.getValue();
final double[] a1 = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
value.putDoubleArray(a1);
assertEquals(double[].class, value.getType());
assertTrue(equals(a1, value.get()));
assertTrue(equals(a1, value.getDoubleArray()));
value.put(a1);
assertTrue(equals(a1, value.getDoubleArray()));
final double[] a2 = new double[a1.length];
value.getDoubleArray(a2, 0, 0, a2.length);
assertTrue(equals(a1, a2));
value.putDoubleArray(a1, 2, 7);
a2[5] = -1;
value.getDoubleArray(a2, 0, 2, 7);
assertTrue(equals(a1, a2));
final Double[] b1 = new Double[10];
for (int i = 0; i < 10; i++) {
b1[i] = new Double(i);
}
value.putObjectArray(b1);
assertEquals(Double[].class, value.getType());
assertTrue(equals(b1, value.get()));
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getObjectArray()));
value.put(b1);
assertTrue(equals(b1, value.getArray()));
assertEquals(10, value.getArrayLength());
System.out.print(".");
}
/**
* Test multi-dimenional arrays
*
*/
@Test
public void test4() throws PersistitException {
System.out.print("test4 ");
final Value value = _exchange.getValue();
final double[] a1 = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
final double[][] aa1 = new double[][] { a1, a1, a1 };
final double[][][] aaa1 = new double[][][] { aa1, aa1, aa1 };
value.put(a1);
assertEquals(double[].class, value.getType());
assertEquals(10, value.getArrayLength());
value.put(aa1);
assertEquals(double[][].class, value.getType());
assertEquals(3, value.getArrayLength());
value.put(aaa1);
assertEquals(double[][][].class, value.getType());
assertEquals(3, value.getArrayLength());
assertTrue(equals(aaa1, value.get()));
assertTrue(equals(aaa1, value.getArray()));
assertTrue(equals(aaa1, value.getObjectArray()));
assertEquals(3, value.getArrayLength());
final String[] s1 = new String[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" };
final String[][] ss1 = new String[][] { s1, s1, s1 };
final String[][][] sss1 = new String[][][] { ss1, ss1, ss1 };
value.put(s1);
assertEquals(String[].class, value.getType());
assertEquals(10, value.getArrayLength());
value.put(ss1);
assertEquals(String[][].class, value.getType());
assertEquals(3, value.getArrayLength());
value.put(sss1);
assertEquals(String[][][].class, value.getType());
assertEquals(3, value.getArrayLength());
assertTrue(equals(sss1, value.get()));
assertTrue(equals(sss1, value.getArray()));
assertTrue(equals(sss1, value.getObjectArray()));
assertEquals(3, value.getArrayLength());
_exchange.clear().append("test4").store();
System.out.println("- done");
}
@Test
public void test5() throws PersistitException {
System.out.print("test5 ");
final Value value = _exchange.getValue();
System.gc();
final String[] strings = new String[20];
for (int iter = 0; iter < 10000; iter++) {
if ((iter % 2000) == 0) {
final long inUseMem = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
System.out.println("ValueTest2.test5: memory in use=" + inUseMem);
}
for (int i = 0; i < 20; i++) {
if (i >= 10) {
strings[i] = strings[i - 10];
} else {
strings[i] = new String("this is a brand new string");
}
}
value.put(strings);
final String[] t = (String[]) value.get();
}
_exchange.clear().append("test5").store();
System.out.println("- done");
}
public static class CustomSet extends ArrayList {
private final static long serialVersionUID = 1L;
}
@Test
public void test6() throws PersistitException {
System.out.print("test6 ");
final String a1 = "a1";
final String a2 = "a2";
final String a3 = "a3";
_persistit.getCoderManager().registerValueCoder(CustomSet.class, new CollectionValueCoder());
final Value value = _exchange.getValue();
final Map map1 = new TreeMap();
final CustomSet cs1 = new CustomSet();
cs1.add(a1);
cs1.add(a2);
cs1.add(a3);
map1.put(a1, cs1);
map1.put(a2, cs1);
map1.put(a3, cs1);
value.put(map1);
final Map map2 = (Map) value.get(map1);
assertEquals(3, map2.size());
final Iterator iter = map2.keySet().iterator();
final String z1 = (String) iter.next();
final String z2 = (String) iter.next();
final String z3 = (String) iter.next();
assertEquals(a1 + a2 + a3, z1 + z2 + z3);
final Object o = map2.get(z1);
assertTrue(o instanceof CustomSet);
final CustomSet cs2 = (CustomSet) o;
assertEquals(3, cs2.size());
for (final Iterator iter2 = cs2.iterator(); iter2.hasNext();) {
final Object p = iter2.next();
assertTrue(p.equals(a1) || p.equals(a2) || p.equals(a3));
}
assertEquals(map2.get(z2), cs2);
assertEquals(map2.get(z3), cs2);
_persistit.getCoderManager().unregisterValueCoder(CustomSet.class);
_exchange.clear().append("test6").store();
System.out.println("- done");
}
@Test
public void test7() throws PersistitException {
System.out.print("test7 ");
final String a1 = "a1";
final String a2 = "a2";
final String a3 = "a3";
final Value value = _exchange.getValue();
final Map map1 = new TreeMap();
final CustomSet cs1 = new CustomSet();
cs1.add(a1);
cs1.add(a2);
cs1.add(a3);
cs1.add(map1);
cs1.add(cs1);
map1.put(a1, cs1);
map1.put(a2, cs1);
map1.put(a3, cs1);
value.put(map1);
final Map map2 = (Map) value.get();
assertEquals(3, map2.size());
final Iterator iter = map2.keySet().iterator();
final String z1 = (String) iter.next();
final String z2 = (String) iter.next();
final String z3 = (String) iter.next();
assertEquals(a1 + a2 + a3, z1 + z2 + z3);
final Object o = map2.get(z1);
assertTrue(o instanceof CustomSet);
final CustomSet cs2 = (CustomSet) o;
assertEquals(5, cs2.size());
for (final Iterator iter2 = cs2.iterator(); iter2.hasNext();) {
final Object p = iter2.next();
if (p instanceof String) {
assertTrue(p.equals(a1) || p.equals(a2) || p.equals(a3));
} else if (p instanceof Map) {
assertTrue(p == map2);
} else {
assertTrue(p == cs2);
}
}
assertEquals(map2.get(z2), cs2);
assertEquals(map2.get(z3), cs2);
_exchange.clear().append("test7").store();
System.out.println("- done");
}
@Test
public void test8() throws PersistitException {
System.out.print("test8 ");
final String a1 = "a1";
final String a2 = "a2";
final String a3 = "a3";
final Value value = _exchange.getValue();
final Map map1 = new TreeMap();
final CustomSet cs1 = new CustomSet();
cs1.add(a1);
cs1.add(a2);
cs1.add(a3);
cs1.add(map1);
cs1.add(cs1);
map1.put(a1, cs1);
map1.put(a2, cs1);
map1.put(a3, cs1);
value.put(map1);
final Map map2 = (Map) value.get();
assertEquals(3, map2.size());
final Iterator iter = map2.keySet().iterator();
final String z1 = (String) iter.next();
final String z2 = (String) iter.next();
final String z3 = (String) iter.next();
assertEquals(a1 + a2 + a3, z1 + z2 + z3);
final Object o = map2.get(z1);
assertTrue(o instanceof CustomSet);
final CustomSet cs2 = (CustomSet) o;
assertEquals(5, cs2.size());
for (final Iterator iter2 = cs2.iterator(); iter2.hasNext();) {
final Object p = iter2.next();
if (p instanceof String) {
assertTrue(p.equals(a1) || p.equals(a2) || p.equals(a3));
} else if (p instanceof Map) {
assertTrue(p == map2);
} else {
assertTrue(p == cs2);
}
}
assertEquals(map2.get(z2), cs2);
assertEquals(map2.get(z3), cs2);
_exchange.clear().append("test8").store();
System.out.println("- done");
}
@Test
public void test9() throws PersistitException {
System.out.print("test9 ");
final String[] strings = { "a", "b", "c" };
final HashMap map = new HashMap();
final Object[] example = new Object[] { new Byte((byte) 1), new Integer(2), new Long(3L), new Float(4.0F),
new Double(5.0), new Date(), "a", strings, "a", strings, null, map, };
example[11] = example;
map.put("aKey", "aValue");
map.put("bKey", "bValue");
map.put("example", example);
final Value value = _exchange.getValue();
value.put(example);
_exchange.clear().append("test9").store();
System.out.println("Displayable form: " + value);
System.out.println("- done");
}
@Test
public void test10() throws PersistitException {
System.out.print("test10 ");
final Person p1 = new Person("Jones", "Mary", new Date(), 65000);
final Person p2 = new Person("Smith", "John", new Date(), 80000);
p1.friends = new Person[] { p2 };
p2.friends = new Person[] { p1 };
final Value value = _exchange.getValue();
value.put(p1);
_exchange.clear().append("test10").store();
System.out.println("Displayable form: " + value);
System.out.println("- done");
}
public static void main(final String[] args) throws Exception {
new ValueTest2().initAndRunTest();
}
@Override
public void runAllTests() throws Exception {
// try {
// // Enable the security manager
// System.out.println("Attempting to install SecurityManager");
// final SecurityManager sm = new SecurityManager();
// System.setSecurityManager(sm);
// } catch (final SecurityException se) {
// se.printStackTrace();
// }
_exchange = _persistit.getExchange("persistit", "ValueTest2", true);
test1();
test2();
test3();
test4();
test5();
test6();
test7();
test8();
test9();
test10();
}
public boolean equals(final Object a, final Object b) {
if ((a == null) || (b == null)) {
return a == b;
}
if (a.getClass().isArray()) {
if (!b.getClass().isArray()) {
return false;
}
if (a.getClass().getComponentType() != b.getClass().getComponentType()) {
return false;
}
if (Array.getLength(a) != Array.getLength(b)) {
return false;
}
for (int index = Array.getLength(a); --index >= 0;) {
if (!equals(Array.get(a, index), Array.get(b, index))) {
return false;
}
}
return true;
} else if (a.getClass().isPrimitive()) {
return a == b;
} else {
return a.equals(b);
}
}
private void debug(final boolean condition) {
if (!condition) {
return;
}
return; // <-- breakpoint here
}
static class Person implements Serializable {
private final static long serialVersionUID = 1L;
String lastName;
String firstName;
Date dob;
long salary;
Person[] friends;
private Person() {
}
Person(final String lastName, final String firstName, final Date dob, final long salary) {
this.lastName = lastName;
this.firstName = firstName;
this.dob = dob;
this.salary = salary;
}
}
}