MyBigInt { public String multiply(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 (uv1.equals("0") || uv2.equals("0")) { return "0"; } long[] aToL = multiply(aToL(uv1, INT_BIT), aToL(uv2, INT_BIT), INT_BIT); return array2String(pv1 ^ pv2, aToL, INT_BIT); }  String add(String v1, String v2); String minus(String v1, String v2); String multiply(String v1, String v2);  }
@Test(dataProvider = "bigIntString") public void testMultiply(String s1, String s2) { String actual = new MyBigInt().multiply(s1, s2); String expected = new BigInteger(s1).multiply(new BigInteger(s2)).toString(); assertEquals(actual, expected); }