diff --git a/compiler/src/test/scala/org/capnproto/EncodingTest.scala b/compiler/src/test/scala/org/capnproto/EncodingTest.scala new file mode 100644 index 0000000..34437f0 --- /dev/null +++ b/compiler/src/test/scala/org/capnproto/EncodingTest.scala @@ -0,0 +1,16 @@ +package org.capnproto; + +import org.capnproto.test.Test._; + +import org.scalatest.FunSuite + + +class EncodingSuite extends FunSuite { + test("AllTypes") { + val message = new MessageBuilder(); + val allTypes = message.initRoot(TestAllTypes.Builder.factory); + allTypes.setVoidField(); + allTypes.setBoolField(true); + } + +} diff --git a/compiler/src/test/schema/test.capnp b/compiler/src/test/schema/test.capnp index 301d98f..8e0a957 100644 --- a/compiler/src/test/schema/test.capnp +++ b/compiler/src/test/schema/test.capnp @@ -2,6 +2,7 @@ using Java = import "/java_support/java.capnp"; $Java.package("org.capnproto.test"); +$Java.outerClassname("Test"); enum TestEnum { foo @0; @@ -14,6 +15,22 @@ enum TestEnum { garply @7; } +struct TestAllTypes { + voidField @0 : Void; + boolField @1 : Bool; + int8Field @2 : Int8; + int16Field @3 : Int16; + int32Field @4 : Int32; + int64Field @5 : Int64; + uInt8Field @6 : UInt8; + uInt16Field @7 : UInt16; + uInt32Field @8 : UInt32; + uInt64Field @9 : UInt64; +# float32Field @10 : Float32; +# float64Field @11 : Float64; +# ... +} + struct TestOutOfOrder { foo @3 :Text; bar @2 :Text; diff --git a/project/build.scala b/project/build.scala index f335e50..7aadd96 100644 --- a/project/build.scala +++ b/project/build.scala @@ -14,11 +14,12 @@ object Build extends sbt.Build { project( id = "compiler", base = file("compiler") - ).settings(makeCppTask) + ).settings(makeCppTask).dependsOn(runtime) .settings(compile <<= compile in Compile dependsOn makeCpp) .settings(compileTestSchemaTask) -// .settings(test <<= test in Test dependsOn compileTestSchema) -// .settings(unmanagedSourceDirectories in Test += sourceDirectory.value / "test" / "generated") + + .settings(test <<= test in Test dependsOn compileTestSchema ) + .settings(unmanagedSourceDirectories in Test += sourceDirectory.value / "test" / "generated") lazy val runtime = project( @@ -49,6 +50,7 @@ object Build extends sbt.Build { val compileTestSchema = taskKey[Unit]("Run capnpc-java on test schema") val compileTestSchemaTask = compileTestSchema := { + val result0 = "mkdir -p compiler/src/test/generated".!! val result = "capnp compile -I compiler/src/main/cpp/ --src-prefix=compiler/src/test/schema/ -o./capnpc-java:compiler/src/test/generated compiler/src/test/schema/test.capnp".!! println(s"**** CodeGen for test.capnp started\n$result\n**** CodeGen complete."); } diff --git a/runtime/src/main/java/org/capnproto/StructBuilder.java b/runtime/src/main/java/org/capnproto/StructBuilder.java index 214a257..be0387f 100644 --- a/runtime/src/main/java/org/capnproto/StructBuilder.java +++ b/runtime/src/main/java/org/capnproto/StructBuilder.java @@ -19,13 +19,13 @@ public final class StructBuilder { this.bit0Offset = bit0Offset; } - public final boolean getBoolField(int offset) { + public final boolean getBooleanField(int offset) { int bitOffset = (offset == 0 ? this.bit0Offset : offset); int position = this.data + (bitOffset / 8); return (this.segment.buffer.get(position) & (1 << (bitOffset % 8))) != 0; } - public final void setBoolField(int offset, boolean value) { + public final void setBooleanField(int offset, boolean value) { int bitOffset = offset; if (offset == 0) { bitOffset = this.bit0Offset; } byte bitnum = (byte)(bitOffset % 8); diff --git a/runtime/src/main/java/org/capnproto/StructReader.java b/runtime/src/main/java/org/capnproto/StructReader.java index fab4ca7..99b37d4 100644 --- a/runtime/src/main/java/org/capnproto/StructReader.java +++ b/runtime/src/main/java/org/capnproto/StructReader.java @@ -21,7 +21,7 @@ public final class StructReader { this.nestingLimit = nestingLimit; } - public final boolean getBoolField(int offset) { + public final boolean getBooleanField(int offset) { // XXX should use unsigned operations if (offset < this.dataSize) { if (offset == 0) { diff --git a/runtime/src/test/scala/org/capnproto/LayoutTest.scala b/runtime/src/test/scala/org/capnproto/LayoutTest.scala index 164e7c3..d149dae 100644 --- a/runtime/src/test/scala/org/capnproto/LayoutTest.scala +++ b/runtime/src/test/scala/org/capnproto/LayoutTest.scala @@ -30,27 +30,27 @@ class LayoutSuite extends FunSuite { // TODO masking - assert(reader.getBoolField(0) === true); - assert(reader.getBoolField(1) === false); - assert(reader.getBoolField(2) === false); + assert(reader.getBooleanField(0) === true); + assert(reader.getBooleanField(1) === false); + assert(reader.getBooleanField(2) === false); - assert(reader.getBoolField(3) === false); - assert(reader.getBoolField(4) === false); - assert(reader.getBoolField(5) === false); - assert(reader.getBoolField(6) === false); - assert(reader.getBoolField(7) == false); + assert(reader.getBooleanField(3) === false); + assert(reader.getBooleanField(4) === false); + assert(reader.getBooleanField(5) === false); + assert(reader.getBooleanField(6) === false); + assert(reader.getBooleanField(7) == false); - assert(reader.getBoolField(8) === true); - assert(reader.getBoolField(9) === true); - assert(reader.getBoolField(10) === false); - assert(reader.getBoolField(11) === false); - assert(reader.getBoolField(12) === false); - assert(reader.getBoolField(13) === true); - assert(reader.getBoolField(14) === false); - assert(reader.getBoolField(15) === false); + assert(reader.getBooleanField(8) === true); + assert(reader.getBooleanField(9) === true); + assert(reader.getBooleanField(10) === false); + assert(reader.getBooleanField(11) === false); + assert(reader.getBooleanField(12) === false); + assert(reader.getBooleanField(13) === true); + assert(reader.getBooleanField(14) === false); + assert(reader.getBooleanField(15) === false); - assert(reader.getBoolField(63) === true); - assert(reader.getBoolField(64) === false); + assert(reader.getBooleanField(63) === true); + assert(reader.getBooleanField(64) === false); // TODO masking @@ -61,14 +61,14 @@ class LayoutSuite extends FunSuite { builder.setIntField(2, 0x20212223); builder.setShortField(6, 0x3031.toShort); builder.setByteField(14, 0x40); - builder.setBoolField(120, false); - builder.setBoolField(121, false); - builder.setBoolField(122, true); - builder.setBoolField(123, false); - builder.setBoolField(124, true); - builder.setBoolField(125, true); - builder.setBoolField(126, true); - builder.setBoolField(127, false); + builder.setBooleanField(120, false); + builder.setBooleanField(121, false); + builder.setBooleanField(122, true); + builder.setBooleanField(123, false); + builder.setBooleanField(124, true); + builder.setBooleanField(125, true); + builder.setBooleanField(126, true); + builder.setBooleanField(127, false); } def checkStruct(builder : StructBuilder) { @@ -76,14 +76,14 @@ class LayoutSuite extends FunSuite { assert(0x20212223 == builder.getIntField(2)); assert(0x3031 === builder.getShortField(6)); assert(0x40 === builder.getByteField(14)); - assert(false === builder.getBoolField(120)); - assert(false === builder.getBoolField(121)); - assert(true === builder.getBoolField(122)); - assert(false === builder.getBoolField(123)); - assert(true === builder.getBoolField(124)); - assert(true === builder.getBoolField(125)); - assert(true === builder.getBoolField(126)); - assert(false === builder.getBoolField(127)); + assert(false === builder.getBooleanField(120)); + assert(false === builder.getBooleanField(121)); + assert(true === builder.getBooleanField(122)); + assert(false === builder.getBooleanField(123)); + assert(true === builder.getBooleanField(124)); + assert(true === builder.getBooleanField(125)); + assert(true === builder.getBooleanField(126)); + assert(false === builder.getBooleanField(127)); } test("StructRoundTrip_OneSegment") {