Ouch! Why does C++ lack the most basic everyday stuff? It needn't be performant. It needn't support some fancy higher order container. Just join the f***ing strings. use Bosst?? -- OMG!! pulls in half the metra programming library and tries to work on any concievable range like object. Just somehow our Lumiera Forward Iterators aren't "range-like" enough for boost's taste. Thus let's code up that fucking for-loop ourselves, once and forever.
596 lines
19 KiB
Text
596 lines
19 KiB
Text
TESTING "Library Test Suite: basic and low-level components" ./test-suite --group=common
|
|
|
|
|
|
|
|
TEST "casting or converting access helper" AccessCasted_test <<END
|
|
out-lit: can_downcast<B,D> = 1
|
|
out-lit: can_downcast<B*,D*> = 1
|
|
out-lit: can_downcast<B&,D&> = 1
|
|
out-lit: can_downcast<B&,D*> = 0
|
|
out-lit: can_downcast<B*,D&> = 0
|
|
out-lit: can_downcast<B*&,D*&> = 1
|
|
out-lit: can_downcast<D*&,D*&> = 1
|
|
out-lit: can_downcast<D*,E*> = 1
|
|
out-lit: can_downcast<E*,F*> = 1
|
|
out-lit: has_RTTI<D*> = 0
|
|
out-lit: has_RTTI<E*> = 1
|
|
out-lit: has_RTTI<F*> = 1
|
|
out-lit: is_convertible<D,D&> = 0
|
|
out-lit: is_convertible<D&,D> = 1
|
|
out-lit: can_use_dynamic_downcast<D,D&> = 0
|
|
out-lit: can_use_conversion<D,D&> = 0
|
|
out-lit: can_use_dynamic_downcast<B*,D*> = 0
|
|
out-lit: can_use_conversion<D*,B*> = 1
|
|
out-lit: can_use_dynamic_downcast<D*&,D*&> = 0
|
|
out-lit: can_use_conversion<D*&,D*&> = 1
|
|
out-lit: can_use_conversion<D*,E*> = 0
|
|
out-lit: can_use_dynamic_downcast<D*&,E*> = 0
|
|
out-lit: === standard case: References ===
|
|
out: Access\(D as D&\) .+D.. adr=0x.+ type: D
|
|
out: Access\(D& as D&\) .+D.. adr=0x.+ type: D
|
|
out-lit: === build a value object ===
|
|
out: Access.D as D. .+D.. adr=0x.+ type: D
|
|
out: Access.D& as D. .+D.. adr=0x.+ type: D
|
|
out: Access.D&& as D. .+D.. adr=0x.+ type: D
|
|
out-lit: === take a pointer ===
|
|
out: Access.D as D\*. .+0x.+
|
|
out: Access.D& as D\*. .+0x.+
|
|
out-lit: === dereference a pointer ===
|
|
out: Access.D\* as D&. .+D.. adr=0x.+ type: D
|
|
out: Access.D\* as D. .+D.. adr=0x.+ type: D
|
|
out: Access.D\*&& as D. .+D.. adr=0x.+ type: D
|
|
out-lit: === const correctness ===
|
|
out: Access.D as D const&. .+D.. adr=0x.+ type: D
|
|
out: Access.D& as D const&. .+D.. adr=0x.+ type: D
|
|
out: Access.D as const D. .+D.. adr=0x.+ type: D
|
|
out: Access.D& as const D. .+D.. adr=0x.+ type: D
|
|
out: Access.D as const D\*. .+0x.+
|
|
out: Access.D& as const D\*. .+0x.+
|
|
out: Access.D\* as D const&. .+D.. adr=0x.+ type: D
|
|
out: Access.D\* as const D. .+D.. adr=0x.+ type: D
|
|
out: Access.const D as D const&. .+D.. adr=0x.+ type: D
|
|
out: Access.D const& as D const&. .+D.. adr=0x.+ type: D
|
|
out: Access.const D as const D. .+D.. adr=0x.+ type: D
|
|
out: Access.D const& as const D. .+D.. adr=0x.+ type: D
|
|
out: Access.const D as const D\*. .+0x.+
|
|
out: Access.D const& as const D\*. .+0x.+
|
|
out: Access.const D\* as D const&. .+D.. adr=0x.+ type: D
|
|
out: Access.const D\* as const D. .+D.. adr=0x.+ type: D
|
|
out: Access.D const& as D. .+D.. adr=0x.+ type: D
|
|
out: Access.D const&& as D. .+D.. adr=0x.+ type: D
|
|
out-lit: === work cases: actual conversions ===
|
|
out: Access.B& as B&. .+B.. adr=0x.+ type: B
|
|
out: Access.D& as B&. .+B.. adr=0x.+ type: B
|
|
out: Access.B\* as B\*. .+0x.+
|
|
out: Access.D\* as B\*. .+0x.+
|
|
out: Access.D& as B\*. .+0x.+
|
|
out: Access.D\* as B&. .+B.. adr=0x.+ type: B
|
|
out: Access.B\*& as B\*&. .+0x.+
|
|
out: Access.D\*& as D\*&. .+0x.+
|
|
out: Access.D& as const B\*. .+0x.+
|
|
out: Access.D\* as B const&. .+B.. adr=0x.+ type: B
|
|
out: Access.D const& as const B\*. .+0x.+
|
|
out: Access.const D\* as B const&. .+B.. adr=0x.+ type: B
|
|
out: Access.E\(F\)& as F&. .+F.. adr=0x.+ type: F
|
|
out: Access.E\(F\)\* as F\*. .+0x.+
|
|
out: Access.E\(F\)\* as F&. .+F.. adr=0x.+ type: F
|
|
out: Access.E\(F\)& as F\*. .+0x.+
|
|
out: Access.F\\* as X\*. .+0x.+
|
|
out: Access.X\(F\)\* as X\*. .+0x.+
|
|
out: Access.F\* as B\*. .+0x.+
|
|
out-lit: Access(int as double) --->2
|
|
out-lit: Access(float as long) --->3
|
|
END
|
|
|
|
|
|
TEST "CmdlineWrapper_test" CmdlineWrapper_test <<END
|
|
out-lit: wrapping cmdline:...
|
|
out-lit: -->
|
|
out-lit: wrapping cmdline:
|
|
out-lit: ...
|
|
out-lit: -->
|
|
out-lit: wrapping cmdline:spam...
|
|
out-lit: 0|spam|
|
|
out-lit: -->spam
|
|
out-lit: wrapping cmdline:
|
|
out-lit: spam...
|
|
out-lit: 0|spam|
|
|
out-lit: -->spam
|
|
out-lit: wrapping cmdline:eat more spam...
|
|
out-lit: 0|eat|
|
|
out-lit: 1|more|
|
|
out-lit: 2|spam|
|
|
out-lit: -->eat more spam
|
|
out-lit: wrapping cmdline: oo _O()O_ ☭ + €...
|
|
out-lit: 0|oo|
|
|
out-lit: 1|_O()O_|
|
|
out-lit: 2|☭|
|
|
out-lit: 3|+|
|
|
out-lit: 4|€|
|
|
out-lit: -->oo _O()O_ ☭ + €
|
|
out-lit: wrapping cmdline:Ω ooΩ oΩo Ωoo...
|
|
out-lit: 0|Ω|
|
|
out-lit: 1|ooΩ|
|
|
out-lit: 2|oΩo|
|
|
out-lit: 3|Ωoo|
|
|
out-lit: -->Ω ooΩ oΩo Ωoo
|
|
out-lit: Standard Cmdlineformat:one two
|
|
END
|
|
|
|
|
|
TEST "CustomSharedPtr_test" CustomSharedPtr_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Deleter function collection" DelStash_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Dependency injection" DependencyFactory_test <<END
|
|
out-lit: ctor TargetObj(0) successful
|
|
out-lit: ctor TargetObj(1) successful
|
|
out-lit: ctor TargetObj(2) successful
|
|
out-lit: ctor TargetObj(3) successful
|
|
out-lit: dtor ~TargetObj(3) successful
|
|
out-lit: ctor TargetObj(4) successful
|
|
out-lit: dtor ~TargetObj(4) successful
|
|
out-lit: dtor ~TargetObj(2) successful
|
|
out-lit: dtor ~TargetObj(1) successful
|
|
out-lit: dtor ~TargetObj(0) successful
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Diff: apply list diff to target sequence" DiffListApplication_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Diff: compare sequences to generate list diff" DiffListGeneration_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Diff: lookup table helper" DiffIndexTable_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 "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
|
|
out: 0.+1.1.+2.2.+3.3.+4.4.+5.5.+6.6.+7.7.+8.8.+\-\-\+\-\-9.9
|
|
out-lit: Nr.01(0.0), Nr.02(2.2), Nr.03(4.4), Nr.04(6.6), Nr.05(8.8), Nr.06(11.0), Nr.07(13.2), Nr.08(15.4), Nr.09(17.6), Nr.10(19.8)
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "formatting by string template" FormatString_test <<END
|
|
out-lit: --format-template--int=0012--double=+1.23--string=Lumiera --
|
|
out: 0x....+ _____+ .
|
|
out: «.+util.+test.+Silent.»
|
|
out-lit: __nix_
|
|
out-lit: ____
|
|
out-lit: __1__
|
|
out-lit: __1__
|
|
out-lit: __↯__
|
|
out-lit: __dirt__
|
|
out-lit: __1234__
|
|
out-lit: __0xff__
|
|
return: 0
|
|
END
|
|
|
|
|
|
PLANNED "GenNodeBasic_test" GenNodeBasic_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
PLANNED "GenericRecordRepresentation_test" GenericRecordRepresentation_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
PLANNED "GenericTreeRepresentation_test" GenericTreeRepresentation_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Generic recursive mutation with closure binding" GenericTreeMutator_test <<END
|
|
out: concrete TreeMutator .+Builder<.+ChangeOperation<.+TreeMutator, .+string
|
|
out-lit: "data" closure received something that would be acceptable
|
|
out-lit: localData changed to: that would be acceptable
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "HashGenerator_test" HashGenerator_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "HashIndexed_test" HashIndexed_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "bridge boost::hash to std::hash" HashStandardToBoostBridge_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Hierarchy rebuilding" HierarchyOrientationIndicator_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "configurable Factory" MultiFact_test <<END
|
|
END
|
|
|
|
|
|
TEST "Family of Singleton Factories" MultiFactSingleton_test <<END
|
|
out: Impl-1
|
|
out: Impl-2
|
|
out: Impl-3
|
|
out: Impl-4
|
|
out: sizeof\( .+MultiFact.+Interface.+theID.+PassAsIs.+ \) =
|
|
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-lit: DD<5>: *****
|
|
out-lit: DD<9>: I'm fine*
|
|
out-lit: 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 "RefArray_test" RefArray_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "RemoveFromSet_test" RemoveFromSet_test <<END
|
|
out-lit: removed nothing ---> [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ]
|
|
out-lit: removed 0 ---> [ 1, 2, 3, 4, 5, 6, 7, 8, 9, ]
|
|
out-lit: removed 9 ---> [ 0, 1, 2, 3, 4, 5, 6, 7, 8, ]
|
|
out-lit: removed 5 ---> [ 0, 1, 2, 3, 4, 6, 7, 8, 9, ]
|
|
out-lit: removed 0 2 4 6 8 ---> [ 1, 3, 5, 7, 9, ]
|
|
out-lit: removed 1 3 5 7 9 ---> [ 0, 2, 4, 6, 8, ]
|
|
out-lit: removed 0 1 2 3 4 5 6 7 8 9 ---> [ ]
|
|
out-lit: removed 0 1 2 3 4 5 6 7 8 ---> [ 9, ]
|
|
out-lit: removed 1 2 3 4 5 6 7 8 9 ---> [ 0, ]
|
|
out-lit: removed 0 1 2 3 4 6 7 8 9 ---> [ 5, ]
|
|
END
|
|
|
|
|
|
TEST "SanitizedIdentifier_test" SanitizedIdentifier_test <<END
|
|
out-lit: 'Word' --> 'Word'
|
|
out-lit: 'a Sentence' --> 'a_Sentence'
|
|
out-lit: 'trailing Withespace
|
|
out-lit: ' --> 'trailing_Withespace'
|
|
out-lit: 'with a lot
|
|
out-lit: of Whitespace' --> 'with_a_lot_of_Whitespace'
|
|
out-lit: 'with"much (punctuation)[]!' --> 'withmuch_(punctuation)'
|
|
out-lit: '§&Ω%€ leading garbage' --> 'leading_garbage'
|
|
out-lit: 'mixed Ω garbage' --> 'mixed_garbage'
|
|
out-lit: 'Bääääh!!' --> 'Bh'
|
|
out-lit: '§&Ω%€' --> ''
|
|
END
|
|
|
|
|
|
TEST "ScopedHolder_test" ScopedHolder_test <<END
|
|
out: checking ScopedHolder<Dummy>...
|
|
out: checking ScopedPtrHolder<Dummy>...
|
|
END
|
|
|
|
|
|
TEST "ScopedHolderTransfer_test" ScopedHolderTransfer_test <<END
|
|
out-lit: checking ScopedHolder<Dummy>...
|
|
out-lit: .
|
|
out-lit: ..install one element at index[0]
|
|
out-lit: .
|
|
out-lit: ..*** resize table to 16 elements
|
|
out-lit: .
|
|
out-lit: .throw some exceptions...
|
|
out-lit: checking ScopedPtrHolder<Dummy>...
|
|
out-lit: .
|
|
out-lit: ..install one element at index[0]
|
|
out-lit: .
|
|
out-lit: ..*** resize table to 16 elements
|
|
out-lit: .
|
|
out-lit: .throw some exceptions...
|
|
END
|
|
|
|
|
|
TEST "Managed Collection (I)" ScopedCollection_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Managed Collection (II)" 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-lit: testing TargetObj(23) as Singleton
|
|
out-lit: ctor TargetObj(23) successful
|
|
out-lit: calling a non-static method on the Singleton instance
|
|
out-lit: .....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-lit: dtor ~TargetObj(23) successful
|
|
END
|
|
|
|
|
|
TEST "SingletonSubclass_test" SingletonSubclass_test 13 <<END
|
|
out-lit: using the Singleton should create TargetObj(13)...
|
|
out-lit: ctor TargetObj(13) successful
|
|
out-lit: calling a non-static method on the Singleton-Implementation
|
|
out-lit: .....TargetObj(13): data="*************", array[13]={0,1,2,3,4,5,6,7,8,9,10,11,12,}
|
|
out-lit: dtor ~TargetObj(13) successful
|
|
END
|
|
|
|
|
|
TEST "SingletonTestMock_test" SingletonTestMock_test <<END
|
|
out-lit: TestSingletonO::doIt() call=1
|
|
out-lit: TestSingletonO::doIt() call=2
|
|
out-lit: Mock_1::doIt() call=1
|
|
out-lit: Mock_1::doIt() call=2
|
|
out-lit: Mock_1::doIt() call=3
|
|
out-lit: Mock_1::doIt() call=4
|
|
out-lit: Mock_1::doIt() call=5
|
|
out-lit: Mock_2::doIt() call=1
|
|
out-lit: TestSingletonO::doIt() call=3
|
|
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 "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 "ownership of malloced data" UniqueMallocOwner_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "collection utils" UtilCollection_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "typesafe Variant record" Variant_test <<END
|
|
out: Variant.«bool».0
|
|
out: Variant.«(long|int64_t)».11
|
|
out: Variant.«std::string».lololo
|
|
out: Variant.«lib::time::Time».0:00:00.000
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "verb token based double dispatch helper" VerbFunctionDispatch_test <<END
|
|
out-lit: consuming woof -> 'Woof-Woof!'
|
|
out-lit: consuming honk -> 'Honk-Honk!'
|
|
out-lit: consuming moo -> 'Moo-Moo!'
|
|
out-lit: consuming meh -> 'Meh!'
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "VectorTransfer_test" VectorTransfer_test <<END
|
|
return: 0
|
|
END
|
|
|