// Path: src/main/java/com/squareup/protoparser/OptionElement.java
// public enum Kind {
//   STRING,
//   BOOLEAN,
//   NUMBER,
//   ENUM,
//   MAP,
//   LIST,
//   OPTION
// }


import com.squareup.protoparser.OptionElement.Kind;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import org.junit.Test;
import static com.squareup.protoparser.DataType.ScalarType.BOOL;
import static com.squareup.protoparser.DataType.ScalarType.STRING;
import static com.squareup.protoparser.FieldElement.Label.ONE_OF;
import static com.squareup.protoparser.FieldElement.Label.REQUIRED;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.fail;
        .name("Message")
        .addFields(Arrays.asList(firstName, lastName))
        .build();
    assertThat(element.fields()).hasSize(2);
  }

  @Test public void simpleWithDocumentationToSchema() {
    TypeElement element = MessageElement.builder()
        .name("Message")
        .documentation("Hello")
        .addField(FieldElement.builder().label(REQUIRED).type(STRING).name("name").tag(1).build())
        .build();
    String expected = ""
        + "// Hello\n"
        + "message Message {\n"
        + "  required string name = 1;\n"
        + "}\n";
    assertThat(element.toSchema()).isEqualTo(expected);
  }

  @Test public void simpleWithOptionsToSchema() {
    FieldElement field = FieldElement.builder()
        .label(REQUIRED)
        .type(STRING)
        .name("name")
        .tag(1)
        .build();
    TypeElement element = MessageElement.builder()
        .name("Message")
        .addField(field)
// Path: src/main/java/com/squareup/protoparser/OptionElement.java
// public enum Kind {
//   STRING,
//   BOOLEAN,
//   NUMBER,
//   ENUM,
//   MAP,
//   LIST,
//   OPTION
// }


// Path: src/test/java/com/squareup/protoparser/MessageElementTest.java
import com.squareup.protoparser.OptionElement.Kind;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import org.junit.Test;
import static com.squareup.protoparser.DataType.ScalarType.BOOL;
import static com.squareup.protoparser.DataType.ScalarType.STRING;
import static com.squareup.protoparser.FieldElement.Label.ONE_OF;
import static com.squareup.protoparser.FieldElement.Label.REQUIRED;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.fail;

        .name("Message")
        .addFields(Arrays.asList(firstName, lastName))
        .build();
    assertThat(element.fields()).hasSize(2);
  }

  @Test public void simpleWithDocumentationToSchema() {
    TypeElement element = MessageElement.builder()
        .name("Message")
        .documentation("Hello")
        .addField(FieldElement.builder().label(REQUIRED).type(STRING).name("name").tag(1).build())
        .build();
    String expected = ""
        + "// Hello\n"
        + "message Message {\n"
        + "  required string name = 1;\n"
        + "}\n";
    assertThat(element.toSchema()).isEqualTo(expected);
  }

  @Test public void simpleWithOptionsToSchema() {
    FieldElement field = FieldElement.builder()
        .label(REQUIRED)
        .type(STRING)
        .name("name")
        .tag(1)
        .build();
    TypeElement element = MessageElement.builder()
        .name("Message")
        .addField(field)
        .addOption(OptionElement.create("kit", Kind.STRING, "kat"))