TsMoniker implements Comparable<TsMoniker> { @Override public int hashCode() { switch (getType()) { case ANONYMOUS: case DYNAMIC: return uuid.hashCode(); case PROVIDED: return 0 ^ m_source.hashCode() ^ m_id.hashCode(); default: throw new RuntimeException(); } } private  TsMoniker(String m_source, String m_id, UUID uuid); @Deprecated  TsMoniker();  TsMoniker(@NonNull String source, @NonNull String id); @NonNull static TsMoniker create(@Nullable String source, @Nullable String id); @NonNull static TsMoniker createAnonymousMoniker(); @NonNull static TsMoniker createDynamicMoniker(); @NonNull static TsMoniker createProvidedMoniker(@NonNull String source, @NonNull String id); @Nullable String getId(); @Nullable String getSource(); @NonNull Type getType(); @Deprecated boolean isAnonymous(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); @Override int compareTo(TsMoniker o);  }
@Test public void testHashcode() { TsMoniker provided = TsMoniker.createProvidedMoniker("ABC", "123"); assertThat(provided.hashCode()) .isEqualTo(TsMoniker.createProvidedMoniker("ABC", "123").hashCode()) .isNotEqualTo(TsMoniker.createProvidedMoniker("ABC", "xxx").hashCode()) .isNotEqualTo(TsMoniker.createProvidedMoniker("xxx", "123").hashCode()) .isNotEqualTo(TsMoniker.createAnonymousMoniker().hashCode()) .isNotEqualTo(TsMoniker.createDynamicMoniker().hashCode()) .isNotEqualTo(TsMoniker.createProvidedMoniker("", "").hashCode()); TsMoniker anonymous = TsMoniker.createAnonymousMoniker(); assertThat(anonymous.hashCode()) .isEqualTo(anonymous.hashCode()) .isNotEqualTo(TsMoniker.createAnonymousMoniker().hashCode()) .isNotEqualTo(TsMoniker.createDynamicMoniker().hashCode()) .isNotEqualTo(TsMoniker.createProvidedMoniker("", "").hashCode()); TsMoniker dynamic = TsMoniker.createDynamicMoniker(); assertThat(dynamic.hashCode()) .isEqualTo(dynamic.hashCode()) .isNotEqualTo(TsMoniker.createAnonymousMoniker().hashCode()) .isNotEqualTo(TsMoniker.createDynamicMoniker().hashCode()) .isNotEqualTo(TsMoniker.createProvidedMoniker("", "").hashCode()); }