aboutsummaryrefslogtreecommitdiff
path: root/test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test.cc')
-rw-r--r--test.cc49
1 files changed, 48 insertions, 1 deletions
diff --git a/test.cc b/test.cc
index 37f83b7..3457a60 100644
--- a/test.cc
+++ b/test.cc
@@ -7,6 +7,7 @@
#include "list/list.h"
#include "list/operation/higher/fold.h"
#include "list/operation/higher/misc.h"
+#include "list/operation/higher/query.h"
int main(int, char **) { }
@@ -382,7 +383,7 @@ static_assert(
tav::List<tav::Int<1>, tav::Int<2>, tav::Int<3>>::type
>::type
>::value,
- "(filter odd (list 1 2 3)) != (list 1 3)"
+ "(filter odd? (list 1 2 3)) != (list 1 3)"
);
// list reverse
@@ -396,3 +397,49 @@ static_assert(
>::value,
"(reverse (list 1 2 3)) != (list 3 2 1)"
);
+
+// list query
+
+static_assert(
+ std::is_same<
+ tav::Boolean<true>,
+ tav::Any<
+ tav::Odd,
+ tav::List<tav::Int<1>, tav::Int<2>, tav::Int<3>>::type
+ >::type
+ >::value,
+ "(any odd? (list 1 2 3)) != #t"
+);
+
+static_assert(
+ std::is_same<
+ tav::Boolean<false>,
+ tav::Any<
+ tav::Odd,
+ tav::List<tav::Int<2>, tav::Int<4>, tav::Int<6>>::type
+ >::type
+ >::value,
+ "(any odd? (list 2 4 6)) != #f"
+);
+
+static_assert(
+ std::is_same<
+ tav::Boolean<true>,
+ tav::All<
+ tav::Even,
+ tav::List<tav::Int<2>, tav::Int<4>, tav::Int<6>>::type
+ >::type
+ >::value,
+ "(all even? (list 2 4 6)) != #t"
+);
+
+static_assert(
+ std::is_same<
+ tav::Boolean<false>,
+ tav::All<
+ tav::Odd,
+ tav::List<tav::Int<1>, tav::Int<2>, tav::Int<3>>::type
+ >::type
+ >::value,
+ "(all odd? (list 1 2 3)) != #f"
+);