@Test
 public void testGetName_nestedEnum() {
   assertEquals(
       "test.Top.NestedEnum",
       ProtoEnumSoyType.get(TestProto.Top.NestedEnum.getDescriptor()).getName());
   assertEquals(
       "test.Top.NestedEnum",
       ProtoEnumSoyType.get(TestProto.Top.NestedEnum.getDescriptor()).getNameForBackend(null));
 }
  @Test
  public void testIsInstance() {
    ProtoEnumSoyValue red = ProtoEnumSoyValue.get(TestProto.Color.RED);
    ProtoEnumSoyValue apple = ProtoEnumSoyValue.get(TestProto.Fruit.APPLE);

    ProtoEnumSoyType color = ProtoEnumSoyType.get(TestProto.Color.getDescriptor());
    assertTrue(color.isInstance(red));
    assertFalse(color.isInstance(apple));
    assertFalse(color.isInstance(BooleanData.TRUE));
  }
  @Test
  public void testGetName() {
    assertEquals("test.Color", ProtoEnumSoyType.get(TestProto.Color.getDescriptor()).getName());
    assertEquals(
        "test.Color",
        ProtoEnumSoyType.get(TestProto.Color.getDescriptor()).getNameForBackend(null));

    assertEquals(
        "test.Color",
        ProtoEnumSoyType.get(TestProto.Order.getDescriptor().findFieldByName("color").getEnumType())
            .getName());
    assertEquals(
        "test.Color",
        ProtoEnumSoyType.get(TestProto.Order.getDescriptor().findFieldByName("color").getEnumType())
            .getNameForBackend(null));
  }
 @Test
 public void testGetValue() {
   ProtoEnumSoyType type = ProtoEnumSoyType.get(TestProto.Color.getDescriptor());
   assertNull(type.getValue("unknown value"));
   assertEquals(Integer.valueOf(TestProto.Color.BLUE_VALUE), type.getValue("BLUE"));
 }
  @Test
  public void testEquality() {
    ProtoEnumSoyType a = ProtoEnumSoyType.get(TestProto.Color.getDescriptor());
    ProtoEnumSoyType b = ProtoEnumSoyType.get(TestProto.Color.getDescriptor());

    assertEquals(a, a);
    assertEquals(a.hashCode(), a.hashCode());

    assertEquals(a, b);
    assertEquals(b, a);
    assertEquals(a.hashCode(), b.hashCode());

    ProtoEnumSoyType c = ProtoEnumSoyType.get(TestProto.Fruit.getDescriptor());
    assertNotEquals(a, c);
    assertNotEquals(c, a);

    ProtoEnumSoyType d =
        ProtoEnumSoyType.get(
            TestProto.Order.getDescriptor().findFieldByName("color").getEnumType());
    assertEquals(a, d);
    assertEquals(d, a);
    assertEquals(a.hashCode(), d.hashCode());

    ProtoEnumSoyType e =
        ProtoEnumSoyType.get(
            TestProto.Order.getDescriptor().findFieldByName("fruit").getEnumType());
    assertEquals(c, e);
    assertEquals(e, c);
    assertEquals(c.hashCode(), e.hashCode());
    assertNotEquals(a, e);
  }