From aeb1e7ecb35d89eece5e799ec41b2016a419db03 Mon Sep 17 00:00:00 2001 From: Ari Lazier Date: Tue, 17 Nov 2015 17:17:54 -0800 Subject: [PATCH] bool tests --- parser/query_builder.cpp | 3 +++ parser/test.cpp | 2 ++ 2 files changed, 5 insertions(+) diff --git a/parser/query_builder.cpp b/parser/query_builder.cpp index 5afdfcb9..a836f777 100644 --- a/parser/query_builder.cpp +++ b/parser/query_builder.cpp @@ -220,6 +220,9 @@ struct ValueGetter { if (value.type == parser::Expression::Type::Argument) { return args.bool_for_argument(std::stoi(value.s)); } + if (value.type != parser::Expression::Type::True && value.type != parser::Expression::Type::False) { + throw std::runtime_error("Attempting to compare bool property to a non-bool value"); + } return value.type == parser::Expression::Type::True; } }; diff --git a/parser/test.cpp b/parser/test.cpp index e47dcee7..f18a36ff 100644 --- a/parser/test.cpp +++ b/parser/test.cpp @@ -74,6 +74,7 @@ static std::vector valid_queries = { "a==a OR a==a", "and=='AND'&&'or'=='||'", "and == or && ORE > GRAND", + "a=1AND NOTb=2", }; static std::vector invalid_queries = { @@ -124,6 +125,7 @@ static std::vector invalid_queries = { "a==a &| a==a", "a==a && OR a==a", "a==aORa==a", + "a=1ANDNOT b=2", "truepredicate &&", "truepredicate & truepredicate",