@Test
public void resolvesComplementaryAngle() {

    final Degrees<Double> first = new Degrees.Default<>(Math.random());
    final Degrees<Double> second = new Degrees.Default<>(Math.random());
    final Degrees<Double> third = new Degrees.Default<>(Math.random());
    final InnerProduct<Double> pdt = new MkProduct<>();
    final double error = 1.e-6;
    MatcherAssert.assertThat(
        new Complementary<>(first).resolve(pdt).doubleValue()
            + first.resolve(pdt).doubleValue(),
        Matchers.closeTo(Math.PI / 2, error)
    );
    MatcherAssert.assertThat(
        new Complementary<>(second).resolve(pdt).doubleValue()
            + second.resolve(pdt).doubleValue(),
        Matchers.closeTo(Math.PI / 2, error)
    );
    MatcherAssert.assertThat(
        new Complementary<>(third).resolve(pdt).doubleValue()
            + third.resolve(pdt).doubleValue(),
        Matchers.closeTo(Math.PI / 2, error)
    );
}