From ba0c18000a731e030c941167a2be4135afb1b188 Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Sat, 24 May 2014 21:39:59 -0400 Subject: [PATCH] add a test --- .travis.yml | 5 +++- project/build.scala | 6 +++-- .../main/java/org/capnproto/StructReader.java | 8 ++++++ .../test/java/org/capnproto/LayoutTest.java | 27 +++++++++++++++++++ 4 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 runtime/src/test/java/org/capnproto/LayoutTest.java diff --git a/.travis.yml b/.travis.yml index 2e5a4ae..71a1a12 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,4 +13,7 @@ install: - export CC=gcc-4.8 - export CXX=g++-4.8 - cd capnproto-c++-0.4.1 && ./configure && make -j5 && sudo make install && cd .. -script: make CXX=g++-4.8 CXX_FLAGS="-std=c++11 -I/usr/local/include -L/usr/local/lib -lcapnp -lkj" +script: + - sbt compile + - sbt test + diff --git a/project/build.scala b/project/build.scala index 37240f8..1626c79 100644 --- a/project/build.scala +++ b/project/build.scala @@ -60,8 +60,10 @@ object Build extends sbt.Build { object Shared { val testDeps = Seq( - "org.scalatest" %% "scalatest" % "2.1.6" % "it,test", - "org.scalacheck" %% "scalacheck" % "1.11.4" % "it,test" +// "org.scalatest" %% "scalatest" % "2.1.6" % "it,test", +// "org.scalacheck" %% "scalacheck" % "1.11.4" % "it,test", + "com.novocode" % "junit-interface" % "0.10" % "test", + "junit" % "junit" % "4.11" % "test" ) val settings = Seq( diff --git a/runtime/src/main/java/org/capnproto/StructReader.java b/runtime/src/main/java/org/capnproto/StructReader.java index a193452..cdce819 100644 --- a/runtime/src/main/java/org/capnproto/StructReader.java +++ b/runtime/src/main/java/org/capnproto/StructReader.java @@ -58,6 +58,14 @@ public final class StructReader { } } + public final long getLongField(int offset) { + if ((offset + 1) * 64 <= this.dataSize) { + return this.segment.buffer.getLong(this.data + offset * 8); + } else { + return 0; + } + } + public final PointerReader getPointerField(int ptrIndex) { if (ptrIndex < this.pointerCount) { return new PointerReader(this.segment, diff --git a/runtime/src/test/java/org/capnproto/LayoutTest.java b/runtime/src/test/java/org/capnproto/LayoutTest.java new file mode 100644 index 0000000..e3f630a --- /dev/null +++ b/runtime/src/test/java/org/capnproto/LayoutTest.java @@ -0,0 +1,27 @@ +package org.capnproto; + +import java.nio.ByteBuffer; +import org.junit.Test; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; + +public class LayoutTest { + + @Test + public void simpleRawDataStruct() { + byte[] data = {0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x23, 0x45, 0x67, + (byte)(0x89 & 0xff), (byte)(0xab & 0xff), + (byte)(0xcd & 0xff), (byte)(0xef & 0xff)}; + + ByteBuffer buffer = ByteBuffer.wrap(data); + buffer.order(java.nio.ByteOrder.LITTLE_ENDIAN); + PointerReader pointerReader = new PointerReader(new SegmentReader(buffer), 0, 0x7fffffff); + StructReader reader = pointerReader.getStruct(); + + assertThat(reader.getLongField(0), equalTo(0xefcdab8967452301L)); + + } + +}