bc: fixes for multi-line if/while/for
[oweals/busybox.git] / testsuite / bc.tests
index 32460092bc3561d52cc25f234c36f79593de81fc..95cc28dad147d6277efcbf5104d9ec6b423d8c01 100755 (executable)
@@ -4,6 +4,68 @@
 
 . ./testing.sh
 
+# testing "test name" "command" "expected result" "file input" "stdin"
+
+testing "bc comment 1" \
+       "bc" \
+       "3\n" \
+       "" "1 /* comment */ + 2"
+
+testing "bc comment 2: /*/ is not a closed comment" \
+       "bc" \
+       "4\n" \
+       "" "1 /*/ + 2 */ + 3"
+
+testing "bc backslash 1" \
+       "bc" \
+       "3\n" \
+       "" "1 \\\\\n + 2"
+
+testing "bc string 1" \
+       "bc" \
+       "STR\n" \
+       "" "\"STR\n\""
+
+testing "bc if 0 else" \
+       "bc" \
+       "2\n9\n" \
+       "" "if (0) 1 else 2; 9"
+
+testing "bc if 1 else" \
+       "bc" \
+       "1\n9\n" \
+       "" "if (1) 1 else 2; 9"
+
+testing "bc if 1 if 1 else else" \
+       "bc" \
+       "1\n9\n" \
+       "" "if (1) if (1) 1 else 2 else 3; 9"
+
+testing "bc if 0 else if 1" \
+       "bc" \
+       "2\n9\n" \
+       "" "if (0) 1 else if (1) 2; 9"
+
+testing "bc define auto" \
+       "bc" \
+       "8\n9\n" \
+       "" "define w() { auto z; return 8; }; w(); 9"
+
+testing "bc define with body on next line" \
+       "bc" \
+       "8\n9\n" \
+       "" "define w()\n{ auto z; return 8; }\nw()\n9"
+
+testing "bc if(cond)<NL>" \
+       "bc" \
+       "9\n" \
+       "" "if(0)\n3\n9"
+
+testing "bc while(cond)<NL>" \
+       "bc" \
+       "8\n7\n6\n5\n4\n3\n2\n1\n9\n" \
+       "" "i=9;while(--i)\ni\n9"
+
 tar xJf bc_large.tar.xz
 
 for f in bc*.bc; do