TESTING "Component Test Suite: common and basic components" ./test-lib --group=common



TEST "Hello test world" HelloWorld_test 3 <<END
out-lit: This is how the world ends...
return: 0
END


TEST "Allocation Cluster" AllocationCluster_test <<END
return: 0
END


TEST "basic application state" Appconfig_test <<END
return: 0
END


TEST "Advice collaboration (basics)" AdviceBasics_test <<END
return: 0
END


PLANNED "Advice constellations" AdviceSituations_test <<END
return: 0
END


PLANNED "Advice variants and configurations" AdviceConfiguration_test <<END
return: 0
END


PLANNED "Advice multiplicity and concurrency" AdviceMultiplicity_test <<END
return: 0
END


TEST "Advice binding patterns" AdviceBindingPattern_test <<END
out-lit: 	--->Binding[]
out-lit: aSymbol	--->Binding[aSymbol/0()]
out-lit: a.compound_Symbol-with-various.parts	--->Binding[a.compound_Symbol-with-various.parts/0()]
out-lit: trailing Garbage allowed. ☢☢ eat ☠☠☠ atomic ☠☠☠ waste ☢☢	--->Binding[Garbage/0(), allowed/0(), trailing/0()]
out-lit: a, list , of ,symbols.	--->Binding[a/0(), list/0(), of/0(), symbols/0()]
out-lit: nullary().	--->Binding[nullary/0()]
out-lit: nullary( )	--->Binding[nullary/0()]
out-lit: nullary  .	--->Binding[nullary/0()]
out-lit: predicate( with-argument )	--->Binding[predicate/1(with-argument)]
out-lit: Binding[advice.type.n3lib6advice4test12_GLOBAL__N_111DummyAdviceE/0(), one/0(), three/1(four), two/0()]
out-lit: b0==Binding[]
out-lit: b1==Binding[cat1/0(), cat2/0()]
out-lit: b2==Binding[cat1/0(), cat2/0()]
out-lit: b2==Binding[advice.type.n7lumiera4TimeE/0(), cat1/0(), cat2/0(), cat3/1(zzz)]
return: 0
END


TEST "Advice index implementation" AdviceIndex_test <<END
return: 0
END


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 "CmdlineWrapper_test" CmdlineWrapper_test <<END
out: wrapping cmdline:\.\.\.
out: -->
out: wrapping cmdline:
out: 	 \.\.\.
out: -->
out: wrapping cmdline:spam...
out: 0\|spam\|
out: -->spam
out: wrapping cmdline:
out: spam...
out: 0\|spam\|
out: -->spam
out: wrapping cmdline:eat more spam...
out: 0\|eat\|
out: 1\|more\|
out: 2\|spam\|
out: -->eat more spam
out: wrapping cmdline: oo _O\(\)O_  ä \+ €...
out: 0\|oo\|
out: 1\|_O\(\)O_\|
out: 2\|ä\|
out: 3\|\+\|
out: 4\|€\|
out: -->oo _O\(\)O_ ä \+ €
out: wrapping cmdline:Ω	ooΩ	oΩo	Ωoo...
out: 0\|Ω\|
out: 1\|ooΩ\|
out: 2\|oΩo\|
out: 3\|Ωoo\|
out: -->Ω ooΩ oΩo Ωoo
out: Standard Cmdlineformat:one  two
END


TEST "ConfigFlags_test" ConfigFlags_test <<END
out: Conf0	:-
out: Conf1	:-<1>-
out: Conf2	:-<2>-
out: Conf3	:-<3>-
out: Conf4	:-<2>-<4>-
out: AllFlags	:-<1>-<2>-<3>-<4>-
out: __________________________$
out: __________________________ check_flags\(\)
out: Flags1	:-<2>-<4>-
out: Flags2	:-<2>-<4>-
out: SimpleConfig_defined_by_Typelist	:-<1>-
out: AnotherConfig_defined_by_Typelist	:-<1>-<2>-<3>-<4>-
out: __________________________$
out: __________________________ check_instantiation\(\)
out: defined Conf0\? ---> 0
out: defined Conf1\? ---> 1
out: defined Conf2\? ---> 1
out: defined Conf3\? ---> 1
out: defined Conf4\? ---> 1
out: defined Trash\? ---> 0
out: __________________________$
out: __________________________ check_filter\(\)
out: SomeFlagsets	:
out: 	\+---<1>-<3>-\+
out: 	\+---<2>-<4>-\+-
out: Configs_defined_by_Flagsets	:
out: 	\+-Conf-\[-<1>-<3>-\]
out: 	\+-Conf-\[-<2>-<4>-\]-
out: Filter_possible_Configs	:
out: 	\+-Conf-\[-<2>-<4>-\]-
out: AllFlagCombinations	:
out: 	\+---<1>-<2>-<3>-<4>-<·>-\+
out: 	\+---<1>-<2>-<3>-<·>-\+
out: 	\+---<1>-<2>-<4>-<·>-\+
out: 	\+---<1>-<2>-<·>-\+
out: 	\+---<1>-<3>-<4>-<·>-\+
out: 	\+---<1>-<3>-<·>-\+
out: 	\+---<1>-<4>-<·>-\+
out: 	\+---<1>-<·>-\+
out: 	\+---<2>-<3>-<4>-<·>-\+
out: 	\+---<2>-<3>-<·>-\+
out: 	\+---<2>-<4>-<·>-\+
out: 	\+---<2>-<·>-\+
out: 	\+---<3>-<4>-<·>-\+
out: 	\+---<3>-<·>-\+
out: 	\+---<4>-<·>-\+
out: 	\+---<·>-\+-
out: ListAllConfigs	:
out: 	\+-Conf-\[-<1>-<2>-<3>-<4>-\]
out: 	\+-Conf-\[-<1>-<2>-<3>-\]
out: 	\+-Conf-\[-<1>-<2>-<4>-\]
out: 	\+-Conf-\[-<1>-<2>-\]
out: 	\+-Conf-\[-<1>-<3>-<4>-\]
out: 	\+-Conf-\[-<1>-<3>-\]
out: 	\+-Conf-\[-<1>-<4>-\]
out: 	\+-Conf-\[-<1>-\]
out: 	\+-Conf-\[-<2>-<3>-<4>-\]
out: 	\+-Conf-\[-<2>-<3>-\]
out: 	\+-Conf-\[-<2>-<4>-\]
out: 	\+-Conf-\[-<2>-\]
out: 	\+-Conf-\[-<3>-<4>-\]
out: 	\+-Conf-\[-<3>-\]
out: 	\+-Conf-\[-<4>-\]
out: 	\+-Conf-\[-\]-
out: Filter_all_possible_Configs	:
out: 	\+-Conf-\[-<1>-\]
out: 	\+-Conf-\[-<2>-<3>-\]
out: 	\+-Conf-\[-<2>-<4>-\]
out: 	\+-Conf-\[-<2>-\]
out: 	\+-Conf-\[-<3>-\]-
out: __________________________$
out: __________________________ check_FlagInfo\(\)
out: Flags1	:-<1>-<3>-
out: max bit    : 3
out: binary code: 10
out: SomeConfigs	:
out: 	\+-Conf-\[-<1>-<3>-\]
out: 	\+-Conf-\[-<2>-<4>-\]-
out: max bit in \[SomeConfigs\] : 4
out: TestVisitor application:
out: visit\(code=10\) -->
out: 	\+-Conf-\[-<1>-<3>-\]-
out: visit\(code=20\) -->
out: 	\+-Conf-\[-<2>-<4>-\]-
out: __________________________$
out: __________________________ check_ConfigSelector\(\)
out: Possible_Configs	:
out: 	\+-Conf-\[-<1>-\]
out: 	\+-Conf-\[-<2>-<3>-\]
out: 	\+-Conf-\[-<2>-<4>-\]
out: 	\+-Conf-\[-<2>-\]
out: 	\+-Conf-\[-<3>-\]-
out:  Flag-code = 2 ConfigSelector\(\) ---> 1010
out:  Flag-code = 12 ConfigSelector\(\) ---> 1023
out:  Flag-code = 20 ConfigSelector\(\) ---> 1024
out:  Flag-code = 4 ConfigSelector\(\) ---> 1020
out:  Flag-code = 8 ConfigSelector\(\) ---> 1030
out: LUMIERA_ERROR_INVALID:invalid input or parameters \(ConfigSelector: No preconfigured factory for config-bits=10111\)\.
return: 0
END


TEST "CustomSharedPtr_test" CustomSharedPtr_test <<END
return: 0
END


TEST "Deleter function collection" DelStash_test <<END
return: 0
END


TEST "A Digxel (numeric component)" Digxel_test <<END
out-lit: empty____## +0.0 ##
out-lit: value____##-88.8 ##
out: timings\(\w+\)....*ns
return: 0
END


TEST "Digxel standard configurations" DigxelConfigurations_test <<END
out: .+Digxel.+Formatter.+--empty--  0--\(val=123\)--123\|
out: .+Digxel.+Formatter.+--empty--00.000--\(val=123.457\)--123.457
out: .+Digxel.+SexaFormatter.+--empty--00--\(val=42\)--42
out: .+Digxel.+SexaFormatter.+--empty--00--\(val=-5\)---5
out: .+Digxel.+HexaFormatter.+--empty--00--\(val=12\)--0C
out: .+Digxel.+HexaFormatter.+--empty--00--\(val=111\)--6F
out: .+Digxel.+CountFormatter.+--empty--0000--\(val=-1234567890\)---1234567890
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 "ExceptionError_test" ExceptionError_test <<END
out: caught: LUMIERA_ERROR_LIFE_AND_UNIVERSE:and everything\? \(don't panic\)...the answer is: 42
out: caught lumiera::Error: LUMIERA_ERROR_DERIVED:convoluted exception
out: caught error::Logic: LUMIERA_ERROR_FATAL:floundered \(test-2\).
out: caught error::Invalid: LUMIERA_ERROR_INVALID:invalid input or parameters \(test-3\).
out: caught lumiera::Error: LUMIERA_ERROR_EXTERNAL:failure in external service \(test-4\).
out: caught std::runtime_error: test-5
out: caught std::exception. \(unspecific\)
out: intermediate handler caught: LUMIERA_ERROR_EXTERNAL:failure in external service \(test-7\).....will rethrow as error::State
out: caught lumiera::Error: LUMIERA_ERROR_STATE:unforeseen state -- caused by: LUMIERA_ERROR_EXTERNAL:failure in external service \(test-7\).
out: intermediate handler caught: LUMIERA_ERROR_EXTERNAL:failure in external service \(test-8\).....will rethrow as error::State
out: 2nd intermediate handler caught: LUMIERA_ERROR_STATE:unforeseen state -- caused by: LUMIERA_ERROR_EXTERNAL:failure in external service \(test-8\).....will rethrow as error::Config
out: caught lumiera::Error: LUMIERA_ERROR_CONFIG:misconfiguration -- caused by: LUMIERA_ERROR_EXTERNAL:failure in external service \(test-8\)\.
out: caught lumiera::Error: LUMIERA_ERROR_LIFE_AND_UNIVERSE:and everything\? \(what is the answer\?\)\.
out: caught error::Logic: LUMIERA_ERROR_LOGIC:internal logic broken \(the big bang\). -- caused by: LUMIERA_ERROR_LIFE_AND_UNIVERSE:and everything\? \(what is the answer\?\)\.
END


TEST "Factory_test" Factory_test 5  <<END
out: ctor TargetObj\(5\) successful
out: now the smart-ptr has refcount=3
out: .....TargetObj\(5\): data="\*\*\*\*\*", array\[5\]=\{0,1,2,3,4,\}
out: dtor ~TargetObj\(5\) successful
END


TEST "Factory_special_test" Factory_special_test 5  <<END
out: checkPlacement--------
out: ctor TargetObj\(5\) successful
out: created 3 shared_ptrs to Object placed in static buffer.
out: .....TargetObj\(5\): data="\*\*\*\*\*", array\[5\]=\{0,1,2,3,4,\}
out: dtor ~TargetObj\(5\) successful
out: ctor TargetObj\(6\) successful
out: created 4 shared_ptrs to Object placed in static buffer.
out: dtor ~TargetObj\(6\) successful
out: checkPrivate--------
out: ctor TargetObj\(5\) successful
out: created 3 shared_ptrs to paranoid Object.
out: .....TargetObj\(5\): data="\*\*\*\*\*", array\[5\]=\{0,1,2,3,4,\}
out: dtor ~TargetObj\(5\) successful
out: checkMalloc--------
out: ctor TargetObj\(7\) successful
out: created auto_ptr to malloc-ed Object.
out: .....TargetObj\(7\): data="\*\*\*\*\*\*\*", array\[7\]=\{0,1,2,3,4,5,6,\}
out: dtor ~TargetObj\(7\) successful
out: checkPImpl--------
out: ctor TargetObj\(12\) successful
out: created auto_ptr to Interface Object.
out: .....ImplObj::funky\(\) called
out: .....TargetObj\(12\): data="\*\*\*\*\*\*\*\*\*\*\*\*", array\[12\]=\{0,1,2,3,4,5,6,7,8,9,10,11,\}
out: dtor ~TargetObj\(12\) successful
END


TEST "formatting/diagnostics helpers" FormatHelper_test <<END
out: Displaying some types....
out: «..util.test.Reticent.»
out: <no comment>
out: ^hey Joe!
out: ^he says: hey Joe!
out: ^the truth: 0
out: ^just a number: 1.234.*e\+56
out: ^12345X
return: 0
END


TEST "functional closure" FunctionClosure_test <<END
out: List1	:-<1>-<2>-<3>-
out: List2	:-<5>-<6>-<7>-
out: Args	:-<5>-<9>-
out: NewArgs	:-<1>-<5>-<9>-
out: 	:$
out: 	: ---Apply---
out: tup0	:...Tuple\(\)
out: tup1	:...Tuple\(11\)
out: tup2	:...Tuple\(11,12\)
out: tup3	:...Tuple\(11,12,13\)
out: 	:$
out: 	: ---Bind----
return: 0
END


TEST "functional composition" FunctionComposition_test <<END
return: 0
END


TEST "function type erasure" FunctionErasure_test <<END
return: 0
END


TEST "HashIndexed_test" HashIndexed_test <<END
return: 0
END


TEST "LifeCycle_test" LifeCycle_test  <<END
return: 0
END


TEST "configurable Factory" MultiFact_test <<END
out: Impl-1
out: Impl-2
out: Impl-3
out: Impl-4
out: sizeof\( .+MultiFact.+Interface.+theID.+PassReference.+ \) =
return: 0
END


TEST "Factory argument handling" MultiFactArgument_test  <<END
out: sizeof\( .+MultiFact.+Num.+prodID.+BuildRefcountPtr.+ \) =
out: fabricate\(1, 2\)
out: fabricate\(2, 3\)
return: 0
END


TEST "NIL object singleton" NullValue_test  <<END
return: 0
END


TEST "inline type erasure" OpaqueHolder_test  <<END
out: 1
out: 3
out: 5
out: 7
out: sizeof\( .+ \) = .*[12468]{1,2}
return: 0
END


TEST "inline unchecked buffer" OpaqueUncheckedBuffer_test  <<END
out: DD<0>: 
out: DD<5>: \*\*\*\*\*
out: DD<9>: I'm fine\*
out: I'm special, what the f\*\* is going on here\?\*\*\*\*\*\*\*\*\*\*\*\*
return: 0
END


TEST "inline val/ref wrapper" ItemWrapper_test <<END
out: ItemWrapper: sizeof\( .+ItemWrapper.+ ) =
END


TEST "switchable reference" OptionalRef_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::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---.+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::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::9::8::7::6::5::4::3::2::1::10::9::1::2::3::4::5::6::7::8::8::5::6::4::3::2::1::7::6::5::4::3::2::1::7::5::4::3::2::1::6::4::3::2::1::5::3::1::2::4::3::1::2::2::1::1
out: iter::eachDistinctKey::0::1::2::3::4::5::6::7::8::9
out: -----iterateValues4Key---.+multimap
out: iter::eachValForKey::10::9::8::7::6::5::4::3::2::1
out: -----iterateValues4Key---.+unordered_multimap
out: iter::eachValForKey::9::8::7::6::5::4::3::2::1::10
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: (::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::1::2::3::4::5::6::7::8::9::10::11::12
out: values_4_key(::[0-9]{1,2})+
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


PLANNED "RefArray_test" RefArray_test  <<END
return: 0
END


TEST "RemoveFromSet_test" RemoveFromSet_test <<END
out: removed  nothing  ---> \[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, \]
out: removed 0 ---> \[ 1, 2, 3, 4, 5, 6, 7, 8, 9, \]
out: removed 9 ---> \[ 0, 1, 2, 3, 4, 5, 6, 7, 8, \]
out: removed 5 ---> \[ 0, 1, 2, 3, 4, 6, 7, 8, 9, \]
out: removed 0   2   4   6   8   ---> \[ 1, 3, 5, 7, 9, \]
out: removed   1   3   5   7   9 ---> \[ 0, 2, 4, 6, 8, \]
out: removed 0 1 2 3 4 5 6 7 8 9 ---> \[ \]
out: removed 0 1 2 3 4 5 6 7 8   ---> \[ 9, \]
out: removed   1 2 3 4 5 6 7 8 9 ---> \[ 0, \]
out: removed 0 1 2 3 4   6 7 8 9 ---> \[ 5, \]
END


TEST "SanitizedIdentifier_test" SanitizedIdentifier_test <<END
out: 'Word' --> 'Word'
out: 'a Sentence' --> 'a_Sentence'
out: 'trailing Withespace
out:        	' --> 'trailing_Withespace'
out: 'with    a  	 lot
out:   of Whitespace' --> 'with_a_lot_of_Whitespace'
out: 'with"much \(punctuation\)\[\]!' --> 'withmuch_\(punctuation\)'
out: '§&Ω%€  leading garbage' --> 'leading_garbage'
out: 'mixed    Ω   garbage' --> 'mixed_garbage'
out: 'Bääääh!!' --> 'Bh'
out: '§&Ω%€' --> ''
END


TEST "SingletonSubclass_test" SingletonSubclass_test 13 <<END
out: using the Singleton should create TargetObj\(13\)...
out: ctor TargetObj\(13\) successful
out: calling a non-static method on the Singleton-Implementation
out: .....TargetObj\(13\): data="\*\*\*\*\*\*\*\*\*\*\*\*\*", array\[13\]=\{0,1,2,3,4,5,6,7,8,9,10,11,12,\}
out: dtor ~TargetObj\(13\) successful
END


TEST "SingletonTestMock_test" SingletonTestMock_test <<END
out: TestSingletonO::doIt\(\) call=1
out: TestSingletonO::doIt\(\) call=2
out: Mock_1::doIt\(\) call=1
out: Mock_1::doIt\(\) call=2
out: Mock_1::doIt\(\) call=3
out: Mock_1::doIt\(\) call=4
out: Mock_1::doIt\(\) call=5
out: Mock_2::doIt\(\) call=1
out: TestSingletonO::doIt\(\) call=3
END


TEST "ScopedHolder_test" ScopedHolder_test <<END
out: checking ScopedHolder<Dummy>...
out: checking ScopedPtrHolder<Dummy>...
END


TEST "ScopedHolderTransfer_test" ScopedHolderTransfer_test <<END
out: checking ScopedHolder<Dummy>...
out: \.$
out: \.\.install one element at index\[0\]
out: ^\.$
out: \.\.\*\*\* resize table to 16 elements
out: ^\.$
out: ^\.throw some exceptions...
out: checking ScopedPtrHolder<Dummy>...
out: ^\.$
out: ..install one element at index\[0\]
out: ^\.$
out: ..\*\*\* resize table to 16 elements
out: ^\.$
out: ^\.throw some exceptions...
END


TEST "ScopedPtrVect_test" ScopedPtrVect_test <<END
return: 0
END


TEST "Search path walking" SearchPathSplitter_test <<END
out-lit: ➢➢a
out-lit: ➢➢a
out-lit: ➢➢a
out-lit: ➢➢b
out-lit: ➢➢a
out-lit: ➢➢b
out-lit: ➢➢c
out: ➢➢.d.
out-lit: ➢➢ e f
out-lit: ➢➢/usr/bin
out-lit: ➢➢/usr/lib
END


TEST "Singleton_test" Singleton_test 23 <<END
out: testing TargetObj\(23\) as Singleton\(statically allocated\)
out: ctor TargetObj\(23\) successful
out: calling a non-static method on the Singleton instance
out: .....TargetObj\(23\): data="\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*", array\[23\]=\{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,\}
out: testing TargetObj\(24\) as Singleton\(heap allocated\)
out: ctor TargetObj\(24\) successful
out: calling a non-static method on the Singleton instance
out: .....TargetObj\(24\): data="\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*", array\[24\]=\{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,\}
out: dtor ~TargetObj\(23\) successful
out: dtor ~TargetObj\(24\) successful
END


PLANNED "StreamTypeBasics_test" StreamTypeBasics_test <<END
END


PLANNED "StreamTypeLifecycle_test" StreamTypeLifecycle_test <<END
END


TEST "Multithread Locking by Monitor" SyncLocking_test  <<END
return: 0
END


TEST "Multithread Locking whole class" SyncClasslock_test  <<END
return: 0
END


TEST "Wait/Notify on Object Monitor" SyncWaiting_test  <<END
return: 0
END


TEST "Create 20 Threads passing context" ThreadWrapper_test  <<END
return: 0
END


TEST "Waiting on Thread termination" ThreadWrapperJoin_test  <<END
return: 0
END


TEST "Starting and stopping subsystems" SubsystemRunner_test  <<END
out: -----singleSubsys_complete_cycle-----
out: -----singleSubsys_start_failure-----
out: -----singleSubsys_emegency_exit-----
out: -----dependentSubsys_complete_cycle-----
out: -----dependentSubsys_start_failure-----
return: 0
END


TEST "Lumiera Time Wrapper" LumiTime_test  <<END
out: .?.:..:..\....
return: 0
END


TEST "Times and time intervals" TimeValue_test  <<END
return: 0
END


PLANNED "Time Quantisation" TimeQuantisation_test  <<END
return: 0
END


TEST "Quantiser API basics" QuantiserBasics_test  <<END
return: 0
END


TEST "Defining Suppport for specific timecode formats" FormatSupport_test  <<END
return: 0
END


TEST "Time formats and timecodes" TimeFormats_test  <<END
out-lit: SMPTE="  5:42:23:13" time = 5:42:23.520
return: 0
END


TEST "Symbol_test" Symbol_test  <<END
out: one
out: sizeof.+lib.Literal.+  =   (4|8)
out: Ss
out: one\.\.\.\.one
return: 0
END


TEST "Hashtable with Symbol keys" SymbolHashtable_test  <<END
return: 0
END


TEST "Test support functions" TestHelper_test <<END
out: [a-z0-9]{80}$
out: Displaying types and sizes....
out: sizeof..theUniverse.+ =  42
out: sizeof..just a char.+ =   1
out: sizeof.+lib.+test.+test.+Murpf.+ =   1
out: sizeof.+lib.+test.+test.+Wrmrmpft.+ =   2
out: sizeof.+lib.+test.+test.+Wrmrmpft.+ =   3
out: sizeof.+lib.+test.+test.+Wrmrmpft.+Murpf.+ =   1
END


TEST "TestOption_test" TestOption_test <<END
out: Testing invocation with cmdline: ...
out: --> Testgroup=ALL
out: --> Test-ID  =--missing--
out: --> remaining=
out: Testing invocation with cmdline: --help...
out: --> Testgroup=ALL
out: --> Test-ID  =--missing--
out: --> remaining=
out: Testing invocation with cmdline: --group TestGroupID...
out: --> Testgroup=TestGroupID
out: --> Test-ID  =--missing--
out: --> remaining=
out: Testing invocation with cmdline:  SingleTestID...
out: --> Testgroup=ALL
out: --> Test-ID  =SingleTestID
out: --> remaining=SingleTestID
out: Testing invocation with cmdline:  SingleTestID --group TestGroupID...
out: --> Testgroup=TestGroupID
out: --> Test-ID  =SingleTestID
out: --> remaining=SingleTestID
out: Testing invocation with cmdline:  --group TestGroupID SingleTestID ...
out: --> Testgroup=TestGroupID
out: --> Test-ID  =SingleTestID
out: --> remaining=SingleTestID
out: Testing invocation with cmdline:  --group TestGroupID SingleTestID spam eggs...
out: --> Testgroup=TestGroupID
out: --> Test-ID  =SingleTestID
out: --> remaining=SingleTestID spam eggs
out: Testing invocation with cmdline: 		SingleTestID spam --group TestGroupID    	 --eggs...
out: --> Testgroup=TestGroupID
out: --> Test-ID  =SingleTestID
out: --> remaining=SingleTestID spam --eggs
END


TEST "TypeList_test" TypeList_test <<END
out: - 1 -- 2 -- 3 -- 5 -- 8 -- 13 -- The End -
out: ..Size of = 1
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" TypeListManipl_test <<END
out: List1	:-<1>-<2>-<3>-
out: List2	:-<5>-<6>-<7>-
out: Added2	:-<3>-<4>-<5>-
out: FilterEven	:-<2>-<6>-
out: Append1	:-
out: Append2	:-<11>-<22>-
out: Append3	:-<111>-
out: Append4	:-<222>-
out: Append5	:-<1>-<2>-<3>-
out: Append6	:-<5>-<6>-<7>-
out: Append7	:-<111>-<5>-<6>-<7>-
out: Append8	:-<1>-<2>-<3>-<222>-
out: Append9	:-<1>-<2>-<3>-<5>-<6>-<7>-
out: Overl01	:-
out: Overl02	:-
out: Overl03	:-
out: Overl04	:-<9>-<8>-<3>-
out: Overl05	:-<1>-<9>-<8>-
out: Overl06	:-<1>-<2>-<9>-
out: Overl07	:-<1>-<2>-<3>-
out: Overl08	:-<1>-<2>-<3>-
out: Overl09	:-<1>-<2>-<3>-
out: Overl10	:-<1>-<1>-<2>-
out: Overl11	:-<1>-<2>-<3>-
out: Overl12	:-<1>-<2>-<3>-
out: Overl13	:-<1>-<2>-<3>-
out: Front1	:-
out: Front2	:-<1>-
out: Front3	:-<1>-<2>-<3>-
out: Back1	:-<2>-<3>-
out: Back2	:-<3>-
out: Back3	:-
out: Front4	:-<1>-
out: Back4	:-<2>-<3>-
out: Prefix	:-<1>-<2>-
out: ElmL	:-<3>-
out: NPrefix	:-
out: Types<Elm1>	:-<3>-
out: NList	:-
out: Types<Nil>	:-
out: LL	:-<1>-<2>-<3>-<5>-<6>-<7>-
out: List	:-<1>-<2>-<3>-<5>-<6>-<7>-
out: First	:-<1>-
out: Tail	:-<2>-<3>-<5>-<6>-<7>-
out: Prefix	:-<1>-<2>-<3>-<5>-<6>-
out: Last	:-<7>-
out: HeadEnd	:-<1>-<7>-
out: Prefix1	:
out: 	\+---<11>-<22>-\+-
out: Prefix2	:
out: 	\+---<101>-<1>-\+
out: 	\+---<101>-<2>-\+
out: 	\+---<101>-<3>-\+-
out: Prefix3	:
out: 	\+---<1>-\+
out: 	\+---<2>-\+
out: 	\+---<3>-\+-
out: Prefix4	:
out: 	\+---<111>-<1>-<2>-<3>-\+
out: 	\+---<111>-<0>-\+
out: 	\+---<111>-<5>-<6>-<7>-\+-
out: Prefix5	:
out: 	\+---<1>-<2>-<3>-<5>-\+
out: 	\+---<1>-<2>-<3>-<6>-\+
out: 	\+---<1>-<2>-<3>-<7>-\+-
out: Prefix6	:
out: 	\+---<1>-<2>-<3>-<1>-<2>-<3>-\+
out: 	\+---<1>-<2>-<3>-<0>-\+
out: 	\+---<1>-<2>-<3>-<5>-<6>-<7>-\+-
out: Dist1	:
out: 	\+---<11>-<1>-\+
out: 	\+---<11>-<2>-\+
out: 	\+---<11>-<3>-\+-
out: Dist2	:
out: 	\+---<11>-<0>-\+
out: 	\+---<22>-<0>-\+
out: 	\+---<33>-<0>-\+-
out: Dist3	:
out: 	\+---<11>-<1>-\+
out: 	\+---<11>-<2>-\+
out: 	\+---<11>-<3>-\+
out: 	\+---<22>-<1>-\+
out: 	\+---<22>-<2>-\+
out: 	\+---<22>-<3>-\+
out: 	\+---<33>-<1>-\+
out: 	\+---<33>-<2>-\+
out: 	\+---<33>-<3>-\+-
out: Dist4	:
out: 	\+---<11>-<1>-<2>-<3>-\+
out: 	\+---<11>-<5>-<6>-<7>-\+
out: 	\+---<22>-<1>-<2>-<3>-\+
out: 	\+---<22>-<5>-<6>-<7>-\+
out: 	\+---<33>-<1>-<2>-<3>-\+
out: 	\+---<33>-<5>-<6>-<7>-\+-
out: Down	:-<11>-<10>-<9>-<8>-<7>-<6>-<5>-<4>-<3>-<2>-<1>-<0>-
out: Combi	:
out: 	\+---<1>-<2>-<3>-<·>-\+
out: 	\+---<1>-<2>-<2>-<·>-\+
out: 	\+---<1>-<2>-<1>-<·>-\+
out: 	\+---<1>-<2>-<0>-<·>-\+
out: 	\+---<1>-<1>-<3>-<·>-\+
out: 	\+---<1>-<1>-<2>-<·>-\+
out: 	\+---<1>-<1>-<1>-<·>-\+
out: 	\+---<1>-<1>-<0>-<·>-\+
out: 	\+---<1>-<0>-<3>-<·>-\+
out: 	\+---<1>-<0>-<2>-<·>-\+
out: 	\+---<1>-<0>-<1>-<·>-\+
out: 	\+---<1>-<0>-<0>-<·>-\+
out: 	\+---<0>-<2>-<3>-<·>-\+
out: 	\+---<0>-<2>-<2>-<·>-\+
out: 	\+---<0>-<2>-<1>-<·>-\+
out: 	\+---<0>-<2>-<0>-<·>-\+
out: 	\+---<0>-<1>-<3>-<·>-\+
out: 	\+---<0>-<1>-<2>-<·>-\+
out: 	\+---<0>-<1>-<1>-<·>-\+
out: 	\+---<0>-<1>-<0>-<·>-\+
out: 	\+---<0>-<0>-<3>-<·>-\+
out: 	\+---<0>-<0>-<2>-<·>-\+
out: 	\+---<0>-<0>-<1>-<·>-\+
out: 	\+---<0>-<0>-<0>-<·>-\+-
out: OnOff	:
out: 	\+---<1>-<2>-<3>-<·>-\+
out: 	\+---<1>-<2>-<·>-\+
out: 	\+---<1>-<3>-<·>-\+
out: 	\+---<1>-<·>-\+
out: 	\+---<2>-<3>-<·>-\+
out: 	\+---<2>-<·>-\+
out: 	\+---<3>-<·>-\+
out: 	\+---<·>-\+-
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: L1	:-<1>-<3>-<5>-
out: L2	:-<2>-<4>-
out: L3	:-<7>-
out: Tup1	:TYPES-<>-<1>-<3>-<5>-
out: Tup1\(\)	:...Tuple\(\(1\),\(3\),\(5\)\)
out: tup1x	:...Tuple\(\{11\},\(3\),\(5\)\)
out: Type1	:-<1>-<3>-<5>-
out: T_L1	:TYPES-\[\]-<1>-<3>-<5>-
out: T1	:TYPES-<>-<1>-<3>-<5>-
out: tup1	:...Tuple\(\{8\},\(3\),\(5\)\)
out: tup2	:...Tuple\(\{9\},\(3\),\(5\)\)
out: Prepend	:TYPES-\[\]-<i>-<1>-<3>-<5>-
out: prepend	:...Tuple\(22,\{9\},\(3\),\(5\)\)
out: 	:$
out: 	: ---Sub-Tuple-Types----
out: T_L2	:TYPES-\[\]-<2>-<4>-<1>-<3>-<5>-
out: Head	:-<2>-
out: Tail	:-<4>-<1>-<3>-<5>-
out: T2	:TYPES-<>-<2>-<4>-<1>-<3>-<5>-
out: Head2	:-<2>-
out: Tail2	:-<4>-<1>-<3>-<5>-
out: T2::Type	:-<2>-<4>-<1>-<3>-<5>-
out: T2::TailType	:-<4>-<1>-<3>-<5>-
out: T2::TupleType	:TYPES-<>-<2>-<4>-<1>-<3>-<5>-
out: T2::ThisType	:TYPES-<>-<2>-<4>-<1>-<3>-<5>-
out: T2::Tail	:TYPES-<>-<4>-<1>-<3>-<5>-
out: T2::ArgList	:-<2>-<4>-<1>-<3>-<5>-
out: T_L2::Type	:-<2>-<4>-<1>-<3>-<5>-
out: T_L2::TailType	:-<4>-<1>-<3>-<5>-
out: T_L2::TupleType	:TYPES-<>-<2>-<4>-<1>-<3>-<5>-
out: T_L2::ThisType	:TYPES-\[\]-<2>-<4>-<1>-<3>-<5>-
out: T_L2::Tail	:TYPES-\[\]-<4>-<1>-<3>-<5>-
out: T_L2::ArgList	:-<2>-<4>-<1>-<3>-<5>-
out: NulT::Type	:-
out: NulT::TailType	:-
out: NulT::TupleType	:TYPES-<>-
out: NulT::ThisType	:TYPES-<>-
out: NulT::Tail	:TYPES-<>-
out: NulT::ArgList	:-
out: NulL::Type	:-
out: NulL::TailType	:-
out: NulL::TupleType	:TYPES-<>-
out: NulL::ThisType	:TYPES-\[\]-
out: NulL::Tail	:TYPES-\[\]-
out: NulL::ArgList	:-
out: 	:$
out: 	: ---Shifted-Tuple---
out: Ty_0	:-<2>-<4>-<7>-
out: Ty_1	:-<4>-<7>-
out: Ty_2	:-<7>-
out: Ty_3	:-
out: Ty_4	:-
out: T_0	:TYPES-\[\]-<2>-<4>-<7>-
out: T_1	:TYPES-\[\]-<4>-<7>-
out: T_2	:TYPES-\[\]-<7>-
out: T_3	:TYPES-\[\]-
out: T_4	:TYPES-\[\]-
out: tu3	:...Tuple\(\(2\),\(4\),\(7\)\)
out: tu3_0	:...Tuple\(\(2\),\(4\),\(7\)\)
out: tu3_1	:...Tuple\(\(4\),\(7\)\)
out: tu3_2	:...Tuple\(\(7\)\)
out: tu3_3	:...Tuple\(\)
out: tu3_4	:...Tuple\(\)
out: 	:$
out: 	: ---creating-Tuples---
out: tup1	:...Tuple\(\(1\),\(3\),\(5\)\)
out: tup11	:...Tuple\(\{11\},\(3\),\(5\)\)
out: tup12	:...Tuple\(\(1\),\{33\},\(5\)\)
out: tup13	:...Tuple\(\{11\},\{33\},\(5\)\)
out: Tup2	:TYPES-<>-<i>-<i>-<11>-
out: tup2	:...Tuple\(41,42,\{43\}\)
out: Tup22	:TYPES-<>-<i>-<11>-
out: tup22	:...Tuple\(42,\{43\}\)
out: Tup222	:TYPES-<>-<11>-
out: tup222	:...Tuple\(\{43\}\)
out: T0T	:TYPES-<>-
out: T0L	:TYPES-\[\]-
out: nullT	:...Tuple\(\)
out: nullL	:...Tuple\(\)
out: nulTcpy	:...Tuple\(\)
out: nulTref	:...Tuple\(\)
out: 	:$
out: 	: ---build-from-sub-Tuples---
out: T1357L	:TYPES-\[\]-<1>-<3>-<5>-<7>-
out: T1357T	:TYPES-<>-<1>-<3>-<5>-<7>-
out: T135L	:TYPES-\[\]-<1>-<3>-<5>-
out: T57T	:TYPES-<>-<5>-<7>-
out: T35T	:TYPES-<>-<3>-<5>-
out: sub135	:...Tuple\(\(1\),\(3\),\(5\)\)
out: b_135	:...Tuple\(\(1\),\(3\),\(5\),\(7\)\)
out: sub57	:...Tuple\(\(5\),\(7\)\)
out: b_57	:...Tuple\(\(1\),\(3\),\(5\),\(7\)\)
out: sub35	:...Tuple\(\{8\},\{8\}\)
out: b_35	:...Tuple\(\(1\),\{8\},\{8\},\(7\)\)
out: b_35	:...Tuple\(\(1\),\(3\),\(5\),\(7\)\)
out: sub78	:...Tuple\(\{77\},\{88\}\)
out: b_78	:...Tuple\(\(1\),\(3\),\(5\),\{77\}\)
out: b_nul	:...Tuple\(\(1\),\(3\),\(5\),\(7\)\)
out: b_nul2	:...Tuple\(\)
out: 	:$
out: 	: ---copy-operations---
out: tup1	:...Tuple\(\{11\},\{33\},\(5\)\)
out: tup11	:...Tuple\(\{11\},\{33\},\{44\}\)
out: tup1	:...Tuple\(\{11\},\{33\},\{44\}\)
out: tupL	:...Tuple\(\{11\},\{33\},\{44\}\)
out: tup1L	:...Tuple\(\{11\},\{33\},\{44\}\)
out: 	:$
out: 	: ---value-access---
out: TupX	:TYPES-\[\]-<2>-<4>-<2>-<4>-
out: tupX	:...Tuple\(\(2\),\(4\),\(2\),\(4\)\)
out: tu2	:...Tuple\(\(2\),\(4\)\)
out: tu2	:...Tuple\(\{5\},\{5\}\)
out: tupX	:...Tuple\(\(2\),\(4\),\{5\},\{5\}\)
out: T4	:TYPES-<>-<2>-<4>-
out: t4	:...Tuple\(\{5\},\{5\}\)
out: TupX::Type	:-<2>-<4>-<2>-<4>-
out: TupX::TailType	:-<4>-<2>-<4>-
out: TupX::ThisType	:TYPES-\[\]-<2>-<4>-<2>-<4>-
out: TupX::TupleType	:TYPES-<>-<2>-<4>-<2>-<4>-
out: TupT::Type	:-<2>-<4>-<2>-<4>-
out: TupT::TailType	:-<4>-<2>-<4>-
out: TupT::ThisType	:TYPES-<>-<2>-<4>-<2>-<4>-
out: TupT::TupleType	:TYPES-<>-<2>-<4>-<2>-<4>-
out: tupXcopy	:...Tuple\(\(2\),\(4\),\{5\},\{5\}\)
out: tupXcast	:...Tuple\(\(2\),\(4\),\{5\},\{5\}\)
return: 0
END


TEST "TypedAllocationManager" TypedAllocationManager_test <<END
return: 0
END


TEST "Type-based contexts" TypedCounter_test <<END
return: 0
END


TEST "extensible symbolic identifier" SubID_test <<END
out: ....RGB
out: id1=R.12
out: id2=G.13
out: verify...
out: Elements in hashtable: 3
out: verify...
out: Elements in hashtable: 5
return: 0
END


TEST "integer rounding utility" UtilFloordiv_test <<END
return: 0
END


TEST "integer scale wrapping utility" UtilFloorwrap_test <<END
out-lit: --------i--------12/4
out-lit:  12 / 4 = 3  % = 0     floor= 3.0  wrap = ( 3, 0)
out-lit:  11 / 4 = 2  % = 3     floor= 2.0  wrap = ( 2, 3)
out-lit:  10 / 4 = 2  % = 2     floor= 2.0  wrap = ( 2, 2)
out-lit:   9 / 4 = 2  % = 1     floor= 2.0  wrap = ( 2, 1)
out-lit:   8 / 4 = 2  % = 0     floor= 2.0  wrap = ( 2, 0)
out-lit:   7 / 4 = 1  % = 3     floor= 1.0  wrap = ( 1, 3)
out-lit:   6 / 4 = 1  % = 2     floor= 1.0  wrap = ( 1, 2)
out-lit:   5 / 4 = 1  % = 1     floor= 1.0  wrap = ( 1, 1)
out-lit:   4 / 4 = 1  % = 0     floor= 1.0  wrap = ( 1, 0)
out-lit:   3 / 4 = 0  % = 3     floor= 0.0  wrap = ( 0, 3)
out-lit:   2 / 4 = 0  % = 2     floor= 0.0  wrap = ( 0, 2)
out-lit:   1 / 4 = 0  % = 1     floor= 0.0  wrap = ( 0, 1)
out-lit:   0 / 4 = 0  % = 0     floor= 0.0  wrap = ( 0, 0)
out-lit:  -1 / 4 = 0  % =-1     floor=-1.0  wrap = (-1, 3)
out-lit:  -2 / 4 = 0  % =-2     floor=-1.0  wrap = (-1, 2)
out-lit:  -3 / 4 = 0  % =-3     floor=-1.0  wrap = (-1, 1)
out-lit:  -4 / 4 =-1  % = 0     floor=-1.0  wrap = (-1, 0)
out-lit:  -5 / 4 =-1  % =-1     floor=-2.0  wrap = (-2, 3)
out-lit:  -6 / 4 =-1  % =-2     floor=-2.0  wrap = (-2, 2)
out-lit:  -7 / 4 =-1  % =-3     floor=-2.0  wrap = (-2, 1)
out-lit:  -8 / 4 =-2  % = 0     floor=-2.0  wrap = (-2, 0)
out-lit:  -9 / 4 =-2  % =-1     floor=-3.0  wrap = (-3, 3)
out-lit: -10 / 4 =-2  % =-2     floor=-3.0  wrap = (-3, 2)
out-lit: -11 / 4 =-2  % =-3     floor=-3.0  wrap = (-3, 1)
out-lit: -12 / 4 =-3  % = 0     floor=-3.0  wrap = (-3, 0)
out-lit: --------i--------12/-4
out-lit:  12 /-4 =-3  % = 0     floor=-3.0  wrap = (-3, 0)
out-lit:  11 /-4 =-2  % = 3     floor=-3.0  wrap = (-3,-1)
out-lit:  10 /-4 =-2  % = 2     floor=-3.0  wrap = (-3,-2)
out-lit:   9 /-4 =-2  % = 1     floor=-3.0  wrap = (-3,-3)
out-lit:   8 /-4 =-2  % = 0     floor=-2.0  wrap = (-2, 0)
out-lit:   7 /-4 =-1  % = 3     floor=-2.0  wrap = (-2,-1)
out-lit:   6 /-4 =-1  % = 2     floor=-2.0  wrap = (-2,-2)
out-lit:   5 /-4 =-1  % = 1     floor=-2.0  wrap = (-2,-3)
out-lit:   4 /-4 =-1  % = 0     floor=-1.0  wrap = (-1, 0)
out-lit:   3 /-4 = 0  % = 3     floor=-1.0  wrap = (-1,-1)
out-lit:   2 /-4 = 0  % = 2     floor=-1.0  wrap = (-1,-2)
out-lit:   1 /-4 = 0  % = 1     floor=-1.0  wrap = (-1,-3)
out-lit:   0 /-4 = 0  % = 0     floor=-0.0  wrap = ( 0, 0)
out-lit:  -1 /-4 = 0  % =-1     floor= 0.0  wrap = ( 0,-1)
out-lit:  -2 /-4 = 0  % =-2     floor= 0.0  wrap = ( 0,-2)
out-lit:  -3 /-4 = 0  % =-3     floor= 0.0  wrap = ( 0,-3)
out-lit:  -4 /-4 = 1  % = 0     floor= 1.0  wrap = ( 1, 0)
out-lit:  -5 /-4 = 1  % =-1     floor= 1.0  wrap = ( 1,-1)
out-lit:  -6 /-4 = 1  % =-2     floor= 1.0  wrap = ( 1,-2)
out-lit:  -7 /-4 = 1  % =-3     floor= 1.0  wrap = ( 1,-3)
out-lit:  -8 /-4 = 2  % = 0     floor= 2.0  wrap = ( 2, 0)
out-lit:  -9 /-4 = 2  % =-1     floor= 2.0  wrap = ( 2,-1)
out-lit: -10 /-4 = 2  % =-2     floor= 2.0  wrap = ( 2,-2)
out-lit: -11 /-4 = 2  % =-3     floor= 2.0  wrap = ( 2,-3)
out-lit: -12 /-4 = 3  % = 0     floor= 3.0  wrap = ( 3, 0)
out-lit: --------l--------12/4
out-lit:  12 / 4 = 3  % = 0     floor= 3.0  wrap = ( 3, 0)
out-lit:  11 / 4 = 2  % = 3     floor= 2.0  wrap = ( 2, 3)
out-lit:  10 / 4 = 2  % = 2     floor= 2.0  wrap = ( 2, 2)
out-lit:   9 / 4 = 2  % = 1     floor= 2.0  wrap = ( 2, 1)
out-lit:   8 / 4 = 2  % = 0     floor= 2.0  wrap = ( 2, 0)
out-lit:   7 / 4 = 1  % = 3     floor= 1.0  wrap = ( 1, 3)
out-lit:   6 / 4 = 1  % = 2     floor= 1.0  wrap = ( 1, 2)
out-lit:   5 / 4 = 1  % = 1     floor= 1.0  wrap = ( 1, 1)
out-lit:   4 / 4 = 1  % = 0     floor= 1.0  wrap = ( 1, 0)
out-lit:   3 / 4 = 0  % = 3     floor= 0.0  wrap = ( 0, 3)
out-lit:   2 / 4 = 0  % = 2     floor= 0.0  wrap = ( 0, 2)
out-lit:   1 / 4 = 0  % = 1     floor= 0.0  wrap = ( 0, 1)
out-lit:   0 / 4 = 0  % = 0     floor= 0.0  wrap = ( 0, 0)
out-lit:  -1 / 4 = 0  % =-1     floor=-1.0  wrap = (-1, 3)
out-lit:  -2 / 4 = 0  % =-2     floor=-1.0  wrap = (-1, 2)
out-lit:  -3 / 4 = 0  % =-3     floor=-1.0  wrap = (-1, 1)
out-lit:  -4 / 4 =-1  % = 0     floor=-1.0  wrap = (-1, 0)
out-lit:  -5 / 4 =-1  % =-1     floor=-2.0  wrap = (-2, 3)
out-lit:  -6 / 4 =-1  % =-2     floor=-2.0  wrap = (-2, 2)
out-lit:  -7 / 4 =-1  % =-3     floor=-2.0  wrap = (-2, 1)
out-lit:  -8 / 4 =-2  % = 0     floor=-2.0  wrap = (-2, 0)
out-lit:  -9 / 4 =-2  % =-1     floor=-3.0  wrap = (-3, 3)
out-lit: -10 / 4 =-2  % =-2     floor=-3.0  wrap = (-3, 2)
out-lit: -11 / 4 =-2  % =-3     floor=-3.0  wrap = (-3, 1)
out-lit: -12 / 4 =-3  % = 0     floor=-3.0  wrap = (-3, 0)
out-lit: --------l--------12/-4
out-lit:  12 /-4 =-3  % = 0     floor=-3.0  wrap = (-3, 0)
out-lit:  11 /-4 =-2  % = 3     floor=-3.0  wrap = (-3,-1)
out-lit:  10 /-4 =-2  % = 2     floor=-3.0  wrap = (-3,-2)
out-lit:   9 /-4 =-2  % = 1     floor=-3.0  wrap = (-3,-3)
out-lit:   8 /-4 =-2  % = 0     floor=-2.0  wrap = (-2, 0)
out-lit:   7 /-4 =-1  % = 3     floor=-2.0  wrap = (-2,-1)
out-lit:   6 /-4 =-1  % = 2     floor=-2.0  wrap = (-2,-2)
out-lit:   5 /-4 =-1  % = 1     floor=-2.0  wrap = (-2,-3)
out-lit:   4 /-4 =-1  % = 0     floor=-1.0  wrap = (-1, 0)
out-lit:   3 /-4 = 0  % = 3     floor=-1.0  wrap = (-1,-1)
out-lit:   2 /-4 = 0  % = 2     floor=-1.0  wrap = (-1,-2)
out-lit:   1 /-4 = 0  % = 1     floor=-1.0  wrap = (-1,-3)
out-lit:   0 /-4 = 0  % = 0     floor=-0.0  wrap = ( 0, 0)
out-lit:  -1 /-4 = 0  % =-1     floor= 0.0  wrap = ( 0,-1)
out-lit:  -2 /-4 = 0  % =-2     floor= 0.0  wrap = ( 0,-2)
out-lit:  -3 /-4 = 0  % =-3     floor= 0.0  wrap = ( 0,-3)
out-lit:  -4 /-4 = 1  % = 0     floor= 1.0  wrap = ( 1, 0)
out-lit:  -5 /-4 = 1  % =-1     floor= 1.0  wrap = ( 1,-1)
out-lit:  -6 /-4 = 1  % =-2     floor= 1.0  wrap = ( 1,-2)
out-lit:  -7 /-4 = 1  % =-3     floor= 1.0  wrap = ( 1,-3)
out-lit:  -8 /-4 = 2  % = 0     floor= 2.0  wrap = ( 2, 0)
out-lit:  -9 /-4 = 2  % =-1     floor= 2.0  wrap = ( 2,-1)
out-lit: -10 /-4 = 2  % =-2     floor= 2.0  wrap = ( 2,-2)
out-lit: -11 /-4 = 2  % =-3     floor= 2.0  wrap = ( 2,-3)
out-lit: -12 /-4 = 3  % = 0     floor= 3.0  wrap = ( 3, 0)
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: :80$
out: ---:assign_to_var
out: :60:99:137:174:210:245:279:312:344:375
out: :435:474:512:549:585:620:654:687:719:750
out: :810:789:788:787:786:785:784:783:782:781
out: sum=750
out: :60:99:137:174:210:245:279:312:344:375
out: :435:474:512:549:585:620:654:687:719:750
out: :810:789:788:787:786:785:784:783:782:781
out: sum=750
out: :60
out: :120
out: :180
out: sum=120
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: :80$
out: ---:assign_to_var
out: :60:99:137:174:210:245:279:312:344:375
out: :435:474:512:549:585:620:654:687:719:750
out: :810:789:788:787:786:785:784:783:782:781
out: sum=750
out: :60:99:137:174:210:245:279:312:344:375
out: :435:474:512:549:585:620:654:687:719:750
out: :810:789:788:787:786:785:784:783:782:781
out: sum=750
out: :60
out: :120
out: :180
out: sum=120
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


TEST "VectorTransfer_test" VectorTransfer_test <<END
return: 0
END


TEST "VisitingTool_test" VisitingTool_test <<END
out: === Babbler meets Boss and BigBoss ===
out: Hello Boss, nice to meet you...
out: Hello Big Boss, nice to meet you...
out: === Babbler meets HomoSapiens and Leader ===
out: Hello Boss, nice to meet you...
return: 0
END


TEST "VisitingToolExtended_test" VisitingToolExtended_test <<END
out: === Babbler meets Boss and BigBoss ===
out: Hello Boss, nice to meet you...
out: Hello Big Boss, nice to meet you...
out: === Babbler meets HomoSapiens and Leader ===
out: Hello Boss, nice to meet you...
out: === Blatherer meets Leader and Visionary masqueraded as Chief ===
out: we-do-everything-for-YOU!
out: Hello Mr.Future, nice to meet you...
out: === Babbler masqueraded as Tool meets Leader and Visionary masqueraded as HomoSapiens ===
out: Hello Boss, nice to meet you...
out: === Babbler masqueraded as Tool meets Leader and Visionary masqueraded as Leader ===
out: Hello Boss, nice to meet you...
return: 0
END


