Advertisement
Rapptz

liatest.cpp

Jul 25th, 2013
353
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.53 KB | None | 0 0
  1. #include "Lia/list/basics.hpp"
  2. #include "Lia/list/folds.hpp"
  3. #include <vector>
  4. #include <string>
  5. #include <cassert>
  6.  
  7. void basic_test() {
  8.     std::vector<int> v = {1,2,3,4,5,6,7,8,9,10,11};
  9.     assert(lia::head(v) == 1 && "head");
  10.     assert(lia::last(v) == 11 && "last");
  11.     assert(lia::null(v) == false && "null");
  12.     assert(lia::length(v) == 11 && "length");
  13.     assert((lia::tail(std::vector<int>{1,2,3,4}) == std::vector<int>{2,3,4}) && "tail");
  14.     assert((v == std::vector<int>{1,2,3,4,5,6,7,8,9,10,11}) && "const-correctness");
  15.     assert((lia::append(std::vector<int>{1,2,3},std::vector<int>{4,5,6}) == std::vector<int>{1,2,3,4,5,6}) && "append");
  16.     assert((lia::append(std::string("one"), std::string("two")) == "onetwo") && "append(str)");
  17. }
  18.  
  19. void transform_test() {
  20.     std::vector<int> v = {1,2,3,4,5};
  21.     assert((lia::map(v, [](int x) { return x > 4;}) == std::vector<bool>{false,false,false,false,true}) && "map");
  22.     assert((lia::reverse(v) == std::vector<int>{5,4,3,2,1}) && "reverse");
  23.     assert((lia::intersperse(v, 0) == std::vector<int>{1,0,2,0,3,0,4,0,5}) && "intersperse");
  24.     assert((lia::subsequences(std::vector<int>{1,2,3,4}).size() == 16) && "subsequences");
  25.     assert((lia::permutations(std::vector<int>{1,2,3,4}).size() == 24) && "permutations");
  26.     assert((v == std::vector<int>{1,2,3,4,5}) && "const-correctness");
  27. }
  28.  
  29.  
  30.  
  31. void fold_test() {
  32.     std::vector<int> v = {1,2,3,4,5,6,7,8,9,10};
  33.     auto b = lia::concat(std::vector<std::vector<int>>{{1,2,3},{4,5,6,7,8,9,10}});
  34.     assert(lia::foldl(v, [](int x, int y) { return x + y; }, 0) == lia::sum(v) && "foldl or foldl1");
  35.     assert(lia::foldr(v, [](int x, int y) { return x * y; }, 1) == lia::product(v) && "foldr or foldl1");
  36.     assert(lia::foldr1(std::vector<int>{4,5,6,7,8,9,10}, [](int x, int y) { return x * y; }) == 604800 && "foldr1");
  37.     assert(lia::all(std::vector<bool>{1,1,1,1,1,1,1,1}) && "all(bool)");
  38.     assert(lia::all(std::vector<int>{6,7,8,9,10,11}, [](int x) { return x > 5; }) && "all(pred)");
  39.     assert(lia::any(std::vector<bool>{0,0,0,1,0,1,0,0}) && "any(bool)");
  40.     assert(lia::any(std::vector<int>{4,5,11,9,8}, [](int x) { return x == 5; }) && "any(pred)");
  41.     assert(lia::minimum(std::vector<int>{99,11,11,10}) == 10 && "minimum");
  42.     assert(lia::maximum(std::vector<int>{99,11,11,10}) == 99 && "maximum");
  43.     assert(lia::concat(std::vector<std::string>{"Hello", "World"}) == "HelloWorld" && "concat(str)");
  44.     assert(b == v && "concat");
  45. }
  46.  
  47. int main() {
  48.     basic_test();
  49.     transform_test();
  50.     fold_test();
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement