lumiera_/tests/12metaprogramming.tests

774 lines
22 KiB
Text
Raw Normal View History

TESTING "Metaprogramming facilities and techniques" ./test-suite --group=common
TEST "implicit conversion to bool" BoolCheckable_test <<END
out: 1
out: 2
out: doIt
out: 4
out: 5
out: doIt
out: 7
out: 8
out: doIt
out: 10
out: 11
out: doIt
out: 13
out: 14
out: doIt
out: sizeof.+lib.+test.+ExampleCustomType123.+ = [248]
return: 0
END
TEST "ConfigFlags_test" ConfigFlags_test <<END
out-lit: Conf0 :-
out-lit: Conf1 :-<1>-
out-lit: Conf2 :-<2>-
out-lit: Conf3 :-<3>-
out-lit: Conf4 :-<2>-<4>-
out-lit: AllFlags :-<1>-<2>-<3>-<4>-
out-lit: __________________________
out-lit: __________________________ check_flags()
out-lit: Flags1 :-<2>-<4>-
out-lit: Flags2 :-<2>-<4>-
out-lit: SimpleConfig_defined_by_Typelist :-<1>-
out-lit: AnotherConfig_defined_by_Typelist :-<1>-<2>-<3>-<4>-
out-lit: __________________________
out-lit: __________________________ check_instantiation()
out-lit: defined Conf0? ---> 0
out-lit: defined Conf1? ---> 1
out-lit: defined Conf2? ---> 1
out-lit: defined Conf3? ---> 1
out-lit: defined Conf4? ---> 1
out-lit: defined Trash? ---> 0
out-lit: __________________________
out-lit: __________________________ check_filter()
out-lit: SomeFlagsets :
out-lit: +---<1>-<3>-+
out-lit: +---<2>-<4>-+-
out-lit: Configs_defined_by_Flagsets :
out-lit: +-Conf-[-<1>-<3>-]
out-lit: +-Conf-[-<2>-<4>-]-
out-lit: Filter_possible_Configs :
out-lit: +-Conf-[-<2>-<4>-]-
out-lit: AllFlagCombinations :
out-lit: +---<1>-<2>-<3>-<4>-<·>-+
out-lit: +---<1>-<2>-<3>-<·>-+
out-lit: +---<1>-<2>-<4>-<·>-+
out-lit: +---<1>-<2>-<·>-+
out-lit: +---<1>-<3>-<4>-<·>-+
out-lit: +---<1>-<3>-<·>-+
out-lit: +---<1>-<4>-<·>-+
out-lit: +---<1>-<·>-+
out-lit: +---<2>-<3>-<4>-<·>-+
out-lit: +---<2>-<3>-<·>-+
out-lit: +---<2>-<4>-<·>-+
out-lit: +---<2>-<·>-+
out-lit: +---<3>-<4>-<·>-+
out-lit: +---<3>-<·>-+
out-lit: +---<4>-<·>-+
out-lit: +---<·>-+-
out-lit: ListAllConfigs :
out-lit: +-Conf-[-<1>-<2>-<3>-<4>-]
out-lit: +-Conf-[-<1>-<2>-<3>-]
out-lit: +-Conf-[-<1>-<2>-<4>-]
out-lit: +-Conf-[-<1>-<2>-]
out-lit: +-Conf-[-<1>-<3>-<4>-]
out-lit: +-Conf-[-<1>-<3>-]
out-lit: +-Conf-[-<1>-<4>-]
out-lit: +-Conf-[-<1>-]
out-lit: +-Conf-[-<2>-<3>-<4>-]
out-lit: +-Conf-[-<2>-<3>-]
out-lit: +-Conf-[-<2>-<4>-]
out-lit: +-Conf-[-<2>-]
out-lit: +-Conf-[-<3>-<4>-]
out-lit: +-Conf-[-<3>-]
out-lit: +-Conf-[-<4>-]
out-lit: +-Conf-[-]-
out-lit: Filter_all_possible_Configs :
out-lit: +-Conf-[-<1>-]
out-lit: +-Conf-[-<2>-<3>-]
out-lit: +-Conf-[-<2>-<4>-]
out-lit: +-Conf-[-<2>-]
out-lit: +-Conf-[-<3>-]-
out-lit: __________________________
out-lit: __________________________ check_FlagInfo()
out-lit: Flags1 :-<1>-<3>-
out-lit: max bit : 3
out-lit: binary code: 10
out-lit: SomeConfigs :
out-lit: +-Conf-[-<1>-<3>-]
out-lit: +-Conf-[-<2>-<4>-]-
out-lit: max bit in [SomeConfigs] : 4
out-lit: TestVisitor application:
out-lit: visit(code=10) -->
out-lit: +-Conf-[-<1>-<3>-]-
out-lit: visit(code=20) -->
out-lit: +-Conf-[-<2>-<4>-]-
out-lit: __________________________
out-lit: __________________________ check_ConfigSelector()
out-lit: Possible_Configs :
out-lit: +-Conf-[-<1>-]
out-lit: +-Conf-[-<2>-<3>-]
out-lit: +-Conf-[-<2>-<4>-]
out-lit: +-Conf-[-<2>-]
out-lit: +-Conf-[-<3>-]-
out-lit: Flag-code = 2 ConfigSelector() ---> 1010
out-lit: Flag-code = 12 ConfigSelector() ---> 1023
out-lit: Flag-code = 20 ConfigSelector() ---> 1024
out-lit: Flag-code = 4 ConfigSelector() ---> 1020
out-lit: Flag-code = 8 ConfigSelector() ---> 1030
out: LUMIERA_ERROR_INVALID:invalid input or parameters.+No preconfigured factory for config-bits=10111
return: 0
END
TEST "Duck typing support" DuckDetector_test <<END
out: HasNested_Core<PropperGander> : Yes
out: HasNested_Core<Propaganda> : No
out: HasMember_honk<PropperGander> : Yes
out: HasMember_honk<Propaganda> : Yes
out: HasFunSig_honk<PropperGander> : Yes
out: HasFunSig_honk<Propaganda> : No
return: 0
END
TEST "functional closure" FunctionClosure_test <<END
out-lit: List1 :-<1>-<2>-<3>-
out-lit: List2 :-<5>-<6>-<7>-
out-lit: Args :-<5>-<9>-
out-lit: NewArgs :-<1>-<5>-<9>-
out-lit: :
out-lit: : ---Apply---
out-lit: tup0 :...Tuple()
out-lit: tup1 :...Tuple(11)
out-lit: tup2 :...Tuple(11,12)
out-lit: tup3 :...Tuple(11,12,13)
out-lit: :
out-lit: : ---Bind----
return: 0
END
TEST "functional composition" FunctionComposition_test <<END
return: 0
END
TEST "function type erasure" FunctionErasure_test <<END
return: 0
END
TEST "metaprogramming helpers" MetaUtils_test <<END
return: 0
END
TEST "Lumiera Iterator Concept" IterAdapter_test 20 <<END
out: ::20::19::18::17::16::15::14::13::12::11::10::9::8::7::6::5::4::3::2::1
out: ::0::1::2::3::4::5::6::7::8::9::10::11::12::13::14::15::16::17::18::19
END
TEST "Lumiera Iterator Adapter for STL" IterAdapterSTL_test <<END
out: -----filter-distinct-values---.+vector
out: iter::eachDistinct$
out: iter::eachDistinct::1$
out: iter::eachDistinct::1::2::3::1
out: -----iterateMapKeyVal---.+map
out: iter::eachKey::0::1::2::3::4::5::6::7::8::9
out: iter::eachVal::0::2::4::6::8::10::12::14::16::18
out: iter::eachDistinctKey::0::1::2::3::4::5::6::7::8::9
out: -----iterateMapKeyVal---.+unordered_map
out: iter::eachKey::.::.::.::.::.::.::.::.::.::.
out: iter::eachVal::.+
out: iter::eachDistinctKey::.::.::.::.::.::.::.::.::.::.
out: -----iterateMapKeyVal---.+multimap
out: iter::eachKey::0::0::0::0::0::0::0::0::0::0::1::1::1::1::1::1::1::1::1::2::2::2::2::2::2::2::2::3::3::3::3::3::3::3::4::4::4::4::4::4::5::5::5::5::5::6::6::6::6::7::7::7::8::8::9
out: iter::eachVal::10::9::8::7::6::5::4::3::2::1::9::8::7::6::5::4::3::2::1::8::7::6::5::4::3::2::1::7::6::5::4::3::2::1::6::5::4::3::2::1::5::4::3::2::1::4::3::2::1::3::2::1::2::1::1
out: iter::eachDistinctKey::0::1::2::3::4::5::6::7::8::9
out: -----iterateMapKeyVal---.+unordered_multimap
out: iter::eachKey::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.
out: iter::eachVal::.+
out: iter::eachDistinctKey::.::.::.::.::.::.::.::.::.::.
out: -----iterateValues4Key---.+multimap
out: iter::eachValForKey::10::9::8::7::6::5::4::3::2::1
out: -----iterateValues4Key---.+unordered_multimap
out: iter::eachValForKey::.+
out: snapshot-0-1-2-3-4-5-6-7-8-9
out: snapshot-22-44
END
TEST "Lumiera Iterator Tools" IterTools_test 20 <<END
out: ::20::19::18::17::16::15::14::13::12::11::10::9::8::7::6::5::4::3::2::1
out: ::20::18::16::14::12::10::8::6::4::2
out: ::19::17::15::13::11::9::7::5::3::1
out: ::17::16::15::14::13::12::11::10::9::8::7::6::5::4::3::2::1
out: ::16::14::12::10::8::6::4::2
out: ::17::15::13::11::9::7::5::3::1
out: ::10::9::8::7::6::5::4::3::2::1
out: ::-10::-9::-8::-7::-6::-5::-4::-3::-2::-1
out: ::12::11::10::9::8::7::6::5::4::3
END
TEST "Iterable data source" IterSource_test 13 <<END
out: ::13::12::11::10::9::8::7::6::5::4::3::2::1
out: ::.............::............::...........::..........::.........::........::.......::......::.....::....::...::..::.$
out-lit: ::0:00:03.250::0:00:03.000::0:00:02.750::0:00:02.500::0:00:02.250::0:00:02.000::0:00:01.750::0:00:01.500::0:00:01.250::0:00:01.000::0:00:00.750::0:00:00.500::0:00:00.250
out: (::X...........){13}$
out: (::0:0.:..\..00){13}$
out: (::X...........){13}$
out: (::0:0.:..\..00){13}$
out: distinct_keys::0::1::2::3::4::5::6::7::8::9::10::11::12
out: values_4_key(::[0-9]{1,2})+
out: distinct_keys(::[0-9]{1,2}){13}
out: values_4_key(::[0-9]{1,2})+
END
TEST "Iterator monad variations" IterExplorer_test <<END
out-lit: 1-2-3-4-5-6-7-8
out-lit: 0-1-2-3-4-0-1-2-3-4-5-6-0-1-2-3-4-5-6-7-8
out-lit: 0-1-2-3-4-5-6-7-8
out-lit: 0-1-2-3-4-5-6-7-8
END
TEST "Stack-like iterator" IterStack_test <<END
return: 0
END
TEST "Queue-like iterator" IterQueue_test <<END
return: 0
END
TEST "Iterable type detection" IterableClassification_test <<END
out: can_STL_ForEach<LongVector> : Yes
out: can_STL_ForEach<TimeSet> : Yes
out: can_STL_ForEach<CharMap> : Yes
out: can_STL_ForEach<BoolList> : Yes
out: can_STL_ForEach<ShortDeque> : Yes
out: can_STL_ForEach<CustomCont> : Yes
out: can_STL_ForEach<ForwardRangeIter> : No
out: can_STL_ForEach<TransformedForwardIter> : No
out: can_STL_ForEach<FilteredForwardIter> : No
out: can_STL_ForEach<CustomForwardIter> : No
out: can_IterForEach<LongVector> : No
out: can_IterForEach<TimeSet> : No
out: can_IterForEach<CharMap> : No
out: can_IterForEach<BoolList> : No
out: can_IterForEach<ShortDeque> : No
out: can_IterForEach<CustomCont> : No
out: can_IterForEach<ForwardRangeIter> : Yes
out: can_IterForEach<TransformedForwardIter> : Yes
out: can_IterForEach<FilteredForwardIter> : Yes
out: can_IterForEach<CustomForwardIter> : Yes
END
TEST "Linked iterable elements" LinkedElements_test <<END
return: 0
END
TEST "Polymorphic value objects" PolymorphicValue_test <<END
return: 0
END
TEST "Variadic template diagnostics" TestHelperVariadic_test <<END
out-lit: --no-arg--
out-lit: :.
out-lit: --value--
out: .+#1.+ Type: d VAL Address. 0x.+
out-lit: :.
out-lit: --reference--
out: .+#1.+ Type: d REF Address. 0x.+
out-lit: :.
out-lit: --move--
out: .+#1.+ Type: d MOV Address. 0x.+
out-lit: :.
out-lit: --two values--
out: .+#2.+ Type: A4_c REF Address. 0x.+
out: .+#1.+ Type: l MOV Address. 0x.+
out-lit: :.
out-lit: --matched--
out: .+#3.+ Type: d REF Address. 0x.+
out: .+#2.+ Type: d REF Address. 0x.+
out: .+#1.+ Type: d MOV Address. 0x.+
out-lit: :.
out-lit: --baseclass--
out: .+#1.+ Type: .+lib.test.test.+Interface. REF Address. 0x.+
out-lit: :.
END
TEST "TypeList_test" TypeList_test <<END
out: - 1 -- 2 -- 3 -- 5 -- 8 -- 13 -- The End -
out: ..Size of = 1
return: 0
END
TEST "simple typelist utils" TypeListUtil_test <<END
return: 0
END
TEST "TypeListGenerator_test" TypeListGenerator_test <<END
out: ctor DoIt<Block<13> >
out: ctor DoIt<Block< 8> >
out: ctor DoIt<Block< 5> >
out: ctor DoIt<Block< 3> >
out: ctor DoIt<Block< 2> >
out: ctor DoIt<Block< 1> >
out: devouring__Block< 2>__
out: devouring__Block< 5>__
out: devouring__Block<13>__
out: gulp!
out: dtor DoIt<Block< 1> >
out: dtor DoIt<Block< 2> >
out: dtor DoIt<Block< 3> >
out: dtor DoIt<Block< 5> >
out: dtor DoIt<Block< 8> >
out: dtor DoIt<Block<13> >
return: 0
END
TEST "typelist manipulation" TypeListManip_test <<END
out-lit: List1 :-<1>-<2>-<3>-
out-lit: List2 :-<5>-<6>-<7>-
out-lit: Added2 :-<3>-<4>-<5>-
out-lit: FilterEven :-<2>-<6>-
out-lit: Append1 :-
out-lit: Append2 :-<11>-<22>-
out-lit: Append3 :-<111>-
out-lit: Append4 :-<222>-
out-lit: Append5 :-<1>-<2>-<3>-
out-lit: Append6 :-<5>-<6>-<7>-
out-lit: Append7 :-<111>-<5>-<6>-<7>-
out-lit: Append8 :-<1>-<2>-<3>-<222>-
out-lit: Append9 :-<1>-<2>-<3>-<5>-<6>-<7>-
out-lit: Overl01 :-
out-lit: Overl02 :-
out-lit: Overl03 :-
out-lit: Overl04 :-<9>-<8>-<3>-
out-lit: Overl05 :-<1>-<9>-<8>-
out-lit: Overl06 :-<1>-<2>-<9>-
out-lit: Overl07 :-<1>-<2>-<3>-
out-lit: Overl08 :-<1>-<2>-<3>-
out-lit: Overl09 :-<1>-<2>-<3>-
out-lit: Overl10 :-<1>-<1>-<2>-
out-lit: Overl11 :-<1>-<2>-<3>-
out-lit: Overl12 :-<1>-<2>-<3>-
out-lit: Overl13 :-<1>-<2>-<3>-
out-lit: Front1 :-
out-lit: Front2 :-<1>-
out-lit: Front3 :-<1>-<2>-<3>-
out-lit: Back1 :-<2>-<3>-
out-lit: Back2 :-<3>-
out-lit: Back3 :-
out-lit: Front4 :-<1>-
out-lit: Back4 :-<2>-<3>-
out-lit: Prefix :-<1>-<2>-
out-lit: ElmL :-<3>-
out-lit: NPrefix :-
out-lit: Types<Elm1> :-<3>-
out-lit: NList :-
out-lit: Types<Nil> :-
out-lit: LL :-<1>-<2>-<3>-<5>-<6>-<7>-
out-lit: List :-<1>-<2>-<3>-<5>-<6>-<7>-
out-lit: First :-<1>-
out-lit: Tail :-<2>-<3>-<5>-<6>-<7>-
out-lit: Prefix :-<1>-<2>-<3>-<5>-<6>-
out-lit: Last :-<7>-
out-lit: HeadEnd :-<1>-<7>-
out-lit: Prefix1 :
out-lit: +---<11>-<22>-+-
out-lit: Prefix2 :
out-lit: +---<101>-<1>-+
out-lit: +---<101>-<2>-+
out-lit: +---<101>-<3>-+-
out-lit: Prefix3 :
out-lit: +---<1>-+
out-lit: +---<2>-+
out-lit: +---<3>-+-
out-lit: Prefix4 :
out-lit: +---<111>-<1>-<2>-<3>-+
out-lit: +---<111>-<0>-+
out-lit: +---<111>-<5>-<6>-<7>-+-
out-lit: Prefix5 :
out-lit: +---<1>-<2>-<3>-<5>-+
out-lit: +---<1>-<2>-<3>-<6>-+
out-lit: +---<1>-<2>-<3>-<7>-+-
out-lit: Prefix6 :
out-lit: +---<1>-<2>-<3>-<1>-<2>-<3>-+
out-lit: +---<1>-<2>-<3>-<0>-+
out-lit: +---<1>-<2>-<3>-<5>-<6>-<7>-+-
out-lit: Dist1 :
out-lit: +---<11>-<1>-+
out-lit: +---<11>-<2>-+
out-lit: +---<11>-<3>-+-
out-lit: Dist2 :
out-lit: +---<11>-<0>-+
out-lit: +---<22>-<0>-+
out-lit: +---<33>-<0>-+-
out-lit: Dist3 :
out-lit: +---<11>-<1>-+
out-lit: +---<11>-<2>-+
out-lit: +---<11>-<3>-+
out-lit: +---<22>-<1>-+
out-lit: +---<22>-<2>-+
out-lit: +---<22>-<3>-+
out-lit: +---<33>-<1>-+
out-lit: +---<33>-<2>-+
out-lit: +---<33>-<3>-+-
out-lit: Dist4 :
out-lit: +---<11>-<1>-<2>-<3>-+
out-lit: +---<11>-<5>-<6>-<7>-+
out-lit: +---<22>-<1>-<2>-<3>-+
out-lit: +---<22>-<5>-<6>-<7>-+
out-lit: +---<33>-<1>-<2>-<3>-+
out-lit: +---<33>-<5>-<6>-<7>-+-
out-lit: Down :-<11>-<10>-<9>-<8>-<7>-<6>-<5>-<4>-<3>-<2>-<1>-<0>-
out-lit: Combi :
out-lit: +---<1>-<2>-<3>-<·>-+
out-lit: +---<1>-<2>-<2>-<·>-+
out-lit: +---<1>-<2>-<1>-<·>-+
out-lit: +---<1>-<2>-<0>-<·>-+
out-lit: +---<1>-<1>-<3>-<·>-+
out-lit: +---<1>-<1>-<2>-<·>-+
out-lit: +---<1>-<1>-<1>-<·>-+
out-lit: +---<1>-<1>-<0>-<·>-+
out-lit: +---<1>-<0>-<3>-<·>-+
out-lit: +---<1>-<0>-<2>-<·>-+
out-lit: +---<1>-<0>-<1>-<·>-+
out-lit: +---<1>-<0>-<0>-<·>-+
out-lit: +---<0>-<2>-<3>-<·>-+
out-lit: +---<0>-<2>-<2>-<·>-+
out-lit: +---<0>-<2>-<1>-<·>-+
out-lit: +---<0>-<2>-<0>-<·>-+
out-lit: +---<0>-<1>-<3>-<·>-+
out-lit: +---<0>-<1>-<2>-<·>-+
out-lit: +---<0>-<1>-<1>-<·>-+
out-lit: +---<0>-<1>-<0>-<·>-+
out-lit: +---<0>-<0>-<3>-<·>-+
out-lit: +---<0>-<0>-<2>-<·>-+
out-lit: +---<0>-<0>-<1>-<·>-+
out-lit: +---<0>-<0>-<0>-<·>-+-
out-lit: OnOff :
out-lit: +---<1>-<2>-<3>-<·>-+
out-lit: +---<1>-<2>-<·>-+
out-lit: +---<1>-<3>-<·>-+
out-lit: +---<1>-<·>-+
out-lit: +---<2>-<3>-<·>-+
out-lit: +---<2>-<·>-+
out-lit: +---<3>-<·>-+
out-lit: +---<·>-+-
return: 0
END
TEST "type sequence manipulation" TypeSeqManipl_test <<END
out: LL :-<1>-<2>-<3>-<7>-<8>-<9>-
out: Seq :-<1>-<2>-<3>-<7>-<8>-<9>-
out: SeqList :-<1>-<2>-<3>-<7>-<8>-<9>-
out: NulS :-
out: Prepend1 :-<5>-<1>-<2>-<3>-
out: Prepend2 :-<·>-<1>-<2>-<3>-
out: Prepend3 :-<5>-
out: Prepend4 :-
out: Seq_0 :-<7>-<8>-<9>-<1>-<2>-<3>-
out: Seq_1 :-<8>-<9>-<1>-<2>-<3>-
out: Seq_2 :-<9>-<1>-<2>-<3>-
out: Seq_3 :-<1>-<2>-<3>-
out: Seq_4 :-<2>-<3>-
out: Seq_5 :-<3>-
out: Seq_6 :-
out: Head_0 :-<7>-
out: Head_1 :-<8>-
out: Head_2 :-<9>-
out: Head_3 :-<1>-
out: Head_4 :-<2>-
out: Head_5 :-<3>-
out: Head_6 :-
out: Seq :-<1>-<2>-<3>-<7>-<8>-<9>-
out: List :-<1>-<2>-<3>-<7>-<8>-<9>-
out: First :-<1>-
out: Tail :-<2>-<3>-<7>-<8>-<9>-
out: Prefix :-<1>-<2>-<3>-<7>-<8>-
out: Last :-<9>-
out: HeadEnd :-<1>-<9>-
return: 0
END
TEST "TypeTuple_test" TypeTuple_test <<END
out-lit: L1 :-<1>-<3>-<5>-
out-lit: L2 :-<2>-<4>-
out-lit: L3 :-<7>-
out-lit: Tup1 :TYPES-<>-<1>-<3>-<5>-
out-lit: Tup1() :...Tuple((1),(3),(5))
out-lit: tup1x :...Tuple({11},(3),(5))
out-lit: Type1 :-<1>-<3>-<5>-
out-lit: T_L1 :TYPES-[]-<1>-<3>-<5>-
out-lit: T1 :TYPES-<>-<1>-<3>-<5>-
out-lit: tup1 :...Tuple({8},(3),(5))
out-lit: tup2 :...Tuple({9},(3),(5))
out-lit: Prepend :TYPES-[]-<i>-<1>-<3>-<5>-
out-lit: prepend :...Tuple(22,{9},(3),(5))
out-lit: :
out-lit: : ---Sub-Tuple-Types----
out-lit: T_L2 :TYPES-[]-<2>-<4>-<1>-<3>-<5>-
out-lit: Head :-<2>-
out-lit: Tail :-<4>-<1>-<3>-<5>-
out-lit: T2 :TYPES-<>-<2>-<4>-<1>-<3>-<5>-
out-lit: Head2 :-<2>-
out-lit: Tail2 :-<4>-<1>-<3>-<5>-
out-lit: T2::Type :-<2>-<4>-<1>-<3>-<5>-
out-lit: T2::TailType :-<4>-<1>-<3>-<5>-
out-lit: T2::TupleType :TYPES-<>-<2>-<4>-<1>-<3>-<5>-
out-lit: T2::ThisType :TYPES-<>-<2>-<4>-<1>-<3>-<5>-
out-lit: T2::Tail :TYPES-<>-<4>-<1>-<3>-<5>-
out-lit: T2::ArgList :-<2>-<4>-<1>-<3>-<5>-
out-lit: T_L2::Type :-<2>-<4>-<1>-<3>-<5>-
out-lit: T_L2::TailType :-<4>-<1>-<3>-<5>-
out-lit: T_L2::TupleType :TYPES-<>-<2>-<4>-<1>-<3>-<5>-
out-lit: T_L2::ThisType :TYPES-[]-<2>-<4>-<1>-<3>-<5>-
out-lit: T_L2::Tail :TYPES-[]-<4>-<1>-<3>-<5>-
out-lit: T_L2::ArgList :-<2>-<4>-<1>-<3>-<5>-
out-lit: NulT::Type :-
out-lit: NulT::TailType :-
out-lit: NulT::TupleType :TYPES-<>-
out-lit: NulT::ThisType :TYPES-<>-
out-lit: NulT::Tail :TYPES-<>-
out-lit: NulT::ArgList :-
out-lit: NulL::Type :-
out-lit: NulL::TailType :-
out-lit: NulL::TupleType :TYPES-<>-
out-lit: NulL::ThisType :TYPES-[]-
out-lit: NulL::Tail :TYPES-[]-
out-lit: NulL::ArgList :-
out-lit: :
out-lit: : ---Shifted-Tuple---
out-lit: Ty_0 :-<2>-<4>-<7>-
out-lit: Ty_1 :-<4>-<7>-
out-lit: Ty_2 :-<7>-
out-lit: Ty_3 :-
out-lit: Ty_4 :-
out-lit: T_0 :TYPES-[]-<2>-<4>-<7>-
out-lit: T_1 :TYPES-[]-<4>-<7>-
out-lit: T_2 :TYPES-[]-<7>-
out-lit: T_3 :TYPES-[]-
out-lit: T_4 :TYPES-[]-
out-lit: tu3 :...Tuple((2),(4),(7))
out-lit: tu3_0 :...Tuple((2),(4),(7))
out-lit: tu3_1 :...Tuple((4),(7))
out-lit: tu3_2 :...Tuple((7))
out-lit: tu3_3 :...Tuple()
out-lit: tu3_4 :...Tuple()
out-lit: :
out-lit: : ---creating-Tuples---
out-lit: tup1 :...Tuple((1),(3),(5))
out-lit: tup11 :...Tuple({11},(3),(5))
out-lit: tup12 :...Tuple((1),{33},(5))
out-lit: tup13 :...Tuple({11},{33},(5))
out-lit: Tup2 :TYPES-<>-<i>-<i>-<11>-
out-lit: tup2 :...Tuple(41,42,{43})
out-lit: Tup22 :TYPES-<>-<i>-<11>-
out-lit: tup22 :...Tuple(42,{43})
out-lit: Tup222 :TYPES-<>-<11>-
out-lit: tup222 :...Tuple({43})
out-lit: T0T :TYPES-<>-
out-lit: T0L :TYPES-[]-
out-lit: nullT :...Tuple()
out-lit: nullL :...Tuple()
out-lit: nulTcpy :...Tuple()
out-lit: nulTref :...Tuple()
out-lit: :
out-lit: : ---build-from-sub-Tuples---
out-lit: T1357L :TYPES-[]-<1>-<3>-<5>-<7>-
out-lit: T1357T :TYPES-<>-<1>-<3>-<5>-<7>-
out-lit: T135L :TYPES-[]-<1>-<3>-<5>-
out-lit: T57T :TYPES-<>-<5>-<7>-
out-lit: T35T :TYPES-<>-<3>-<5>-
out-lit: sub135 :...Tuple((1),(3),(5))
out-lit: b_135 :...Tuple((1),(3),(5),(7))
out-lit: b_135 :...Tuple((1),(3),(5),(7))
out-lit: b_135 :...Tuple((1),(3),(5),(7))
out-lit: b_135 :...Tuple((1),(3),(5),(7))
out-lit: sub57 :...Tuple((5),(7))
out-lit: b_57 :...Tuple((1),(3),(5),(7))
out-lit: sub35 :...Tuple({8},{8})
out-lit: b_35 :...Tuple((1),{8},{8},(7))
out-lit: b_35 :...Tuple((1),(3),(5),(7))
out-lit: b_35 :...Tuple((1),(3),(5),(7))
out-lit: sub78 :...Tuple({77},{88})
out-lit: b_78 :...Tuple((1),(3),(5),{77})
out-lit: b_nul :...Tuple((1),(3),(5),(7))
out-lit: b_nul :...Tuple((1),(3),(5),(7))
out-lit: b_nul2 :...Tuple()
out-lit: b_nul2 :...Tuple()
out-lit: :
out-lit: : ---copy-operations---
out-lit: tup1 :...Tuple({11},{33},(5))
out-lit: tup11 :...Tuple({11},{33},{44})
out-lit: tup1 :...Tuple({11},{33},{44})
out-lit: tupL :...Tuple({11},{33},{44})
out-lit: tup1L :...Tuple({11},{33},{44})
out-lit: :
out-lit: : ---value-access---
out-lit: TupX :TYPES-[]-<2>-<4>-<2>-<4>-
out-lit: tupX :...Tuple((2),(4),(2),(4))
out-lit: tu2 :...Tuple((2),(4))
out-lit: tu2 :...Tuple({5},{5})
out-lit: tupX :...Tuple((2),(4),{5},{5})
out-lit: T4 :TYPES-<>-<2>-<4>-
out-lit: t4 :...Tuple({5},{5})
out-lit: TupX::Type :-<2>-<4>-<2>-<4>-
out-lit: TupX::TailType :-<4>-<2>-<4>-
out-lit: TupX::ThisType :TYPES-[]-<2>-<4>-<2>-<4>-
out-lit: TupX::TupleType :TYPES-<>-<2>-<4>-<2>-<4>-
out-lit: TupT::Type :-<2>-<4>-<2>-<4>-
out-lit: TupT::TailType :-<4>-<2>-<4>-
out-lit: TupT::ThisType :TYPES-<>-<2>-<4>-<2>-<4>-
out-lit: TupT::TupleType :TYPES-<>-<2>-<4>-<2>-<4>-
out-lit: tupXcopy :...Tuple((2),(4),{5},{5})
out-lit: tupXcast :...Tuple((2),(4),{5},{5})
return: 0
END
TEST "Typelist combinations generator" GeneratorCombinations_test <<END
out-lit: Cartesian :
out-lit: +---<1>-<2>-+
out-lit: +---<1>-<4>-+
out-lit: +---<1>-<6>-+
out-lit: +---<3>-<2>-+
out-lit: +---<3>-<4>-+
out-lit: +---<3>-<6>-+
out-lit: +---<5>-<2>-+
out-lit: +---<5>-<4>-+
out-lit: +---<5>-<6>-+-
out-lit: All-Test-Combinations--<12>-<14>-<16>-<32>-<34>-<36>-<52>-<54>-<56>-|
return: 0
END
TEST "Type-based contexts" TypedCounter_test <<END
return: 0
END
TEST "for-each operations" UtilForeach_test 10 <<END
out: ---:check_foreach_plain
out: :10:9:8:7:6:5:4:3:2:1
out: :10$
out: ---:check_foreach_plain
out: :10:9:8:7:6:5:4:3:2:1
out: :10$
out: ---:check_foreach_bind
out: :20:19:18:17:16:15:14:13:12:11
out: :20$
out: :20:18:16:14:12:10:8:6:4:2
out: :20$
out: ---:check_foreach_bind
out: :20:19:18:17:16:15:14:13:12:11
out: :20$
out: :20:18:16:14:12:10:8:6:4:2
out: :20$
out: ---:check_foreach_bind_const
out: :20:19:18:17:16:15:14:13:12:11
out: :20$
out: :20:18:16:14:12:10:8:6:4:2
out: :20$
out: :20:38:54:68:80:90:98:104:108:110
out: :130:148:164:178:190:200:208:214:218:220
out: :240
out: ---:check_foreach_memFun
out: :10:19:27:34:40:45:49:52:54:55
out: :10$
out: :10:19:27:34:40:45:49:52:54:55
out: :65:74:82:89:95:100:104:107:109:110
out: :120
out: sum=120
out: ---:check_foreach_memFun
out: :10:19:27:34:40:45:49:52:54:55
out: :10$
out: :10:19:27:34:40:45:49:52:54:55
out: :65:74:82:89:95:100:104:107:109:110
out: :120
out: sum=120
out: ---:check_foreach_lambda
out: ---:check_existence_quant
out: ---:assign_to_input
out: :20:19:18:17:16:15:14:13:12:11
out: :30:29:28:27:26:25:24:23:22:21
out: :40:39:38:37:36:35:34:33:32:31
out: :50:49:48:47:46:45:44:43:42:41
out: :60
out: :70
out: :80:59:58:57:56:55:54:53:52:51
out: :90:69:68:67:66:65:64:63:62:61
out: :100$
out: ---:assign_to_var
out: :90:149:207:264:320:375:429:482:534:585
out: :675:734:792:849:905:960:1014:1067:1119:1170
out: :1260:1319:1377:1434:1490:1545:1599:1652:1704:1755
out: sum=1755
out: :90:149:207:264:320:375:429:482:534:585
out: :675:734:792:849:905:960:1014:1067:1119:1170
out: :1260:1319:1377:1434:1490:1545:1599:1652:1704:1755
out: sum=1755
out: :90
out: :180
out: :270
out: sum=270
out: ---:assign_to_input
out: :20:19:18:17:16:15:14:13:12:11
out: :30:29:28:27:26:25:24:23:22:21
out: :40:39:38:37:36:35:34:33:32:31
out: :50:49:48:47:46:45:44:43:42:41
out: :60
out: :70
out: :80:59:58:57:56:55:54:53:52:51
out: :90:69:68:67:66:65:64:63:62:61
out: :100$
out: ---:assign_to_var
out: :90:149:207:264:320:375:429:482:534:585
out: :675:734:792:849:905:960:1014:1067:1119:1170
out: :1260:1319:1377:1434:1490:1545:1599:1652:1704:1755
out: sum=1755
out: :90:149:207:264:320:375:429:482:534:585
out: :675:734:792:849:905:960:1014:1067:1119:1170
out: :1260:1319:1377:1434:1490:1545:1599:1652:1704:1755
out: sum=1755
out: :90
out: :180
out: :270
out: sum=270
out: ---:wrapped_container_passing
out: :10:9:8:7:6:5:4:3:2:1
out: :-20:-21:-22:-23:-24:-25:-26:-27:-28:-29
out: ---:check_invoke_on_each
out: :0:1:2:3:4:5
out: :0$
out: :0:1$
out: :0:1:2:3:4:5
out: :0$
out: :0:1$
END