immutable-arguments(#989): proof-of concept

seems to work as assumed; we'll just have to construct
a new holder tuple in place when binding arguments.
Doesn't look too bad for me
This commit is contained in:
Fischlurch 2016-02-06 19:42:41 +01:00
parent 91e74b0456
commit a7cd8996aa
3 changed files with 15 additions and 15 deletions

View file

@ -122,6 +122,12 @@ namespace control {
: TUP(tup)
{ }
/** we deliberately support immutable types as command arguments */
ParamAccessor& operator= (ParamAccessor const&) =delete;
ParamAccessor& operator= (ParamAccessor&&) =delete;
ParamAccessor (ParamAccessor const&) =default;
////////////////////TODO the recursion-end of the access operations goes here
ostream&
@ -178,7 +184,7 @@ namespace control {
void
bindArguments (Arguments& args) override
{
params_ = args.get<ArgTuple>();
//params_ = args.get<ArgTuple>();
}
/** assign a new set of parameter values to this.
@ -189,7 +195,7 @@ namespace control {
void
bindArguments (lib::diff::Rec const& paramData) override
{
params_ = buildTuple<Args> (paramData);
//params_ = buildTuple<Args> (paramData);
}

View file

@ -138,10 +138,7 @@ namespace control {
virtual void
bindArguments (Arguments& args) override
{
if (!arguments_->isValid())
storeTuple (args.get<ArgTuple>());
else
arguments_->bindArguments (args);
storeTuple (args.get<ArgTuple>());
}
/** assign a new set of parameter values to this.
@ -152,10 +149,7 @@ namespace control {
virtual void
bindArguments (lib::diff::Rec const& paramData) override
{
if (!arguments_->isValid())
storeTuple (buildTuple<Args> (paramData));
else
arguments_->bindArguments (paramData);
storeTuple (buildTuple<Args> (paramData));
}

View file

@ -182,7 +182,7 @@ namespace test {
{
MARK_TEST_FUN
gui::test::Nexus::startNewLog();
auto cmd = gui::test::Nexus::prepareMockCmd<string, LuidH>(); //TimeSpan /////////////TODO
auto cmd = gui::test::Nexus::prepareMockCmd<string, TimeSpan, LuidH>();
MockElm mock("uiElm");
@ -201,19 +201,19 @@ namespace test {
CHECK (not cmd.canExec());
mock.prepareCommand(cmd, Rec({text, luid})); ////////TODO clip,
mock.prepareCommand(cmd, Rec({text, clip, luid}));
CHECK (cmd.canExec());
CHECK (gui::test::Nexus::wasBound(cmd, text, luid)); ////////TODO clip,
CHECK (gui::test::Nexus::wasBound(cmd, text, clip, luid));
CHECK (not gui::test::Nexus::wasInvoked(cmd));
CHECK (not gui::test::Nexus::wasInvoked(cmd, text, luid)); ////////TODO clip,
CHECK (not gui::test::Nexus::wasInvoked(cmd, text, clip, luid));
CHECK (not gui::test::Nexus::wasBound(cmd, "lololo"));
mock.issueCommand(cmd);
CHECK (gui::test::Nexus::wasInvoked(cmd));
CHECK (gui::test::Nexus::wasInvoked(cmd, text, luid)); ////////TODO clip,
CHECK (gui::test::Nexus::wasInvoked(cmd, text, clip, luid));
CHECK (not gui::test::Nexus::wasInvoked(cmd, " huh ", clip, luid));
CHECK (not gui::test::Nexus::wasInvoked(cmd, text, clip));