### Question:
Triple extends Pair<R, S> implements Third<T>,
                   MappableThird<T, Triple<R, S, ?>> { public static <R, S, T> Triple<R, S, T> triple(R first, S second, T third) { return new Triple<R, S, T>(first, second, third); } Triple(R first, S second, T third); static Triple<R, S, T> triple(R first, S second, T third); @Override T getThird(); @Override Triple<A, S, T> mapFirst(UnaryFunction<R, A> function); @Override Triple<R, A, T> mapSecond(UnaryFunction<S, A> function); @Override Triple<R, S, A> mapThird(UnaryFunction<T, A> function); @Override Iterable<Object> getValues();  }### Answer:
@Test public void shouldConstructATripleWithTheSpecifiedValues() throws Exception { String first = "5"; Integer second = 4; Long third = 5L; Triple<String, Integer, Long> expected = new Triple<String, Integer, Long>(first, second, third); Triple<String, Integer, Long> actual = triple(first, second, third); assertThat(actual, is(expected)); }