add EncodingTest. sbt still not configured quite right
This commit is contained in:
parent
553cdafe13
commit
d5de5f6419
6 changed files with 75 additions and 40 deletions
16
compiler/src/test/scala/org/capnproto/EncodingTest.scala
Normal file
16
compiler/src/test/scala/org/capnproto/EncodingTest.scala
Normal file
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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.");
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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") {
|
||||
|
|
Loading…
Reference in a new issue