From bbd033307741d48d8b85a81b1fa5bc42bf9be3fa Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Tue, 3 Jun 2014 21:52:52 -0400 Subject: [PATCH] fill in a few more tests --- compiler/src/main/cpp/capnpc-java.c++ | 12 +++++++---- .../test/scala/org/capnproto/TestUtil.scala | 20 +++++++++++++++++++ .../java/org/capnproto/PointerBuilder.java | 5 +++++ .../main/java/org/capnproto/WireHelpers.java | 6 ++++++ 4 files changed, 39 insertions(+), 4 deletions(-) diff --git a/compiler/src/main/cpp/capnpc-java.c++ b/compiler/src/main/cpp/capnpc-java.c++ index c1633cc..982dabd 100644 --- a/compiler/src/main/cpp/capnpc-java.c++ +++ b/compiler/src/main/cpp/capnpc-java.c++ @@ -918,7 +918,8 @@ private: spaces(indent), " public ", type, ".Reader", " get", titleCase, "() {\n", - spaces(indent), " throw new Error();\n", + spaces(indent), " return ", type, + ".Reader.factory.fromStructReader(_reader.getPointerField(", offset,").getStruct());\n", spaces(indent), " }\n", "\n"), kj::strTree( @@ -927,14 +928,17 @@ private: spaces(indent), " return !_builder.getPointerField(", offset, ").isNull();\n", spaces(indent), " }\n", spaces(indent), " public final ", type, ".Builder get", titleCase, "() {\n", - spaces(indent), " throw new Error();\n", + spaces(indent), " return ", type, + ".Builder.factory.fromStructBuilder(_builder.getPointerField(", offset, ").getStruct());\n", spaces(indent), " }\n", spaces(indent), " public final void set", titleCase, "(", type, ".Reader value) {\n", unionDiscrim.set, spaces(indent), " throw new Error();\n", spaces(indent), " }\n", - spaces(indent), " public final ", type, ".Builder init", titleCase, "(int size) {\n", - spaces(indent), " throw new Error();\n", + spaces(indent), " public final ", type, ".Builder init", titleCase, "() {\n", + spaces(indent), " return ", + type, ".Builder.factory.fromStructBuilder(_builder.getPointerField(", offset, ").initStruct(", + type, ".STRUCT_SIZE", "));\n", spaces(indent), " }\n"), kj::strTree(), diff --git a/compiler/src/test/scala/org/capnproto/TestUtil.scala b/compiler/src/test/scala/org/capnproto/TestUtil.scala index 53c6482..9b126e5 100644 --- a/compiler/src/test/scala/org/capnproto/TestUtil.scala +++ b/compiler/src/test/scala/org/capnproto/TestUtil.scala @@ -20,6 +20,22 @@ object TestUtil { builder.setFloat64Field(-123e45); builder.setTextField(new Text.Reader("foo")); // builder.setDataField(data("bar")); + { + val subBuilder = builder.initStructField(); + subBuilder.setVoidField(org.capnproto.Void.VOID); + subBuilder.setBoolField(true); + subBuilder.setInt8Field(-12); + subBuilder.setInt16Field(3456); + subBuilder.setInt32Field(-78901234); + subBuilder.setInt64Field(56789012345678L); + subBuilder.setUInt8Field(90); + subBuilder.setUInt16Field(1234); + subBuilder.setUInt32Field(56789012); + subBuilder.setUInt64Field(345678901234567890L); + subBuilder.setFloat32Field(-1.25e-10f); + subBuilder.setFloat64Field(345); + subBuilder.setTextField(new Text.Reader("baz")); + } } @@ -38,6 +54,10 @@ object TestUtil { assert(builder.getFloat32Field() == 1234.5f); assert(builder.getFloat64Field() == -123e45); //assert(builder.getTextField().toString() == "foo"); + + { +// val subBuilder = builder.getStructField(); + } } } diff --git a/runtime/src/main/java/org/capnproto/PointerBuilder.java b/runtime/src/main/java/org/capnproto/PointerBuilder.java index e5498fd..c71e34f 100644 --- a/runtime/src/main/java/org/capnproto/PointerBuilder.java +++ b/runtime/src/main/java/org/capnproto/PointerBuilder.java @@ -17,6 +17,11 @@ public final class PointerBuilder { return this.segment.buffer.getLong(this.pointer) == 0; } + public final StructBuilder getStruct() { + throw new Error(); +// return WireHelpers.getWritableStructPointer(); + } + public final StructBuilder initStruct(StructSize size) { return WireHelpers.initStructPointer(this.pointer, this.segment, size); } diff --git a/runtime/src/main/java/org/capnproto/WireHelpers.java b/runtime/src/main/java/org/capnproto/WireHelpers.java index 7844502..3882454 100644 --- a/runtime/src/main/java/org/capnproto/WireHelpers.java +++ b/runtime/src/main/java/org/capnproto/WireHelpers.java @@ -34,6 +34,12 @@ final class WireHelpers { size.data * 64, size.pointers, (byte)0); } + public static StructBuilder getWritableStructPointer(int refOffset, + SegmentBuilder segment, + StructSize size) { + throw new Error("unimplemented"); + } + public static ListBuilder initListPointer(int refOffset, SegmentBuilder segment, int elementCount,