Completely removed the nested hierarchy, where the top-level implementation forwarded to yet another sub-implementation of the same interface. Rather, this sub-implementation (OpClosure) is now a mere implementation detail class without VTable, and without half-baked re-implementation of the CmdClosure interface. And the state-switch from unbound to bound arguments is now implemented as a plain-flat boolean flag, instead of hiding it in the VTable. To make this possible, without having to rewrite lots of tests, I've created a clone of StorageHolder as a "proof-of-concept" dummy implementation, for the sole purpose of writing test fixtures. This one behaves similar to the real-world thing, but cares only for closing the command operation and omits all the gory details of memento capturing and undo.
112 lines
3.7 KiB
Text
112 lines
3.7 KiB
Text
TESTING "Component Test Suite: Proc-Layer controller" ./test-suite --group=controller
|
|
|
|
|
|
|
|
|
|
TEST "CommandBasic_test" CommandBasic_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Argument & Memento handling" CommandArgument_test <<END
|
|
out: Command-State. arguments=unbound, ·noUNDO·.
|
|
out: capture state...
|
|
out: Command-State. arguments=OpClosure\(\), ·noUNDO·.
|
|
out: Command-State. arguments=OpClosure\(.\), ·noUNDO·.
|
|
out: Command-State. arguments=OpClosure\(.,.+s.*\), ·noUNDO·.
|
|
out: Command-State. arguments=OpClosure\(.+s.*,glorious,..\), <mem: destruction>.
|
|
out: would be serialised.....Command-State. arguments=OpClosure\(\), ·noUNDO·.
|
|
out: would be serialised.....Command-State. arguments=OpClosure\(.\), ·noUNDO·.
|
|
out: would be serialised.....Command-State. arguments=OpClosure\(.,.+s.*\), ·noUNDO·.
|
|
out: would be serialised.....Command-State. arguments=OpClosure\(.+s.*,glorious,..\), <mem: destruction>.
|
|
out: sizeof\( control::StorageHolder<void \(Tracker<TimeVar>, Tracker<string>, int\), Tracker<string> > \) = [0-9]{2,3}
|
|
out: Command-State. arguments=OpClosure\(.+s.*,Lumiera rocks,..\), ·noUNDO·.
|
|
out: capture state...
|
|
out: captured state: START...Lumiera rocks
|
|
out: Command-State. arguments=OpClosure\(.+s.*,Lumiera rocks,..\), <mem: START...Lumiera rocks>.
|
|
out: invoke operation...
|
|
out: START...doIt\( Time=.+s.* "Lumiera rocks" rand=.. \)
|
|
out: undo... memento=START...Lumiera rocks
|
|
out: START...doIt\( Time=.+s.* "Lumiera rocks" rand=.. \)undoIt\(time=.+s\)----memento-:START...Lumiera rocks
|
|
out: capture state...
|
|
out: modified: Command-State. arguments=OpClosure\(123ms,unbelievable,..\), <mem: START...doIt\( Time=.+s.* "Lumiera rocks" rand=.. \)undoIt\(time=.+s\)----memento-:START...Lumiera rocksLumiera rocks>.
|
|
out: copied : Command-State. arguments=OpClosure\(.+s.*,Lumiera rocks,..\), <mem: START...Lumiera rocks>.
|
|
out: undo... memento=START...doIt\( Time=.+s.* "Lumiera rocks" rand=.. \)undoIt\(time=.+s\)----memento-:START...Lumiera rocksLumiera rocks
|
|
out: RESET...undoIt\(time=.+s\)----memento-:START...doIt\( Time=.+s.* "Lumiera rocks" rand=.. \)undoIt\(time=.+s\)----memento-:START...Lumiera rocksLumiera rocks
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "build argument accepting function" ArgumentTupleAccept_test <<END
|
|
out: sizeof\( TestClass<void \(\)> \) = 1
|
|
out: sizeof\( TestClass<int \(TimeVar, int\)> \) = (12|16)
|
|
out: .+s
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Command functor and UNDO functor" CommandMutation_test <<END
|
|
out-lit: empty placeholder closure: Command-Closure{ arguments=unbound }
|
|
out-lit: param values: Command-Closure{ arguments=OpClosure(23) }
|
|
out-lit: saved state: 11
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Memento wiring and storage" MementoTie_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Opaque cloning of implementation" CommandCloneBuilder_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Equality comparisons" CommandEquality_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Command index and allocation" CommandRegistry_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Handling Pattern basics" HandlingPatternBasics_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
PLANNED "Handling Patterns" HandlingPatternStandardImpl_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Command argument binding" CommandBinding_test <<END
|
|
out: Command\("test.command3.2"\) \{exec\}
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Command usage aspects I" CommandUse1_test <<END
|
|
out: Command\("test.command1.1"\) \{undo\}
|
|
out: Command\("test.command1.2"\) \{undo\}
|
|
out: Command\("test.command1.3"\) \{undo\}
|
|
out: Command\("test.command1.4"\) \{undo\}
|
|
out: Command\(_xxx_\) NIL
|
|
out: Command\("test.command1.5"\) \{def\}
|
|
out: Command\("test.command1.5"\) \{exec\}
|
|
out: Command\("test.command1.5"\) \{undo\}
|
|
return: 0
|
|
END
|
|
|
|
|
|
TEST "Command usage aspects II" CommandUse2_test <<END
|
|
return: 0
|
|
END
|
|
|
|
|
|
PLANNED "Command usage aspects III" CommandUse3_test <<END
|
|
return: 0
|
|
END
|