Build language: Implement integer division
--
MOS_MIGRATED_REVID=91192716
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java
index a558805..37042ed 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java
@@ -252,6 +252,9 @@
assertThat(eval("6 % 2")).isEqualTo(0);
assertThat(eval("6 % 4")).isEqualTo(2);
assertThat(eval("3 % 6")).isEqualTo(3);
+ assertThat(eval("7 % -4")).isEqualTo(-1);
+ assertThat(eval("-7 % 4")).isEqualTo(1);
+ assertThat(eval("-7 % -4")).isEqualTo(-3);
checkEvalError("integer modulo by zero", "5 % 0");
}
@@ -265,6 +268,25 @@
}
@Test
+ public void testDivision() throws Exception {
+ assertThat(eval("6 / 2")).isEqualTo(3);
+ assertThat(eval("6 / 4")).isEqualTo(1);
+ assertThat(eval("3 / 6")).isEqualTo(0);
+ assertThat(eval("7 / -2")).isEqualTo(-4);
+ assertThat(eval("-7 / 2")).isEqualTo(-4);
+ assertThat(eval("-7 / -2")).isEqualTo(3);
+ assertThat(eval("2147483647 / 2")).isEqualTo(1073741823);
+ checkEvalError("integer division by zero", "5 / 0");
+ }
+
+ @Test
+ public void testOperatorPrecedence() throws Exception {
+ assertThat(eval("2 + 3 * 4")).isEqualTo(14);
+ assertThat(eval("2 + 3 / 4")).isEqualTo(2);
+ assertThat(eval("2 * 3 + 4 / -2")).isEqualTo(4);
+ }
+
+ @Test
public void testConcatStrings() throws Exception {
assertEquals("foobar", eval("'foo' + 'bar'"));
}