MyBigInt { public String add(String v1, String v2) { boolean pv1 = true, pv2 = true; String uv1 = v1, uv2 = v2; if (v1.substring(0, 1).equals("-") || v1.substring(0, 1).equals("+")) { uv1 = v1.substring(1); pv1 = v1.substring(0, 1).equals("+"); } if (v2.substring(0, 1).equals("-") || v2.substring(0, 1).equals("+")) { uv2 = v2.substring(1); pv2 = v2.substring(0, 1).equals("+"); } if (pv1 ^ pv2) { if (pv1) { return minusUnassigned(uv1, uv2); } else { return minusUnassigned(uv2, uv1); } } else { return addUnassigned(!pv1, uv1, uv2); } }  String add(String v1, String v2); String minus(String v1, String v2); String multiply(String v1, String v2);  }
@Test(dataProvider = "bigIntString") public void testAdd(String s1, String s2) { String actual = new MyBigInt().add(s1, s2); String expected = new BigInteger(s1).add(new BigInteger(s2)).toString(); assertEquals(actual, expected, String.format("%s + %s", s1, s2)); }