public static OptionElement create(String name, Kind kind, Object value) { return create(name, kind, value, false); }
@Test public void listToSchema() { OptionElement option = OptionElement.create("foo", LIST, ImmutableList.of(OptionElement.create("ping", STRING, "pong", true), OptionElement.create("kit", STRING, "kat")), true); String expected = "" + "(foo) = [\n" + " (ping) = \"pong\",\n" + " kit = \"kat\"\n" + "]"; assertThat(option.toSchema()).isEqualTo(expected); }
@Test public void mapToSchema() { OptionElement option = OptionElement.create("foo", MAP, ImmutableMap.of("ping", "pong", "kit", ImmutableList.of("kat", "kot"))); String expected = "" + "foo = {\n" + " ping: \"pong\",\n" + " kit: [\n" + " \"kat\",\n" + " \"kot\"\n" + " ]\n" + "}"; assertThat(option.toSchema()).isEqualTo(expected); }
@Test public void simpleToSchema() { OptionElement option = OptionElement.create("foo", STRING, "bar"); String expected = "foo = \"bar\""; assertThat(option.toSchema()).isEqualTo(expected); }
@Test public void booleanToSchema() { OptionElement option = OptionElement.create("foo", BOOLEAN, "false"); String expected = "foo = false"; assertThat(option.toSchema()).isEqualTo(expected); } }
@Test public void field() { FieldElement field = FieldElement.builder(location) .label(OPTIONAL) .type("CType") .name("ctype") .tag(1) .options(ImmutableList.of( OptionElement.create("default", Kind.ENUM, "TEST"), OptionElement.create("deprecated", Kind.BOOLEAN, "true"))) .build(); assertThat(field.options()).containsOnly( // OptionElement.create("default", Kind.ENUM, "TEST"), // OptionElement.create("deprecated", Kind.BOOLEAN, "true")); }
@Test public void addMultipleOptions() { TypeElement element = MessageElement.builder(location).name("Message").build(); OptionElement kitKat = OptionElement.create("kit", Kind.STRING, "kat"); OptionElement fooBar = OptionElement.create("foo", Kind.STRING, "bar"); ProtoFileElement file = ProtoFileElement.builder(location) .options(ImmutableList.of(kitKat, fooBar)) .types(ImmutableList.of(element)) .build(); assertThat(file.options()).hasSize(2); }
@Test public void fieldWithOptionsToSchema() { EnumConstantElement value = EnumConstantElement.builder(location) .name("NAME") .tag(1) .options(ImmutableList.of( OptionElement.create("kit", STRING, "kat", true), OptionElement.create("tit", STRING, "tat"))) .build(); String expected = "NAME = 1 [\n" + " (kit) = \"kat\",\n" + " tit = \"tat\"\n" + "];\n"; assertThat(value.toSchema()).isEqualTo(expected); } }
@Test public void addMultipleOptions() { OptionElement kitKat = OptionElement.create("kit", Kind.STRING, "kat"); OptionElement fooBar = OptionElement.create("foo", Kind.STRING, "bar"); FieldElement field = FieldElement.builder(location) .label(REQUIRED) .type("string") .name("name") .tag(1) .options(ImmutableList.of(kitKat, fooBar)) .build(); assertThat(field.options()).hasSize(2); } }
@Test public void addMultipleOptions() { OptionElement kitKat = OptionElement.create("kit", STRING, "kat"); OptionElement fooBar = OptionElement.create("foo", STRING, "bar"); EnumElement element = EnumElement.builder(location) .name("Enum") .options(ImmutableList.of(kitKat, fooBar)) .constants(ImmutableList.of( EnumConstantElement.builder(location).name("ONE").tag(1).build())) .build(); assertThat(element.options()).hasSize(2); }
@Test public void rpcWithOptionsToSchema() { RpcElement rpc = RpcElement.builder(location) .name("Name") .requestType("RequestType") .responseType("ResponseType") .options(ImmutableList.of( OptionElement.create("foo", Kind.STRING, "bar"))) .build(); String expected = "" + "rpc Name (RequestType) returns (ResponseType) {\n" + " option foo = \"bar\";\n" + "};\n"; assertThat(rpc.toSchema()).isEqualTo(expected); }
@Test public void addMultipleOptions() { OptionElement kitKat = OptionElement.create("kit", Kind.STRING, "kat"); OptionElement fooBar = OptionElement.create("foo", Kind.STRING, "bar"); ServiceElement service = ServiceElement.builder(location) .name("Service") .options(ImmutableList.of(kitKat, fooBar)) .rpcs(ImmutableList.of( RpcElement.builder(location) .name("Name") .requestType("RequestType") .responseType("ResponseType") .build())) .build(); assertThat(service.options()).hasSize(2); }
@Test public void simpleWithOptionsToSchema() { TypeElement element = MessageElement.builder(location).name("Message").build(); OptionElement option = OptionElement.create("kit", Kind.STRING, "kat"); ProtoFileElement file = ProtoFileElement.builder(location) .options(ImmutableList.of(option)) .types(ImmutableList.of(element)) .build(); String expected = "" + "// file.proto\n" + "\n" + "option kit = \"kat\";\n" + "\n" + "message Message {}\n"; assertThat(file.toSchema()).isEqualTo(expected); }
@Test public void addMultipleOptions() { FieldElement field = FieldElement.builder(location) .label(REQUIRED) .type("string") .name("name") .tag(1) .build(); OptionElement kitKat = OptionElement.create("kit", Kind.STRING, "kat"); OptionElement fooBar = OptionElement.create("foo", Kind.STRING, "bar"); MessageElement element = MessageElement.builder(location) .name("Message") .fields(ImmutableList.of(field)) .options(ImmutableList.of(kitKat, fooBar)) .build(); assertThat(element.options()).hasSize(2); }
@Test public void fieldWithOptionsToSchema() { FieldElement field = FieldElement.builder(location) .label(REQUIRED) .type("string") .name("name") .tag(1) .options(ImmutableList.of(OptionElement.create("kit", Kind.STRING, "kat"))) .build(); String expected = "required string name = 1 [\n" + " kit = \"kat\"\n" + "];\n"; assertThat(field.toSchema()).isEqualTo(expected); } }
@Test public void singleWithOptionsToSchema() { ServiceElement service = ServiceElement.builder(location) .name("Service") .options(ImmutableList.of( OptionElement.create("foo", Kind.STRING, "bar"))) .rpcs(ImmutableList.of( RpcElement.builder(location) .name("Name") .requestType("RequestType") .responseType("ResponseType") .build())) .build(); String expected = "" + "service Service {\n" + " option foo = \"bar\";\n" + "\n" + " rpc Name (RequestType) returns (ResponseType);\n" + "}\n"; assertThat(service.toSchema()).isEqualTo(expected); }
@Test public void packageDeclaration() throws Exception { String proto = "" + "package google.protobuf;\n" + "option java_package = \"com.google.protobuf\";\n" + "\n" + "// The protocol compiler can output a FileDescriptorSet containing the .proto\n" + "// files it parses.\n" + "message FileDescriptorSet {\n" + "}\n"; ProtoFileElement expected = ProtoFileElement.builder(location) .packageName("google.protobuf") .types(ImmutableList.<TypeElement>of( MessageElement.builder(location.at(6, 1)) .name("FileDescriptorSet") .documentation("The protocol compiler can output a FileDescriptorSet containing " + "the .proto\nfiles it parses.") .build())) .options(ImmutableList.of( OptionElement.create("java_package", Kind.STRING, "com.google.protobuf"))) .build(); assertThat(ProtoParser.parse(location, proto)).isEqualTo(expected); }
@Test public void simpleWithOptionsToSchema() { FieldElement field = FieldElement.builder(location) .label(REQUIRED) .type("string") .name("name") .tag(1) .build(); TypeElement element = MessageElement.builder(location) .name("Message") .fields(ImmutableList.of(field)) .options(ImmutableList.of( OptionElement.create("kit", Kind.STRING, "kat"))) .build(); String expected = "" + "message Message {\n" + " option kit = \"kat\";\n" + "\n" + " required string name = 1;\n" + "}\n"; assertThat(element.toSchema()).isEqualTo(expected); }
@Test public void simpleWithOptionsToSchema() { EnumElement element = EnumElement.builder(location) .name("Enum").options(ImmutableList.of(OptionElement.create("kit", STRING, "kat"))) .constants(ImmutableList.of( EnumConstantElement.builder(location).name("ONE").tag(1).build(), EnumConstantElement.builder(location).name("TWO").tag(2).build(), EnumConstantElement.builder(location).name("SIX").tag(6).build())) .build(); String expected = "" + "enum Enum {\n" + " option kit = \"kat\";\n" + "\n" + " ONE = 1;\n" + " TWO = 2;\n" + " SIX = 6;\n" + "}\n"; assertThat(element.toSchema()).isEqualTo(expected); }