// Path: src/main/java/com/squareup/protoparser/DataType.java
// final class MapType implements DataType {
//   public static MapType create(DataType keyType, DataType valueType) {
//     return new MapType(checkNotNull(keyType, "keyType"), checkNotNull(valueType, "valueType"));
//   }
// 
//   private final DataType keyType;
//   private final DataType valueType;
// 
//   private MapType(DataType keyType, DataType valueType) {
//     this.keyType = keyType;
//     this.valueType = valueType;
//   }
// 
//   @Override public Kind kind() {
//     return Kind.MAP;
//   }
// 
//   public DataType keyType() {
//     return keyType;
//   }
// 
//   public DataType valueType() {
//     return valueType;
//   }
// 
//   @Override public String toString() {
//     return "map<" + keyType + ", " + valueType + ">";
//   }
// 
//   @Override public boolean equals(Object obj) {
//     if (obj == this) return true;
//     if (!(obj instanceof MapType)) return false;
//     MapType other = (MapType) obj;
//     return keyType.equals(other.keyType) && valueType.equals(other.valueType);
//   }
// 
//   @Override public int hashCode() {
//     return keyType.hashCode() * 37 + valueType.hashCode();
//   }
// }
// 
// Path: src/main/java/com/squareup/protoparser/DataType.java
// final class NamedType implements DataType {
//   public static NamedType create(String name) {
//     return new NamedType(checkNotNull(name, "name"));
//   }
// 
//   private final String name;
// 
//   private NamedType(String name) {
//     this.name = name;
//   }
// 
//   public String name() {
//     return name;
//   }
// 
//   @Override public Kind kind() {
//     return Kind.NAMED;
//   }
// 
//   @Override public String toString() {
//     return name;
//   }
// 
//   @Override public boolean equals(Object obj) {
//     if (obj == this) return true;
//     if (!(obj instanceof NamedType)) return false;
//     NamedType other = (NamedType) obj;
//     return name.equals(other.name);
//   }
// 
//   @Override public int hashCode() {
//     return name.hashCode();
//   }
// }


import com.squareup.protoparser.DataType.MapType;
import com.squareup.protoparser.DataType.NamedType;
import org.junit.Test;
import static com.squareup.protoparser.DataType.ScalarType.ANY;
import static com.squareup.protoparser.DataType.ScalarType.BOOL;
import static com.squareup.protoparser.DataType.ScalarType.BYTES;
import static com.squareup.protoparser.DataType.ScalarType.DOUBLE;
import static com.squareup.protoparser.DataType.ScalarType.FIXED32;
import static com.squareup.protoparser.DataType.ScalarType.FIXED64;
import static com.squareup.protoparser.DataType.ScalarType.FLOAT;
import static com.squareup.protoparser.DataType.ScalarType.INT32;
import static com.squareup.protoparser.DataType.ScalarType.INT64;
import static com.squareup.protoparser.DataType.ScalarType.SFIXED32;
import static com.squareup.protoparser.DataType.ScalarType.SFIXED64;
import static com.squareup.protoparser.DataType.ScalarType.SINT32;
import static com.squareup.protoparser.DataType.ScalarType.SINT64;
import static com.squareup.protoparser.DataType.ScalarType.STRING;
import static com.squareup.protoparser.DataType.ScalarType.UINT32;
import static com.squareup.protoparser.DataType.ScalarType.UINT64;
import static org.assertj.core.api.Assertions.assertThat;
package com.squareup.protoparser;



public final class DataTypeTest {
  @Test public void scalarToString() {
    assertThat(ANY.toString()).isEqualTo("any");
    assertThat(BOOL.toString()).isEqualTo("bool");
    assertThat(BYTES.toString()).isEqualTo("bytes");
    assertThat(DOUBLE.toString()).isEqualTo("double");
    assertThat(FLOAT.toString()).isEqualTo("float");
    assertThat(FIXED32.toString()).isEqualTo("fixed32");
    assertThat(FIXED64.toString()).isEqualTo("fixed64");
    assertThat(INT32.toString()).isEqualTo("int32");
    assertThat(INT64.toString()).isEqualTo("int64");
    assertThat(SFIXED32.toString()).isEqualTo("sfixed32");
    assertThat(SFIXED64.toString()).isEqualTo("sfixed64");
    assertThat(SINT32.toString()).isEqualTo("sint32");
    assertThat(SINT64.toString()).isEqualTo("sint64");
    assertThat(STRING.toString()).isEqualTo("string");
    assertThat(UINT32.toString()).isEqualTo("uint32");
    assertThat(UINT64.toString()).isEqualTo("uint64");
  }

  @Test public void mapToString() {
    assertThat(MapType.create(STRING, STRING).toString()).isEqualTo("map<string, string>");
  }

  @Test public void namedToString() {
// Path: src/main/java/com/squareup/protoparser/DataType.java
// final class MapType implements DataType {
//   public static MapType create(DataType keyType, DataType valueType) {
//     return new MapType(checkNotNull(keyType, "keyType"), checkNotNull(valueType, "valueType"));
//   }
// 
//   private final DataType keyType;
//   private final DataType valueType;
// 
//   private MapType(DataType keyType, DataType valueType) {
//     this.keyType = keyType;
//     this.valueType = valueType;
//   }
// 
//   @Override public Kind kind() {
//     return Kind.MAP;
//   }
// 
//   public DataType keyType() {
//     return keyType;
//   }
// 
//   public DataType valueType() {
//     return valueType;
//   }
// 
//   @Override public String toString() {
//     return "map<" + keyType + ", " + valueType + ">";
//   }
// 
//   @Override public boolean equals(Object obj) {
//     if (obj == this) return true;
//     if (!(obj instanceof MapType)) return false;
//     MapType other = (MapType) obj;
//     return keyType.equals(other.keyType) && valueType.equals(other.valueType);
//   }
// 
//   @Override public int hashCode() {
//     return keyType.hashCode() * 37 + valueType.hashCode();
//   }
// }
// 
// Path: src/main/java/com/squareup/protoparser/DataType.java
// final class NamedType implements DataType {
//   public static NamedType create(String name) {
//     return new NamedType(checkNotNull(name, "name"));
//   }
// 
//   private final String name;
// 
//   private NamedType(String name) {
//     this.name = name;
//   }
// 
//   public String name() {
//     return name;
//   }
// 
//   @Override public Kind kind() {
//     return Kind.NAMED;
//   }
// 
//   @Override public String toString() {
//     return name;
//   }
// 
//   @Override public boolean equals(Object obj) {
//     if (obj == this) return true;
//     if (!(obj instanceof NamedType)) return false;
//     NamedType other = (NamedType) obj;
//     return name.equals(other.name);
//   }
// 
//   @Override public int hashCode() {
//     return name.hashCode();
//   }
// }


// Path: src/test/java/com/squareup/protoparser/DataTypeTest.java
import com.squareup.protoparser.DataType.MapType;
import com.squareup.protoparser.DataType.NamedType;
import org.junit.Test;
import static com.squareup.protoparser.DataType.ScalarType.ANY;
import static com.squareup.protoparser.DataType.ScalarType.BOOL;
import static com.squareup.protoparser.DataType.ScalarType.BYTES;
import static com.squareup.protoparser.DataType.ScalarType.DOUBLE;
import static com.squareup.protoparser.DataType.ScalarType.FIXED32;
import static com.squareup.protoparser.DataType.ScalarType.FIXED64;
import static com.squareup.protoparser.DataType.ScalarType.FLOAT;
import static com.squareup.protoparser.DataType.ScalarType.INT32;
import static com.squareup.protoparser.DataType.ScalarType.INT64;
import static com.squareup.protoparser.DataType.ScalarType.SFIXED32;
import static com.squareup.protoparser.DataType.ScalarType.SFIXED64;
import static com.squareup.protoparser.DataType.ScalarType.SINT32;
import static com.squareup.protoparser.DataType.ScalarType.SINT64;
import static com.squareup.protoparser.DataType.ScalarType.STRING;
import static com.squareup.protoparser.DataType.ScalarType.UINT32;
import static com.squareup.protoparser.DataType.ScalarType.UINT64;
import static org.assertj.core.api.Assertions.assertThat;

package com.squareup.protoparser;



public final class DataTypeTest {
  @Test public void scalarToString() {
    assertThat(ANY.toString()).isEqualTo("any");
    assertThat(BOOL.toString()).isEqualTo("bool");
    assertThat(BYTES.toString()).isEqualTo("bytes");
    assertThat(DOUBLE.toString()).isEqualTo("double");
    assertThat(FLOAT.toString()).isEqualTo("float");
    assertThat(FIXED32.toString()).isEqualTo("fixed32");
    assertThat(FIXED64.toString()).isEqualTo("fixed64");
    assertThat(INT32.toString()).isEqualTo("int32");
    assertThat(INT64.toString()).isEqualTo("int64");
    assertThat(SFIXED32.toString()).isEqualTo("sfixed32");
    assertThat(SFIXED64.toString()).isEqualTo("sfixed64");
    assertThat(SINT32.toString()).isEqualTo("sint32");
    assertThat(SINT64.toString()).isEqualTo("sint64");
    assertThat(STRING.toString()).isEqualTo("string");
    assertThat(UINT32.toString()).isEqualTo("uint32");
    assertThat(UINT64.toString()).isEqualTo("uint64");
  }

  @Test public void mapToString() {
    assertThat(MapType.create(STRING, STRING).toString()).isEqualTo("map<string, string>");
  }

  @Test public void namedToString() {
    assertThat(NamedType.create("test").toString()).isEqualTo("test");