@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);
  }