/* * Copyright 2014 Higher Frequency Trading * * http://www.higherfrequencytrading.com * * 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 net.openhft.lang.io.serialization; import net.openhft.lang.io.DirectBytes; import net.openhft.lang.io.DirectStore; import net.openhft.lang.io.NativeBytes; import org.junit.Test; import java.awt.geom.Point2D; import java.util.Map; import static org.junit.Assert.assertEquals; /** * User: peter.lawrey Date: 22/09/13 Time: 17:06 */ public class RawCopierTest { static void printInts(Object o, int len) { for (long i = 0; i < len; i += 4) { System.out.print(NativeBytes.UNSAFE.getInt(o, i) + " "); } System.out.println(); } @Test public void testStartEnd() { RawCopier<A> aRawCopier = RawCopier.copies(A.class); if (aRawCopier.start != 8) assertEquals(12, aRawCopier.start); assertEquals(aRawCopier.start + 3 * 4, aRawCopier.end); RawCopier<B> bRawCopier = RawCopier.copies(B.class); if (aRawCopier.start != 8) assertEquals(16, bRawCopier.start); assertEquals(bRawCopier.start + 4 * 8, bRawCopier.end); } @Test public void testReadWrite() { DirectStore ds = DirectStore.allocate(1024); DirectBytes db = ds.bytes(); RawCopier<A> aRawCopier = RawCopier.copies(A.class); A a = new A(); a.i = 111; a.j = -222; a.k = 333; a.s = "Hello"; aRawCopier.toBytes(a, db); assertEquals(12, db.position()); assertEquals(111, db.readInt(0)); assertEquals(-222, db.readInt(4)); assertEquals(333, db.readInt(8)); A a2 = new A(); a2.i = 1; a2.j = 2; a2.k = 3; // printInts(a2, 28); db.position(0); aRawCopier.fromBytes(db, a2); // printInts(a2, 28); assertEquals(111, a2.i); assertEquals(-222, a2.j); assertEquals(333, a2.k); assertEquals(null, a2.s); } static class A { int i, j, k; String s; transient Map map; } static class B extends Point2D.Double { double z, w; } }