@Test
public void testPlus() {

    // plusByDouble
    assertCoefficientsEquals(new double[]{A, B, C}, valueOf(A, B, C).plus(0));
    assertCoefficientsEquals(new double[]{A + C, B}, valueOf(A, B).plus(C));
    // plusByPolynomial
    assertCoefficientsEquals(new double[]{A, B}, valueOf(A, B).plus(valueOf(0)));
    assertCoefficientsEquals(new double[]{A, B}, valueOf(0).plus(valueOf(A, B)));
    assertCoefficientsEquals(new double[]{0}, valueOf(A, B).plus(valueOf(-A, -B)));
    assertCoefficientsEquals(new double[]{0, B * 2}, valueOf(A, B).plus(valueOf(-A, B)));
    assertCoefficientsEquals(new double[]{A, B}, valueOf(A).plus(valueOf(0, B)));
    assertCoefficientsEquals(new double[]{A + C, B - C, C}, valueOf(A, B, C).plus(valueOf(C, -C)));
    assertCoefficientsEquals(new double[]{A + C, B - C, C}, valueOf(C, -C).plus(valueOf(A, B, C)));
}