TriTuple { public static <A, B, C> TriTuple<A, B, C> of(final A one, final B two, final C three) { return new TriTuple<>(one, two, three); } private  TriTuple(final A one, final B two, final C three); static TriTuple<A, B, C> of(final A one, final B two, final C three); A one(); B two(); C three(); @Override String toString(); @Override int hashCode(); @SuppressWarnings("rawtypes") @Override boolean equals(final Object obj);  }
@Test public void testEqualsDifferentType() { expectNotEqual( TriTuple.of("Foo", "42", "Baz"), TriTuple.of("Foo", 42, "Baz")); }
@Test public void testNotEqual1() { expectNotEqual( TriTuple.of("Foo", "Bar", "Baz"), TriTuple.of("FooX", "Bar", "Baz")); }
@Test public void testNotEqual2() { expectNotEqual( TriTuple.of("Foo", "Bar", "Baz"), TriTuple.of("Foo", "BarX", "Baz")); }
@Test public void testNotEqual3() { expectNotEqual( TriTuple.of("Foo", "Bar", "Baz"), TriTuple.of("Foo", "Bar", "BazX")); }
@Test public void testAllNull() { assertThatThrownBy(() -> TriTuple.of(null, null, null)).isInstanceOf(IllegalArgumentException.class); }