From 246cb31c1e20cdcc21a6a607de4b0095c71315d6 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Thu, 12 Feb 2015 14:32:33 +0100 Subject: Implemented `Cond` conditional * returns the `CDR` of the first true `CAR` in a given list of pairs * reimplemented `Apply` base class selection in terms of `Cond` --- test.cc | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'test.cc') diff --git a/test.cc b/test.cc index e89fcb1..db19889 100644 --- a/test.cc +++ b/test.cc @@ -233,6 +233,31 @@ static_assert( "(if #f 1 2) != 2" ); +static_assert( + std::is_same< + tav::Int<2>, + tav::Cond< + tav::Pair, tav::Int<2>>, tav::Int<1>>, + tav::Pair, tav::Int<2>>, tav::Int<2>>, + tav::Pair, tav::Int<2>>, tav::Int<3>> + >::type + >::value, + "(cond ((= 1 2) 1) ((= 2 2) 2) ((= 3 2) 3)) != 2" +); + +static_assert( + std::is_same< + tav::Int<-1>, + tav::Cond< + tav::Pair, tav::Int<2>>, tav::Int< 1>>, + tav::Pair, tav::Int<3>>, tav::Int< 2>>, + tav::Pair, tav::Int<4>>, tav::Int< 3>>, + tav::Pair, tav::Int<-1>> + >::type + >::value, + "(cond ((= 1 2) 1) ((= 2 3) 2) ((= 3 4) 3) (else -1)) != -1" +); + // cons static_assert( @@ -1020,3 +1045,15 @@ static_assert( >::value, "(map (lambda (x) (+ x 10)) (list 0 2 4)) != (list 10 12 14)" ); + +static_assert( + std::is_same< + tav::Int<42>, + tav::Apply< + tav::Multiply, + tav::Int<21>, + tav::Int<2> + >::type::type + >::value, + "(* 21 2) != 42" +); -- cgit v1.2.3