fix and adjust broken test defintions. Closes #985
This commit is contained in:
parent
e518a19435
commit
ecd1375e92
16 changed files with 303 additions and 277 deletions
|
|
@ -47,7 +47,7 @@ namespace test{
|
|||
string
|
||||
showSizeof (size_t siz, string name)
|
||||
{
|
||||
static _Fmt fmt{"sizeof( %s ) %|30t|= %3d"};
|
||||
static _Fmt fmt{"sizeof( %s ) %|40t|= %3d"};
|
||||
return fmt % name % siz;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -288,7 +288,7 @@ namespace mobject {
|
|||
&& (*pRef_).template isCompatible<MOX>();
|
||||
}
|
||||
|
||||
operator string() const ///////////////////////TICKET #527 should be better integrated with the other object types
|
||||
operator string() const ///////////////////////TICKET #527 #528 should be better integrated with the other object types
|
||||
{
|
||||
return isValid()? string(getPlacement())
|
||||
: "MRef-NIL";
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ namespace mobject {
|
|||
|
||||
Placement<MObject>::operator string () const
|
||||
{
|
||||
return _Fmt{"Placement<%s> %|50T.| use-cnt=%u ID(%x) adr=%p pointee=%p"}
|
||||
return _Fmt{"Placement<%s> %|50T.| use-cnt=%u ID(%016x) adr=%p pointee=%p"}
|
||||
% typeStr(this->get()) % use_count()
|
||||
% (size_t)getID()
|
||||
% (void*)this
|
||||
|
|
@ -64,7 +64,7 @@ namespace mobject {
|
|||
format_PlacementID (Placement<MObject> const& pla)
|
||||
{
|
||||
size_t hashVal = pla.getID();
|
||||
return _Fmt{"pID(%x)"} % hashVal;
|
||||
return _Fmt{"pID(%016x)"} % hashVal;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,13 +4,18 @@ TESTING "Test support and helpers" ./test-suite --group=common
|
|||
|
||||
TEST "Test support functions" TestHelper_test <<END
|
||||
out: [a-z0-9]{80}$
|
||||
out: Displaying types and sizes....
|
||||
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
|
||||
out: sizeof..everything.+ = 42
|
||||
out-lit: Displaying types and sizes....
|
||||
out-lit: sizeof( just a char ) = 1
|
||||
out-lit: sizeof( test::Murpf ) = 1
|
||||
out-lit: sizeof( test::Wrmrmpft<test::Murpf> ) = 1
|
||||
out-lit: sizeof( test::Wrmrmpft<char [2]> ) = 2
|
||||
out-lit: sizeof( test::Wrmrmpft<char [3]> ) = 3
|
||||
out-lit: sizeof( Universe ) = 42
|
||||
out-lit: sizeof( test::Wrmrmpft<test::Murpf> ) = 1
|
||||
out-lit: sizeof( test::Wrmrmpft<test::Murpf> ) = 1
|
||||
out-lit: sizeof( test::Wrmrmpft<test::Murpf> ) = 1
|
||||
out-lit: sizeof( test::Wrmrmpft<test::Murpf> ) = 1
|
||||
out-lit: sizeof( test::Wrmrmpft<test::Murpf> ) = 1
|
||||
END
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ out: doIt
|
|||
out: 13
|
||||
out: 14
|
||||
out: doIt
|
||||
out: sizeof.+lib.+test.+ExampleCustomType123.+ = [248]
|
||||
out: sizeof. ExampleCustomType123 . = [248]
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
|
@ -176,32 +176,38 @@ 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-lit: -----filter-distinct-values---vector<int>
|
||||
out-lit: iter::eachDistinct
|
||||
out-lit: iter::eachDistinct::1
|
||||
out-lit: iter::eachDistinct::1::2::3::1
|
||||
out-lit: iter::eachDistinct::1::2::3::1
|
||||
out-lit: -----iterateMapKeyVal---map<int, int>
|
||||
out-lit: iter::eachKey::0::1::2::3::4::5::6::7::8::9
|
||||
out-lit: iter::eachKey::0::1::2::3::4::5::6::7::8::9
|
||||
out-lit: iter::eachVal::0::2::4::6::8::10::12::14::16::18
|
||||
out-lit: iter::eachVal::0::2::4::6::8::10::12::14::16::18
|
||||
out-lit: iter::eachDistinctKey::0::1::2::3::4::5::6::7::8::9
|
||||
out-lit: -----iterateMapKeyVal---unordered_map<int, int>
|
||||
out: iter::eachKey::.::.::.::.::.::.::.::.::.::.
|
||||
out: iter::eachVal::.+
|
||||
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-lit: -----iterateMapKeyVal---multimap<int, int>
|
||||
out-lit: 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-lit: 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-lit: 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-lit: 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-lit: iter::eachDistinctKey::0::1::2::3::4::5::6::7::8::9
|
||||
out-lit: -----iterateMapKeyVal---unordered_multimap<int, int>
|
||||
out: iter::eachKey::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.::.
|
||||
out: iter::eachVal::.+
|
||||
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
|
||||
out-lit: -----iterateValues4Key---multimap<int, int>
|
||||
out-lit: iter::eachValForKey::10::9::8::7::6::5::4::3::2::1
|
||||
out-lit: -----iterateValues4Key---unordered_multimap<int, int>
|
||||
out: iter::eachValForKey::.+::.+::.+::.+::.+::.+::.+::.+::.+::.+
|
||||
out-lit: snapshot-0-1-2-3-4-5-6-7-8-9
|
||||
out-lit: snapshot-0-1-2-3-4-5-6-7-8-9
|
||||
out-lit: snapshot-22-44
|
||||
END
|
||||
|
||||
|
||||
|
|
@ -297,32 +303,32 @@ TEST "Variadic template diagnostics" TestHelperVariadic_test <<END
|
|||
out-lit: --no-arg--
|
||||
out-lit: :.
|
||||
out-lit: --value--
|
||||
out: .+#1.+ Type: d VAL Address. 0x.+
|
||||
out: .+#1.+ Type: double VAL Address. 0x.+
|
||||
out-lit: :.
|
||||
out-lit: --reference--
|
||||
out: .+#1.+ Type: d REF Address. 0x.+
|
||||
out: .+#1.+ Type: double REF Address. 0x.+
|
||||
out-lit: :.
|
||||
out-lit: --move--
|
||||
out: .+#1.+ Type: d MOV Address. 0x.+
|
||||
out: .+#1.+ Type: double 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: .+#2.+ Type: char REF Address. 0x.+
|
||||
out: .+#1.+ Type: long 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: .+#3.+ Type: double REF Address. 0x.+
|
||||
out: .+#2.+ Type: double REF Address. 0x.+
|
||||
out: .+#1.+ Type: double MOV Address. 0x.+
|
||||
out-lit: :.
|
||||
out-lit: --baseclass--
|
||||
out: .+#1.+ Type: .+lib.test.test.+Interface. REF Address. 0x.+
|
||||
out: .+#1.+ Type: Impl REF Address. 0x.+
|
||||
out-lit: :.
|
||||
END
|
||||
|
||||
|
||||
TEST "Helper to show demangled C++ names" TypeDemangling_test <<END
|
||||
out: .+lib.test.test.Space.+Outer.+Inner
|
||||
out-lit: lib::test::test::Space const* (*)(lib::test::test::Outer<lib::test::test::Space>::Inner const&&)
|
||||
out: .+lib.meta.test.Space.+Outer.+Inner
|
||||
out-lit: lib::meta::test::Space const* (*)(lib::meta::test::Outer<lib::meta::test::Space>::Inner const&&)
|
||||
END
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -25,59 +25,62 @@ 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: can_use_conversion<E*,F*> = 0
|
||||
out-lit: can_use_dynamic_downcast<E*,F*> = 1
|
||||
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: Access\(D as D&\) .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access\(D& as D&\) .+D.. adr=╲\w{8} ↗«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: Access.D as D. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.D& as D. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.D&& as D. .+D.. adr=╲\w{8} ↗«D»
|
||||
out-lit: === take a pointer ===
|
||||
out: Access.D as D\*. .+0x.+
|
||||
out: Access.D& as D\*. .+0x.+
|
||||
out: Access.D as D\*. .+╲\w{8}
|
||||
out: Access.D& as D\*. .+╲\w{8}
|
||||
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: Access.D\* as D&. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.D\* as D. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.D\*&& as D. .+D.. adr=╲\w{8} ↗«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: Access.D as D const&. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.D& as D const&. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.D as const D. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.D& as const D. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.D as const D\*. .+╲\w{8}
|
||||
out: Access.D& as const D\*. .+╲\w{8}
|
||||
out: Access.D\* as D const&. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.D\* as const D. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.const D as D const&. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.D const& as D const&. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.const D as const D. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.D const& as const D. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.const D as const D\*..+╲\w{8}
|
||||
out: Access.D const& as const D\*..+╲\w{8}
|
||||
out: Access.const D\* as D const&..+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.const D\* as const D. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.D const& as D. .+D.. adr=╲\w{8} ↗«D»
|
||||
out: Access.D const&& as D. .+D.. adr=╲\w{8} ↗«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: Access.B& as B&. .+B.. adr=╲\w{8} ↗«B»
|
||||
out: Access.D& as B&. .+B.. adr=╲\w{8} ↗«B»
|
||||
out: Access.B\* as B\*. .+╲\w{8}
|
||||
out: Access.D\* as B\*. .+╲\w{8}
|
||||
out: Access.D& as B\*. .+╲\w{8}
|
||||
out: Access.D\* as B&. .+B.. adr=╲\w{8} ↗«B»
|
||||
out: Access.B\*& as B\*&. .+╲\w{8}
|
||||
out: Access.D\*& as D\*&. .+╲\w{8}
|
||||
out: Access.D& as const B\*. .+╲\w{8}
|
||||
out: Access.D\* as B const&. .+B.. adr=╲\w{8} ↗«B»
|
||||
out: Access.D const& as const B\*..+╲\w{8}
|
||||
out: Access.const D\* as B const&..+B.. adr=╲\w{8} ↗«B»
|
||||
out: Access.E\(F\)& as F&. .+F.. adr=╲\w{8} ↗«F»
|
||||
out: Access.E\(F\)\* as F\*. .+╲\w{8}
|
||||
out: Access.E\(F\)\* as F&. .+F.. adr=╲\w{8} ↗«F»
|
||||
out: Access.E\(F\)& as F\*. .+╲\w{8}
|
||||
out: Access.F\\* as X\*. .+╲\w{8}
|
||||
out: Access.X\(F\)\* as X\*. .+╲\w{8}
|
||||
out: Access.F\* as B&. .+B.. adr=╲\w{8} ↗«B»
|
||||
out: Access.F\* as E&*. .+E.. adr=╲\w{8} ↗«F»
|
||||
out-lit: Access(int as double) --->2
|
||||
out-lit: Access(float as long) --->3
|
||||
END
|
||||
|
|
@ -172,32 +175,33 @@ 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
|
||||
out-lit: Digxel<int, digxel::Formatter<int> >--empty-- 0--(val=123)--123|
|
||||
out-lit: Digxel<double, digxel::Formatter<double> >--empty--00.000--(val=123.457)--123.457|
|
||||
out-lit: Digxel<int, digxel::SexaFormatter>--empty--00--(val=42)--42|
|
||||
out-lit: Digxel<int, digxel::SexaFormatter>--empty--00--(val=-5)---5|
|
||||
out-lit: Digxel<unsigned int, digxel::HexaFormatter>--empty--00--(val=12)--0C|
|
||||
out-lit: Digxel<unsigned int, digxel::HexaFormatter>--empty--00--(val=111)--6F|
|
||||
out-lit: Digxel<long, digxel::CountFormatter>--empty--0000--(val=-1234567890)---1234567890|
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
||||
TEST "plain entry-ID" EntryID_test <<END
|
||||
out: ID<Dummy>-Dummy.0..
|
||||
out: ID<Dummy>-strange
|
||||
out: ID<Dummy>-Dummy.0..
|
||||
out: ID<Fork>-Fork.0..
|
||||
out: ID<Fork>-special
|
||||
out: sizeof\( idi::EntryID<Fork> \) .+ =
|
||||
out: sizeof\( idi::BareEntryID \) .+ =
|
||||
END
|
||||
|
||||
|
||||
TEST "formatting/string conversion in output" FormatCOUT_test <<END
|
||||
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-lit: 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
|
||||
|
||||
|
|
@ -205,12 +209,12 @@ 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: «test::FormatString_test::Silent»
|
||||
out-lit: __nix_
|
||||
out-lit: ____
|
||||
out-lit: __1__
|
||||
out-lit: __1__
|
||||
out-lit: __↯__
|
||||
out-lit: __⟂__
|
||||
out-lit: __dirt__
|
||||
out-lit: __1234__
|
||||
out-lit: __0xff__
|
||||
|
|
@ -260,15 +264,15 @@ END
|
|||
TEST "Generic Record data node" GenNodeBasic_test <<END
|
||||
out: GenNode.+_CHILD_Record.+Rec.spam..ham = DataCap.+eggs
|
||||
out-lit: --spam--
|
||||
out: GenNode.+"baked beans".+Rec...hasSpam = DataCap.«bool».+«char».+«std::string».*«double».+GenNode.+"spam".+«lib::diff::Record<lib::diff::GenNode>».+«std::string».eggs.+«std::string».spam.+«std::string».spam
|
||||
out: GenNode.+"hasSpam".+«bool».1
|
||||
out: GenNode.+"baked beans".+Rec...hasSpam = DataCap.«bool».true.+«char».+«string».*«double».+GenNode.+"spam".+«Record<GenNode>».+«string».eggs.+«string».spam.+«string».spam
|
||||
out: GenNode.+"hasSpam".+«bool».true
|
||||
out: GenNode.+_CHILD_char.+«char».\*
|
||||
out: GenNode.+_CHILD_string.+«std::string».★
|
||||
out: GenNode.+_CHILD_string.+«string».★
|
||||
out: GenNode.+_CHILD_double.+«double».3.1415927
|
||||
out: GenNode.+"spam".+«lib::diff::Record<lib::diff::GenNode>».Rec.ham.+eggs.+spam.+spam
|
||||
out: GenNode.+_CHILD_string.+«std::string».eggs
|
||||
out: GenNode.+_CHILD_string.+«std::string».spam
|
||||
out: GenNode.+_CHILD_TimeSpan.+«lib::time::TimeSpan»
|
||||
out: GenNode.+"spam".+«Record<GenNode>».Rec.ham.+eggs.+spam.+spam
|
||||
out: GenNode.+_CHILD_string.+«string».eggs
|
||||
out: GenNode.+_CHILD_string.+«string».spam
|
||||
out: GenNode.+_CHILD_TimeSpan.+«TimeSpan»|0:00:00.000≺920ms≻
|
||||
out: GenNode.+_CHILD_long.+«long.+42
|
||||
return: 0
|
||||
END
|
||||
|
|
@ -280,7 +284,7 @@ END
|
|||
|
||||
|
||||
TEST "Generic recursive mutation with closure binding" GenericTreeMutator_test <<END
|
||||
out: concrete TreeMutator .+Builder<.+ChangeOperation<.+TreeMutator, .+string
|
||||
out: concrete TreeMutator .+Builder<ChangeOperation<TreeMutator, test::GenericTreeMutator_test::simpleAttributeBinding().+lambda\(string\).+> >
|
||||
out-lit: "data" closure received something that would be acceptable
|
||||
out-lit: localData changed to: that would be acceptable
|
||||
return: 0
|
||||
|
|
@ -339,7 +343,9 @@ out: 1
|
|||
out: 3
|
||||
out: 5
|
||||
out: 7
|
||||
out: sizeof\( .+ \) = .*[12468]{1,2}
|
||||
out: sizeof\( Base . =.+[12468]{1,2}
|
||||
out: sizeof\( Special . =.+[12468]{1,2}
|
||||
out: sizeof\( OpaqueHolder<Base, ........ =.+[12468]{1,2}
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
|
@ -354,7 +360,7 @@ END
|
|||
|
||||
|
||||
TEST "inline val/ref wrapper" ItemWrapper_test <<END
|
||||
out: ItemWrapper: sizeof\( .+ItemWrapper.+ ) =
|
||||
out: ItemWrapper: sizeof\( wrapper::ItemWrapper<.+ = .
|
||||
END
|
||||
|
||||
|
||||
|
|
@ -479,9 +485,10 @@ END
|
|||
|
||||
TEST "Symbol_test" Symbol_test <<END
|
||||
out: one
|
||||
out: sizeof.+lib.Literal.+ = (4|8)
|
||||
out: Ss
|
||||
out: one\.\.\.\.one
|
||||
out: sizeof. Literal.+ = (4|8)
|
||||
out-lit: string
|
||||
out-lit: string
|
||||
out-lit: one....one
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
|
@ -509,7 +516,7 @@ END
|
|||
|
||||
|
||||
TEST "integer scale wrapping utility" UtilFloorwrap_test <<END
|
||||
out-lit: --------i--------12/4
|
||||
out-lit: --------int--------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)
|
||||
|
|
@ -535,7 +542,7 @@ 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: --------int--------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)
|
||||
|
|
@ -561,7 +568,7 @@ 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: --------long--------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)
|
||||
|
|
@ -587,7 +594,7 @@ 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: --------long--------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)
|
||||
|
|
@ -628,10 +635,10 @@ END
|
|||
|
||||
|
||||
TEST "typesafe Variant record" Variant_test <<END
|
||||
out: Variant.«bool».0
|
||||
out: Variant.«bool».false
|
||||
out: Variant.«int».11
|
||||
out: Variant.«std::string».lololo
|
||||
out: Variant.«lib::time::Time».0:00:00.000
|
||||
out: Variant.«string».lololo
|
||||
out: Variant.«Time».0:00:00.000
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
|
|
|||
|
|
@ -37,11 +37,11 @@ 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.n7lumiera6advice4test12_GLOBAL__N_111DummyAdviceE/0(), one/0(), three/1(four), two/0()]
|
||||
out-lit: Binding[advice.type.dummyAdvice/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.n3lib4time4TimeE/0(), cat1/0(), cat2/0(), cat3/1(zzz)]
|
||||
out-lit: b2==Binding[advice.type.time/0(), cat1/0(), cat2/0(), cat3/1(zzz)]
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
|
@ -123,21 +123,21 @@ END
|
|||
|
||||
|
||||
TEST "Life changing time specifications with feedback" TimeControl_test <<END
|
||||
out: Test-Case. Target=.+time.Duration. <--feed--- .+time.TimeValue.$
|
||||
out: Test-Case. Target=.+time.Duration. <--feed--- .+time.Time.$
|
||||
out: Test-Case. Target=.+time.Duration. <--feed--- .+time.Duration.$
|
||||
out: Test-Case. Target=.+time.Duration. <--feed--- .+time.TimeSpan.$
|
||||
out: Test-Case. Target=.+time.Duration. <--feed--- .+time.QuTime.$
|
||||
out: Test-Case. Target=.+time.TimeSpan. <--feed--- .+time.TimeValue.$
|
||||
out: Test-Case. Target=.+time.TimeSpan. <--feed--- .+time.Time.$
|
||||
out: Test-Case. Target=.+time.TimeSpan. <--feed--- .+time.Duration.$
|
||||
out: Test-Case. Target=.+time.TimeSpan. <--feed--- .+time.TimeSpan.$
|
||||
out: Test-Case. Target=.+time.TimeSpan. <--feed--- .+time.QuTime.$
|
||||
out: Test-Case. Target=.+time.QuTime. <--feed--- .+time.TimeValue.$
|
||||
out: Test-Case. Target=.+time.QuTime. <--feed--- .+time.Time.$
|
||||
out: Test-Case. Target=.+time.QuTime. <--feed--- .+time.Duration.$
|
||||
out: Test-Case. Target=.+time.QuTime. <--feed--- .+time.TimeSpan.$
|
||||
out: Test-Case. Target=.+time.QuTime. <--feed--- .+time.QuTime.$
|
||||
out-lit: Test-Case. Target=Duration <--feed--- TimeValue
|
||||
out-lit: Test-Case. Target=Duration <--feed--- Time
|
||||
out-lit: Test-Case. Target=Duration <--feed--- Duration
|
||||
out-lit: Test-Case. Target=Duration <--feed--- TimeSpan
|
||||
out-lit: Test-Case. Target=Duration <--feed--- QuTime
|
||||
out-lit: Test-Case. Target=TimeSpan <--feed--- TimeValue
|
||||
out-lit: Test-Case. Target=TimeSpan <--feed--- Time
|
||||
out-lit: Test-Case. Target=TimeSpan <--feed--- Duration
|
||||
out-lit: Test-Case. Target=TimeSpan <--feed--- TimeSpan
|
||||
out-lit: Test-Case. Target=TimeSpan <--feed--- QuTime
|
||||
out-lit: Test-Case. Target=QuTime <--feed--- TimeValue
|
||||
out-lit: Test-Case. Target=QuTime <--feed--- Time
|
||||
out-lit: Test-Case. Target=QuTime <--feed--- Duration
|
||||
out-lit: Test-Case. Target=QuTime <--feed--- TimeSpan
|
||||
out-lit: Test-Case. Target=QuTime <--feed--- QuTime
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
|
|
|||
|
|
@ -33,19 +33,6 @@ return: 0
|
|||
END
|
||||
|
||||
|
||||
TEST "plain entry-ID" EntryID_test <<END
|
||||
out-lit: ID<Dummy>-Dummy.001
|
||||
out-lit: ID<Dummy>-strange
|
||||
out-lit: ID<Dummy>-Dummy.002
|
||||
out-lit: ID<Fork>-Fork.001
|
||||
out-lit: ID<Fork>-Fork.002
|
||||
out-lit: ID<Fork>-special
|
||||
out: sizeof\( ..lib.idi.EntryID.+mobject.+session.+Fork.+ \) =
|
||||
out: sizeof\( ..lib.idi.+BareEntryID. \) =
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
||||
PLANNED "ID to type association" TypedID_test <<END
|
||||
return: 0
|
||||
END
|
||||
|
|
|
|||
|
|
@ -43,42 +43,43 @@ END
|
|||
|
||||
TEST "external MObject references" MObjectRef_test <<END
|
||||
out: MRef-NIL
|
||||
out: sizeof\( .+MORef.+session.Clip.+ \) = (32|24)
|
||||
out: Placement<.+Clip.> .......... use-cnt=4
|
||||
out: sizeof\( MORef<Clip> \) = (32|24)
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: Asset\(VIDEO:lumi.test-1 v1\)
|
||||
out: Placement<.+Clip.> .......... use-cnt=4
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: MRef-NIL
|
||||
out: sizeof\( .+MORef.+session.Clip.+ \) = (32|24)
|
||||
out: Placement<.+Clip.> .......... use-cnt=4
|
||||
out: sizeof\( MORef<Clip> \) = (32|24)
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: Asset\(VIDEO:lumi.test-2 v1\)
|
||||
out: Placement<.+Clip.> .......... use-cnt=4
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: MRef-NIL
|
||||
out: sizeof\( .+MORef.+session.Clip.+ \) = (32|24)
|
||||
out: Placement<.+Clip.> .......... use-cnt=4
|
||||
out: sizeof\( MORef<Clip> \) = (32|24)
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: Asset\(VIDEO:lumi.test-1 v1\)
|
||||
out: Placement<.+Clip.> .......... use-cnt=4
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: MRef-NIL
|
||||
out: sizeof\( .+MORef.+session.Clip.+ \) = (32|24)
|
||||
out: Placement<.+Clip.> .......... use-cnt=4
|
||||
out: sizeof\( MORef<Clip> \) = (32|24)
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: Asset\(VIDEO:lumi.test-2 v1\)
|
||||
out: Placement<.+Clip.> .......... use-cnt=4
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: MRef-NIL
|
||||
out: sizeof\( .+MORef.+session.Clip.+ \) = (32|24)
|
||||
out: Placement<.+Clip.>.+ use-cnt=4
|
||||
out: sizeof\( MORef<Clip> \) = (32|24)
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: Asset\(VIDEO:lumi.test-1 v1\)
|
||||
out: Placement<.+Clip.> .......... use-cnt=4
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: MRef-NIL
|
||||
out: sizeof\( .+MORef.+session.Clip.+ \) = (32|24)
|
||||
out: Placement<.+Clip.> .......... use-cnt=4
|
||||
out: sizeof\( MORef<Clip> \) = (32|24)
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: Asset\(VIDEO:lumi.test-1 v1\)
|
||||
out: Placement<.+Clip.> .......... use-cnt=4
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: MRef-NIL
|
||||
out: sizeof\( .+MORef.+session.Clip.+ \) = (32|24)
|
||||
out: Placement<.+Clip.> .......... use-cnt=4
|
||||
out: sizeof\( MORef<Clip> \) = (32|24)
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: Asset\(VIDEO:lumi.test-2 v1\)
|
||||
out: Placement<.+Clip.> .......... use-cnt=4
|
||||
out: Placement<.+Clip.> .......... use-cnt=5
|
||||
out: Placement<Clip> .................................. use-cnt=4 ID.\w{16}
|
||||
out: Placement<Clip> .................................. use-cnt=5 ID.\w{16}
|
||||
out: \(VIDEO:lumi.test-1 v1\)
|
||||
|
||||
END
|
||||
|
||||
|
||||
|
|
@ -91,35 +92,36 @@ END
|
|||
|
||||
|
||||
TEST "hierarchical placement types" PlacementHierarchy_test <<END
|
||||
out: sizeof\( .+ \) = [0-9]{2}
|
||||
out: Placement.+mobject.+test.+TestSubMO1.+. use-cnt=1 .*
|
||||
out: Placement.+mobject.+test.+TestSubMO2.+. use-cnt=1 .*
|
||||
out: Placement.+mobject.+test.+TestSubMO21.+ use-cnt=2 .*
|
||||
out: Placement.+mobject.+session.+Clip.+.... use-cnt=2 .*
|
||||
out: TestSubMO1\(ID=[0-9]{3}\)
|
||||
out: TestSubMO2\(ID=[0-9]{3}\)
|
||||
out: TestSubMO21\(ID=[0-9]{3}\)
|
||||
out: sizeof\( test::TestPlacement<test::TestSubMO1, test::DummyMO> \) = [0-9]{2}
|
||||
out: sizeof\( test::TestPlacement<test::TestSubMO2, test::DummyMO> \) = [0-9]{2}
|
||||
out: sizeof\( test::TestPlacement<test::TestSubMO21, test::TestSubMO2> \) = [0-9]{2}
|
||||
out: sizeof\( test::TestPlacement<test::DummyMO, test::DummyMO> \) = [0-9]{2}
|
||||
out: sizeof\( Placement<MObject, MObject> \) = [0-9]{2}
|
||||
out: Placement<test::TestSubMO1> ...................... use-cnt=1 ID.\w{16}
|
||||
out: Placement<test::TestSubMO2> ...................... use-cnt=1 ID.\w{16}
|
||||
out: Placement<test::TestSubMO21> ..................... use-cnt=2 ID.\w{16}
|
||||
out: Placement<Clip> .................................. use-cnt=2 ID.\w{16}
|
||||
out: specialAPI()
|
||||
out: pID\(\w{6,16}\)
|
||||
END
|
||||
|
||||
|
||||
TEST "PlacementRef_test" PlacementRef_test <<END
|
||||
out: Placement<.+TestSubMO21.> ..... use-cnt=2
|
||||
out: Placement<test::TestSubMO21> ..................... use-cnt=2 ID.\w{16}
|
||||
out: specialAPI()
|
||||
END
|
||||
|
||||
|
||||
TEST "Placement Index" PlacementIndex_test <<END
|
||||
out: ^::Placement<.+session.test.TestClip.+ use-cnt=2
|
||||
out: ^::Placement<.+session.test.TestClip.+ use-cnt=6
|
||||
out: ^ ::Placement<.+session.test.TestClip.+ use-cnt=6
|
||||
out: ^ ::Placement<.+session.test.TestClip.+ use-cnt=6
|
||||
out: ^::Placement<test::TestClip> ........................ use-cnt=2
|
||||
out: ^::Placement<test::TestClip> ........................ use-cnt=6
|
||||
out: ^ ::Placement<test::TestClip> ........................ use-cnt=6
|
||||
out: ^ ::Placement<test::TestClip> ........................ use-cnt=6
|
||||
out: ^ ...2 elements at Level 2
|
||||
out: ^ ::Placement<.+session.test.TestClip.+ use-cnt=6
|
||||
out: ^ ::Placement<test::TestClip> ........................ use-cnt=6
|
||||
out: ^ ...3 elements at Level 1
|
||||
out: ^::Placement<.+session.test.TestClip.+ use-cnt=2
|
||||
out: ^ ::Placement<.+session.test.TestClip.+ use-cnt=1
|
||||
out: ^::Placement<test::TestClip> ........................ use-cnt=2
|
||||
out: ^ ::Placement<test::TestClip> ........................ use-cnt=1
|
||||
out: ^ ...1 elements at Level 1
|
||||
out: ^...3 elements at Level 0
|
||||
END
|
||||
|
|
@ -127,69 +129,69 @@ END
|
|||
|
||||
TEST "Querying the index" PlacementIndexQuery_test <<END
|
||||
out: explore contents depth-first...
|
||||
out: Placement<.+TestSubMO2.> ...... use-cnt=1
|
||||
out: Placement<.+TestSubMO1.> ...... use-cnt=1
|
||||
out: Placement<.+DummyMO.> .......... use-cnt=1
|
||||
out: Placement<.+TestSubMO21.> ..... use-cnt=1
|
||||
out: path to root starting at Placement<.+TestSubMO1
|
||||
out: Placement<.+TestSubMO2.> ...... use-cnt=1
|
||||
out: Placement<.+session.Label.> ......... use-cnt=1
|
||||
out: Placement<test::TestSubMO2> ...................... use-cnt=1
|
||||
out: Placement<test::TestSubMO1> ...................... use-cnt=1
|
||||
out: Placement<test::DummyMO> ......................... use-cnt=1
|
||||
out: Placement<test::TestSubMO21> ..................... use-cnt=1
|
||||
out: path to root starting at Placement<test::TestSubMO1> ...................... use-cnt=1
|
||||
out: Placement<test::TestSubMO2> ...................... use-cnt=1
|
||||
out: Placement<Label> ................................. use-cnt=1
|
||||
END
|
||||
|
||||
|
||||
TEST "discovering scopes" ScopeQuery_test <<END
|
||||
out: --------------------------------Test-1: contents depth-first
|
||||
out: Placement<.+TestSubMO2.>
|
||||
out: Placement<.+TestSubMO1.>
|
||||
out: Placement<.+DummyMO.>
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Placement<test::TestSubMO2>
|
||||
out: Placement<test::TestSubMO1>
|
||||
out: Placement<test::DummyMO>
|
||||
out: Placement<test::TestSubMO21>
|
||||
out: --------------------------------Test-2: contents depth-first, filtered to Clip
|
||||
out: --------------------------------Test-3: contents depth-first, filtered to DummyMO
|
||||
out: Placement<.+TestSubMO2.>
|
||||
out: Placement<.+TestSubMO1.>
|
||||
out: Placement<.+DummyMO.>
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Placement<test::TestSubMO2>
|
||||
out: Placement<test::TestSubMO1>
|
||||
out: Placement<test::DummyMO>
|
||||
out: Placement<test::TestSubMO21>
|
||||
out: --------------------------------Test-4: contents depth-first, filtered to TestSubMO1
|
||||
out: Placement<.+TestSubMO1.>
|
||||
out: Placement<test::TestSubMO1>
|
||||
out: --------------------------------Test-5: contents depth-first, filtered to TestSubMO2
|
||||
out: Placement<.+TestSubMO2.>
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Placement<test::TestSubMO2>
|
||||
out: Placement<test::TestSubMO21>
|
||||
out: --------------------------------Test-6: contents depth-first, custom filtered DummyMO
|
||||
out: Placement<.+TestSubMO2.>
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Placement<test::TestSubMO2>
|
||||
out: Placement<test::TestSubMO21>
|
||||
out: --------------------------------Test-7: parents of the second TestSubMO2 element found
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Placement<.+mobject.session.Label.>
|
||||
out: Placement<test::TestSubMO21>
|
||||
out: Placement<Label>
|
||||
out: --------------------------------Test-8: children of the this TestSubMO2 element
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Placement<test::TestSubMO21>
|
||||
out: --------------------------------Test-9: path from there to root
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Placement<.+mobject.session.Label.>
|
||||
out: Placement<test::TestSubMO21>
|
||||
out: Placement<Label>
|
||||
out: --------------------------------Test-10: same path, but filtered to TestSubMO2
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Placement<test::TestSubMO21>
|
||||
out: --------------------------------Test-11: continue exploring partially used TestSubMO2 iterator
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Placement<test::TestSubMO21>
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
||||
TEST "Placement search scope" PlacementScope_test <<END
|
||||
out: Scope: \[Label\.[0-9]{3}\]
|
||||
out: Placement<.+TestSubMO2.>
|
||||
out: Scope: \[DummyMO\.[0-9]{3}\]
|
||||
out: Placement<.+TestSubMO1.>
|
||||
out: Scope: \[Label\.[0-9]{3}\]
|
||||
out: Placement<.+DummyMO.>
|
||||
out: Scope: \[Label\.[0-9]{3}\]
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Scope: \[DummyMO\.[0-9]{3}\]
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Scope: \[DummyMO\.[0-9]{3}\]
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Scope: \[DummyMO\.[0-9]{3}\]
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Scope: \[DummyMO\.[0-9]{3}\]
|
||||
out: Placement<.+TestSubMO21.>
|
||||
out: Scope: \[Label.[0-9]{3}\]
|
||||
out: Placement<test::TestSubMO2>
|
||||
out: Scope: \[DummyMO.[0-9]{3}\]
|
||||
out: Placement<test::TestSubMO1>
|
||||
out: Scope: \[Label.[0-9]{3}\]
|
||||
out: Placement<test::DummyMO>
|
||||
out: Scope: \[Label.[0-9]{3}\]
|
||||
out: Placement<test::TestSubMO21>
|
||||
out: Scope: \[DummyMO.[0-9]{3}\]
|
||||
out: Placement<test::TestSubMO21>
|
||||
out: Scope: \[DummyMO.[0-9]{3}\]
|
||||
out: Placement<test::TestSubMO21>
|
||||
out: Scope: \[DummyMO.[0-9]{3}\]
|
||||
out: Placement<test::TestSubMO21>
|
||||
out: Scope: \[DummyMO.[0-9]{3}\]
|
||||
out: Placement<test::TestSubMO21>
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
|
@ -206,7 +208,7 @@ END
|
|||
|
||||
|
||||
TEST "issuing typed queries" QueryResolver_test <<END
|
||||
out: Query-Results: sizeof\( .+IterAdapter.+Cursor.+shared_ptr.+Resolution
|
||||
out: Query-Results: sizeof\( IterAdapter<Query<int>::Cursor, shared_ptr<Resolution> >
|
||||
out: ^6
|
||||
out: ^5
|
||||
out: ^4
|
||||
|
|
@ -214,7 +216,7 @@ out: ^3
|
|||
out: ^2
|
||||
out: ^1
|
||||
out: ^0
|
||||
out: Query-Results: sizeof\( .+IterAdapter.+Cursor.+shared_ptr.+Resolution
|
||||
out: Query-Results: sizeof\( IterAdapter<Query<string>::Cursor, shared_ptr<Resolution> >
|
||||
out: ^a
|
||||
out: ^ra
|
||||
out: ^era
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ out: would be serialised.....Command-State. arguments=Closure\(\), ·noUNDO·.
|
|||
out: would be serialised.....Command-State. arguments=Closure\(.\), ·noUNDO·.
|
||||
out: would be serialised.....Command-State. arguments=Closure\(.,.+s.*\), ·noUNDO·.
|
||||
out: would be serialised.....Command-State. arguments=Closure\(.+s.*,glorious,..\), <mem: destruction>.
|
||||
out: sizeof\( .+control1.ArgumentHolder.+ \) = .+
|
||||
out: sizeof\( control::ArgumentHolder<void \(Tracker<TimeVar>, Tracker<string>, int\), Tracker<string> > \) = [0-9]{2,3}
|
||||
out: Command-State. arguments=Closure\(.+s.*,Lumiera rocks,..\), ·noUNDO·.
|
||||
out: capture state...
|
||||
out: captured state: START...Lumiera rocks
|
||||
|
|
@ -36,8 +36,8 @@ END
|
|||
|
||||
|
||||
TEST "build argument accepting function" ArgumentTupleAccept_test <<END
|
||||
out: sizeof\( .+control.+TestClass.+ \) = 1
|
||||
out: sizeof\( .+control.+TestClass.+lib.time.TimeVar.+ \) = (12|16)
|
||||
out: sizeof\( TestClass<void \(\)> \) = 1
|
||||
out: sizeof\( TestClass<int \(TimeVar, int\)> \) = (12|16)
|
||||
out: .+s
|
||||
return: 0
|
||||
END
|
||||
|
|
|
|||
|
|
@ -262,8 +262,15 @@ namespace test {
|
|||
index.clear (e1321);
|
||||
CHECK (!index.contains (e1321));
|
||||
CHECK (!index.contains (e13211));
|
||||
CHECK (!index.contains (e13212));
|
||||
CHECK (!index.contains (e13213));
|
||||
CHECK (!index.contains (e132131));
|
||||
CHECK (!index.contains (e132132));
|
||||
CHECK (!index.contains (e132133));
|
||||
CHECK (!index.contains (e132134));
|
||||
CHECK (!index.contains (e132141));
|
||||
CHECK (!index.contains (e132142));
|
||||
CHECK (!index.contains (e132143));
|
||||
CHECK (!index.contains (e132144));
|
||||
CHECK (siz == index.size());
|
||||
CHECK (index.isValid());
|
||||
|
|
@ -275,6 +282,14 @@ namespace test {
|
|||
|
||||
/** @test drill down into the tree-like structure
|
||||
* and enumerate the contents of each element, if any
|
||||
* @note at this point, our test index holds 9 Placements,
|
||||
* which actually refer to 3 distinct TestClip objects
|
||||
* - two where installed into root scope in `checkSimpleAccess()`
|
||||
* - one was installed below one of the above in `checkTypedAccess()`
|
||||
* - `checkScopeHandling()` left back 6 instances, all pointing
|
||||
* to the same TestClip.
|
||||
* This can be verified in the test output (look at the
|
||||
* `use-cnt` and the actual address of the pointee
|
||||
*/
|
||||
void
|
||||
checkContentsEnumeration (Idx index)
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@ namespace test{
|
|||
symbolReference()
|
||||
{
|
||||
GenNode ham = MakeRec().type("spam").attrib("τ", Time(23,42)).genNode("egg bacon sausage and spam");
|
||||
|
||||
|
||||
GenNode::ID hamID(ham);
|
||||
CHECK (hamID == ham.idi);
|
||||
CHECK (hamID.getSym() == ham.idi.getSym());
|
||||
|
|
@ -286,7 +286,7 @@ namespace test{
|
|||
CHECK (2 == iter.level()); // delve into the contents,
|
||||
CHECK ("hasSpam" == iter->idi.getSym()); // ...starting with the attribute(s)
|
||||
CHECK (true == iter->data.get<bool>());
|
||||
CHECK ("GenNode-ID(\"hasSpam\")-DataCap|«bool»|1" == string(*iter));
|
||||
CHECK ("GenNode-ID(\"hasSpam\")-DataCap|«bool»|true" == string(*iter));
|
||||
|
||||
++iter;
|
||||
CHECK (!iter->isNamed()); // contents of the object's scope
|
||||
|
|
@ -318,7 +318,7 @@ namespace test{
|
|||
++iter;
|
||||
CHECK (2 == iter.level()); // decreasing level indicates we left nested scope
|
||||
CHECK (!iter->isNamed()); // next item in the enclosing scope
|
||||
CHECK ("0:00:00.000[920ms]" == string(iter->data.get<TimeSpan>()));
|
||||
CHECK ("0:00:00.000≺920ms≻" == string(iter->data.get<TimeSpan>()));
|
||||
++iter;
|
||||
CHECK (!iter->isNamed());
|
||||
CHECK (42 == iter->data.get<int64_t>());
|
||||
|
|
|
|||
|
|
@ -104,8 +104,7 @@ namespace test{
|
|||
void
|
||||
verify_fullTypeID()
|
||||
{
|
||||
//////TODO this should be a identifier with only letters, numbers and underscores. Need to extend the util::sanitise
|
||||
CHECK("lib::idi::test::(anonymous_namespace)::Somelib::idi::test::(anonymous_namespace)::Thing" == typeFullID<SomeThing>());
|
||||
CHECK("Some_Thing" == typeFullID<SomeThing>());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ namespace test {
|
|||
|
||||
ostream& operator<< (ostream& s, const B& b) { return s << "B{} adr="<<&b; }
|
||||
ostream& operator<< (ostream& s, const D& d) { return s << "D{} adr="<<&d; }
|
||||
ostream& operator<< (ostream& s, const E& e) { return s << "E{} adr="<<&e; }
|
||||
ostream& operator<< (ostream& s, const F& f) { return s << "F{} adr="<<&f; }
|
||||
|
||||
}//(End)Test fixture
|
||||
|
|
@ -141,6 +142,8 @@ namespace test {
|
|||
cout << "can_use_conversion<D*&,D*&> = " << can_use_conversion<D*&,D*&>::value <<endl;
|
||||
cout << "can_use_conversion<D*,E*> = " << can_use_conversion<D*,E*>::value <<endl;
|
||||
cout << "can_use_dynamic_downcast<D*&,E*> = " << can_use_dynamic_downcast<D*&,E*>::value <<endl;
|
||||
cout << "can_use_conversion<E*,F*> = " << can_use_conversion<E*,F*>::value <<endl;
|
||||
cout << "can_use_dynamic_downcast<E*,F*> = " << can_use_dynamic_downcast<E*,F*>::value <<endl;
|
||||
|
||||
|
||||
|
||||
|
|
@ -172,14 +175,14 @@ namespace test {
|
|||
// AccessCasted<D&&>::access(pD); // should not move away a value accessed through a pointer, there might be other users
|
||||
|
||||
cout << "=== const correctness ==="<<endl;
|
||||
cout << "Access(D as D const&) --->" << AccessCasted<D const&>::access(d) <<endl;
|
||||
cout << "Access(D& as D const&) --->" << AccessCasted<D const&>::access(rD) <<endl;
|
||||
cout << "Access(D as const D) --->" << AccessCasted<const D>::access(d) <<endl;
|
||||
cout << "Access(D& as const D) --->" << AccessCasted<const D>::access(rD) <<endl;
|
||||
cout << "Access(D as const D*) --->" << AccessCasted<const D*>::access(d) <<endl;
|
||||
cout << "Access(D& as const D*) --->" << AccessCasted<const D*>::access(rD) <<endl;
|
||||
cout << "Access(D* as D const&) --->" << AccessCasted<D const&>::access(pD) <<endl;
|
||||
cout << "Access(D* as const D) --->" << AccessCasted<const D>::access(pD) <<endl;
|
||||
cout << "Access(D as D const&) --->" << AccessCasted<D const&>::access(d) <<endl;
|
||||
cout << "Access(D& as D const&) --->" << AccessCasted<D const&>::access(rD) <<endl;
|
||||
cout << "Access(D as const D) --->" << AccessCasted<const D>::access(d) <<endl;
|
||||
cout << "Access(D& as const D) --->" << AccessCasted<const D>::access(rD) <<endl;
|
||||
cout << "Access(D as const D*) --->" << AccessCasted<const D*>::access(d) <<endl;
|
||||
cout << "Access(D& as const D*) --->" << AccessCasted<const D*>::access(rD) <<endl;
|
||||
cout << "Access(D* as D const&) --->" << AccessCasted<D const&>::access(pD) <<endl;
|
||||
cout << "Access(D* as const D) --->" << AccessCasted<const D>::access(pD) <<endl;
|
||||
const D cD(d);
|
||||
D const& rcD(d);
|
||||
const D* pcD(&cD);
|
||||
|
|
@ -204,14 +207,14 @@ namespace test {
|
|||
// AccessCasted<D*>::access(move(cD)); // and same for taking pointer from a moved value.
|
||||
|
||||
cout << "=== work cases: actual conversions ==="<<endl;
|
||||
cout << "Access(B& as B&) --->" << AccessCasted<B&>::access(rB) <<endl;
|
||||
cout << "Access(D& as B&) --->" << AccessCasted<B&>::access(rD) <<endl;
|
||||
cout << "Access(B* as B*) --->" << AccessCasted<B*>::access(pB) <<endl;
|
||||
cout << "Access(D* as B*) --->" << AccessCasted<B*>::access(pD) <<endl;
|
||||
cout << "Access(D& as B*) --->" << AccessCasted<B*>::access(rD) <<endl;
|
||||
cout << "Access(D* as B&) --->" << AccessCasted<B&>::access(pD) <<endl;
|
||||
cout << "Access(B*& as B*&) --->" << AccessCasted<B*&>::access(rpB) <<endl;
|
||||
cout << "Access(D*& as D*&) --->" << AccessCasted<D*&>::access(rpD) <<endl;
|
||||
cout << "Access(B& as B&) --->" << AccessCasted<B&>::access(rB) <<endl;
|
||||
cout << "Access(D& as B&) --->" << AccessCasted<B&>::access(rD) <<endl;
|
||||
cout << "Access(B* as B*) --->" << AccessCasted<B*>::access(pB) <<endl;
|
||||
cout << "Access(D* as B*) --->" << AccessCasted<B*>::access(pD) <<endl;
|
||||
cout << "Access(D& as B*) --->" << AccessCasted<B*>::access(rD) <<endl;
|
||||
cout << "Access(D* as B&) --->" << AccessCasted<B&>::access(pD) <<endl;
|
||||
cout << "Access(B*& as B*&) --->" << AccessCasted<B*&>::access(rpB) <<endl;
|
||||
cout << "Access(D*& as D*&) --->" << AccessCasted<D*&>::access(rpD) <<endl;
|
||||
cout << "Access(D& as const B*) --->" << AccessCasted<const B*>::access(rD) <<endl;
|
||||
cout << "Access(D* as B const&) --->" << AccessCasted<B const&>::access(pD) <<endl;
|
||||
cout << "Access(D const& as const B*) --->" << AccessCasted<const B*>::access(rcD) <<endl;
|
||||
|
|
@ -226,13 +229,14 @@ namespace test {
|
|||
// AccessCasted<E*>::access(pDE); // same here, since E has RTTI but D hasn't, we have no way to find out the real type
|
||||
|
||||
VERIFY_ERROR (WRONG_TYPE, AccessCasted<F&>::access(rE)); // allowed by typing, but fails at runtime since it isn't an F-object
|
||||
cout << "Access(E(F)& as F&) --->" << AccessCasted<F&>::access(rEF) <<endl;
|
||||
cout << "Access(E(F)* as F*) --->" << AccessCasted<F*>::access(pEF) <<endl;
|
||||
cout << "Access(E(F)* as F&) --->" << AccessCasted<F&>::access(pEF) <<endl;
|
||||
cout << "Access(E(F)& as F*) --->" << AccessCasted<F*>::access(pEF) <<endl;
|
||||
cout << "Access(F* as X*) --->" << AccessCasted<X*>::access(pF) <<endl; // upcast to the other mixin is OK
|
||||
cout << "Access(X(F)* as X*) --->" << AccessCasted<X*>::access(pXF) <<endl; // (and note: address adjustment due to mixin layout)
|
||||
cout << "Access(F* as B*) --->" << AccessCasted<B*>::access(pF) <<endl; // upcast to base
|
||||
cout << "Access(E(F)& as F&) --->" << AccessCasted<F&>::access(rEF) <<endl;
|
||||
cout << "Access(E(F)* as F*) --->" << AccessCasted<F*>::access(pEF) <<endl;
|
||||
cout << "Access(E(F)* as F&) --->" << AccessCasted<F&>::access(pEF) <<endl;
|
||||
cout << "Access(E(F)& as F*) --->" << AccessCasted<F*>::access(pEF) <<endl;
|
||||
cout << "Access(F* as X*) --->" << AccessCasted<X*>::access(pF) <<endl; // upcast to the other mixin is OK
|
||||
cout << "Access(X(F)* as X*) --->" << AccessCasted<X*>::access(pXF) <<endl; // (and note: address adjustment due to mixin layout)
|
||||
cout << "Access(F* as B&) --->" << AccessCasted<B&>::access(pF) <<endl; // upcast to base
|
||||
cout << "Access(F* as E&) --->" << AccessCasted<E&>::access(pF) <<endl; // upcast to parent (retaining the RTTI)
|
||||
// AccessCasted<X*>::access(pEF); // cross-cast not supported (to complicated to implement)
|
||||
// AccessCasted<F*>::access(pXF); // downcast not possible, since X does not provide RTTI
|
||||
|
||||
|
|
|
|||
|
|
@ -102,6 +102,7 @@ namespace test{
|
|||
cout << showSizeof(size_t(42),
|
||||
string{"Universe"}) << endl;
|
||||
|
||||
// all the following ways to refer to an object are equivalent...
|
||||
Wrmpf1 *p1 = &rmpf1;
|
||||
Wrmpf1 *p2 = 0;
|
||||
cout << showSizeof(p1) << endl;
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ namespace test{
|
|||
|
||||
CHECK (contains (string(v0), "Variant"));
|
||||
CHECK (contains (string(v0), "bool"));
|
||||
CHECK (contains (string(v0), "0"));
|
||||
CHECK (contains (string(v0), "false"));
|
||||
|
||||
CHECK (contains (string(v1), "Variant"));
|
||||
CHECK (contains (string(v1), "int"));
|
||||
|
|
@ -111,7 +111,7 @@ namespace test{
|
|||
CHECK (contains (string(v2), "lololo"));
|
||||
|
||||
CHECK (contains (string(v3), "Variant"));
|
||||
CHECK (contains (string(v3), "lib::time::Time"));
|
||||
CHECK (contains (string(v3), "Time"));
|
||||
CHECK (contains (string(v3), "0:00:00.000"));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue