starlark: add tests of int / int

Also, remove StarklarkInt.divide, which is unused and untested.
(int / int is implemented by first converting operands to float.)

See https://github.com/bazelbuild/bazel/pull/12498 for context.

PiperOrigin-RevId: 342895923
diff --git a/src/main/java/net/starlark/java/eval/StarlarkInt.java b/src/main/java/net/starlark/java/eval/StarlarkInt.java
index c6be007..df34dfb 100644
--- a/src/main/java/net/starlark/java/eval/StarlarkInt.java
+++ b/src/main/java/net/starlark/java/eval/StarlarkInt.java
@@ -448,23 +448,6 @@
     return StarlarkInt.of(zbig);
   }
 
-  /** Returns x / y (real division). */
-  public static StarlarkInt divide(StarlarkInt x, StarlarkInt y) throws EvalException {
-    if (y == ZERO) {
-      throw Starlark.errorf("real division by zero");
-    }
-    if (x instanceof Int32 && y instanceof Int32) {
-      long xl = ((Int32) x).v;
-      long yl = ((Int32) y).v;
-      return StarlarkInt.of(xl / yl);
-    }
-
-    BigInteger xbig = x.toBigInteger();
-    BigInteger ybig = y.toBigInteger();
-    BigInteger zbig = xbig.divide(ybig);
-    return StarlarkInt.of(zbig);
-  }
-
   /** Returns x // y (floor of integer division). */
   public static StarlarkInt floordiv(StarlarkInt x, StarlarkInt y) throws EvalException {
     if (y == ZERO) {
diff --git a/src/test/java/net/starlark/java/eval/testdata/int.star b/src/test/java/net/starlark/java/eval/testdata/int.star
index 9c8e236..4d38e62 100644
--- a/src/test/java/net/starlark/java/eval/testdata/int.star
+++ b/src/test/java/net/starlark/java/eval/testdata/int.star
@@ -83,7 +83,7 @@
 assert_eq(-(111111111 * 111111111), -12345678987654321)
 assert_eq((111111111 * 111111111) // 111111111, 111111111)
 
-# division
+# floored division
 assert_eq(100 // 7, 14)
 assert_eq(100 // -7, -15)
 assert_eq(-100 // 7, -15) # NB: different from Go / Java
@@ -92,12 +92,30 @@
 assert_eq(98 // -7, -14)
 assert_eq(-98 // 7, -14)
 assert_eq(-98 // -7, 14)
-quot = 1169282 * 1000000 + 890553 # simplify when we have big literals
-assert_eq(product // 1234567, quot)
-assert_eq(product // -1234567, -quot-1)
-assert_eq(-product // 1234567, -quot-1)
-assert_eq(-product // -1234567, quot)
-assert_eq(((-1) << 31) // -1, 2147483647+1) # sole case of int // int that causes int overflow
+assert_eq( product //  1234567,  1169282890553)
+assert_eq( product // -1234567, -1169282890553-1)
+assert_eq(-product //  1234567, -1169282890553-1)
+assert_eq(-product // -1234567,  1169282890553)
+assert_eq(((-1) << 31) // -1, 1 << 31) # sole case of int // int that causes int overflow
+assert_eq(((-1) << 63) // -1, 1 << 63) # ditto, long overflow
+
+# floating-point division of int operands
+assert_eq(str(100 / 7), "14.285714285714286")
+assert_eq(str(100 / -7), "-14.285714285714286")
+assert_eq(str(-100 / 7), "-14.285714285714286")
+assert_eq(str(-100 / -7), "14.285714285714286")
+assert_eq(type(98 / 7), "float")
+assert_eq(98 / 7, 14.0)
+assert_eq(98 / -7, -14.0)
+assert_eq(-98 / 7, -14.0)
+assert_eq(-98 / -7, 14.0)
+assert_eq(type(product /  1234567), "float")
+assert_eq(int( product /  1234567),  1169282890553)
+assert_eq(int( product / -1234567), -1169282890553)
+assert_eq(int(-product /  1234567), -1169282890553)
+assert_eq(int(-product / -1234567),  1169282890553)
+assert_eq(((-1) << 31) / -1, 1 << 31) # sole case of int / int that causes int overflow
+assert_eq(((-1) << 63) / -1, 1 << 63) # ditto, long overflow
 
 # remainder
 assert_eq(100 % 7, 2)