aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/test/unit_tests/parser.cpp
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2019-12-30 13:06:13 +0300
committerEgor Tensin <Egor.Tensin@gmail.com>2019-12-31 19:43:25 +0300
commit372064af20a456989c2a9ea2fda6e535d74dbafd (patch)
tree9cc9039586252bda5ef44a68db9f53627a87ce4b /test/unit_tests/parser.cpp
parentadd .dockerignore (diff)
downloadmath-server-372064af20a456989c2a9ea2fda6e535d74dbafd.tar.gz
math-server-372064af20a456989c2a9ea2fda6e535d74dbafd.zip
support the power (^) operator
It doesn't work with the unary minus currently (as is reflected in the tests), it should have a higher precedence.
Diffstat (limited to '')
-rw-r--r--test/unit_tests/parser.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/test/unit_tests/parser.cpp b/test/unit_tests/parser.cpp
index 562c6b7..37d9e0a 100644
--- a/test/unit_tests/parser.cpp
+++ b/test/unit_tests/parser.cpp
@@ -30,6 +30,10 @@ const std::vector<std::string_view> input{
" 2 * (1 + 3) ",
" 2 * (1 + 3 * (1 - -3)) ",
" -2 * ---- (3 + -100e-1) ", // Looks weird, but also works in e.g. Python
+ "2 ^ 3 ^ 3",
+ "(2 ^ 3) ^ 3", // Power operator is right-associative
+ "(.5 ^ -1) ^ 4",
+ ".5 ^ -1 ^ 4", // Power operator has higher precedence than the unary minus
};
const std::vector<double> expected{
@@ -39,6 +43,10 @@ const std::vector<double> expected{
8,
26,
14,
+ 134217728,
+ 512,
+ 16,
+ 2,
};
}