This commit is contained in:
Matthias
2017-07-24 16:37:13 +02:00
parent 3d8f381bae
commit 6c3a14afc8
14 changed files with 266 additions and 2 deletions
+9
View File
@@ -0,0 +1,9 @@
wfinput=if01/wfInput.code
wfoutput=if01/wfOutput.code
includes=if01/includes.code
atomicTask.0=if01/atomic1.properties
atomicTask.1=if01/atomic2.properties
atomicTask.2=if01/atomic3.properties
+3
View File
@@ -0,0 +1,3 @@
sout->if1condOut.setValue(sin->if1cond.getValue());
sout->if1ValueOut.setValue(sin->if1Value.getValue());
+4
View File
@@ -0,0 +1,4 @@
name=AtomicActivity1
entries=1
entry.0=atomic1.code
+16
View File
@@ -0,0 +1,16 @@
std::cout << "AtomicActivity2:" << std::endl
<< "\tif1cond: " << sin->if1cond.getValue() << std::endl
<< "\tif1value: " << sin->if1Value.getValue() << std::endl;
if (!sin->if1cond.getValue()) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: if1cond [" << sin->if1cond.getValue() << "] is not true.";
throw wfr::exception::wfr_fatal_error(ss.str());
}
if (sin->if1Value.getValue() != -1) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: if1Value [" << sin->if1Value.getValue() << "] is not -1.";
throw wfr::exception::wfr_fatal_error(ss.str());
}
sout->if1ValueOut.setValue(2);
+4
View File
@@ -0,0 +1,4 @@
name=AtomicActivity2
entries=1
entry.0=atomic2.code
+16
View File
@@ -0,0 +1,16 @@
std::cout << "AtomicActivity3:" << std::endl
<< "\tif1cond: " << sin->if1Cond.getValue() << std::endl
<< "\tif1value: " << sin->if1Value.getValue() << std::endl;
if (sin->if1Cond.getValue()) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: if1cond [" << sin->if1Cond.getValue() << "] is not false.";
throw wfr::exception::wfr_fatal_error(ss.str());
}
if (sin->if1Value.getValue() != -1) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: if1Value [" << sin->if1Value.getValue() << "] is not -1.";
throw wfr::exception::wfr_fatal_error(ss.str());
}
sout->if1ValueOut.setValue(3);
+4
View File
@@ -0,0 +1,4 @@
name=AtomicActivity3
entries=1
entry.0=atomic3.code
+2
View File
@@ -0,0 +1,2 @@
#include <boost/program_options.hpp>
#include <thread>
+47
View File
@@ -0,0 +1,47 @@
bool isHelp = false;
bool if1Cond = true;
bool if2Cond = true;
bool if3Cond = true;
bool if4Cond = true;
boost::program_options::options_description opts("if1 Options");
opts.add_options()
("help", "Print help message.")
("if1", boost::program_options::value<bool>(), "if1 condition")
("if2", boost::program_options::value<bool>(), "if2 condition")
("if3", boost::program_options::value<bool>(), "if3 condition")
("if4", boost::program_options::value<bool>(), "if4 condition");
boost::program_options::variables_map vm;
auto parsed = boost::program_options::command_line_parser(argc, argv).options(opts).allow_unregistered().run();
boost::program_options::store(parsed, vm);
boost::program_options::notify(vm);
if (vm.count("help")) {
std::cerr << opts << std::endl;
isHelp = true;
} else {
if (vm.count("if1")) {
if1Cond = vm["if1"].as<bool>();
}
if (vm.count("if2")) {
if2Cond = vm["if2"].as<bool>();
}
if (vm.count("if3")) {
if3Cond = vm["if3"].as<bool>();
}
if (vm.count("if4")) {
if4Cond = vm["if4"].as<bool>();
}
std::cerr << "if1 = " << if1Cond << std::endl;
std::cerr << "if2 = " << if2Cond << std::endl;
std::cerr << "if3 = " << if3Cond << std::endl;
std::cerr << "if4 = " << if4Cond << std::endl;
}
wfInput.if1cond.setValue(if1Cond);
wfInput.if2cond.setValue(if2Cond);
wfInput.if3cond.setValue(if3Cond);
wfInput.if4cond.setValue(if4Cond);
wfInput.if1Value.setValue(-1);
wfInput.if2Value.setValue(-1);
wfInput.if3Value.setValue(-1);
wfInput.if4Value.setValue(-1);
+63
View File
@@ -0,0 +1,63 @@
std::cout << "wfOutput:" << std::endl
<< "\tisOk1: " << wfOutput.isOk1.getValue() << std::endl
<< "\tisOk2: " << wfOutput.isOk2.getValue() << std::endl
<< "\tif1valueOut: " << wfOutput.if1valueOut.getValue() << std::endl
<< "\tif2valueOut: " << wfOutput.if2ValueOut.getValue() << std::endl
<< "\tif3valueOut: " << wfOutput.if3ValueOut.getValue() << std::endl
<< "\tif4valueOut: " << wfOutput.if4ValueOut.getValue() << std::endl;
if (wfOutput.isOk1.getValue() != true) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: isOk1 [" << wfOutput.isOk1.getValue() << "] is not true.";
throw wfr::exception::wfr_fatal_error(ss.str());
}
if (wfOutput.isOk2.getValue() != true) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: isOk2 [" << wfOutput.isOk2.getValue() << "] is not true.";
throw wfr::exception::wfr_fatal_error(ss.str());
}
if (wfInput.if1cond.getValue() && wfOutput.if1valueOut.getValue() != 2) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: if1valueOut [" << wfOutput.if1valueOut.getValue() << "] is not 2.";
throw wfr::exception::wfr_fatal_error(ss.str());
} else if (!wfInput.if1cond.getValue() && wfOutput.if1valueOut.getValue() != 3) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: if1valueOut [" << wfOutput.if1valueOut.getValue() << "] is not 3.";
throw wfr::exception::wfr_fatal_error(ss.str());
}
if (wfInput.if2cond.getValue() && wfOutput.if2ValueOut.getValue() != 4) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: if2valueOut [" << wfOutput.if2ValueOut.getValue() << "] is not 4.";
throw wfr::exception::wfr_fatal_error(ss.str());
} else if (!wfInput.if2cond.getValue() && wfOutput.if2ValueOut.getValue() != -1) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: if2valueOut [" << wfOutput.if2ValueOut.getValue() << "] is not -1.";
throw wfr::exception::wfr_fatal_error(ss.str());
}
if (wfInput.if3cond.getValue() && wfOutput.if3ValueOut.getValue() != -1) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: if3valueOut [" << wfOutput.if3ValueOut.getValue() << "] is not -1.";
throw wfr::exception::wfr_fatal_error(ss.str());
} else if (!wfInput.if3cond.getValue() && wfOutput.if3ValueOut.getValue() != 6) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: if3valueOut [" << wfOutput.if3ValueOut.getValue() << "] is not 6.";
throw wfr::exception::wfr_fatal_error(ss.str());
}
if (wfInput.if4cond.getValue() && wfOutput.if4ValueOut.getValue() != 7) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: if4valueOut [" << wfOutput.if4ValueOut.getValue() << "] is not 7.";
throw wfr::exception::wfr_fatal_error(ss.str());
} else if (!wfInput.if4cond.getValue() && wfOutput.if4ValueOut.getValue() != -1) {
#include <sstream>
std::stringstream ss;
ss << "Test Failure: if4valueOut [" << wfOutput.if4ValueOut.getValue() << "] is not -1.";
throw wfr::exception::wfr_fatal_error(ss.str());
}
+9 -1
View File
@@ -10,7 +10,8 @@
("if1", boost::program_options::value<bool>(), "if1 condition")
("if2", boost::program_options::value<bool>(), "if2 condition")
("if3", boost::program_options::value<bool>(), "if3 condition")
("if4", boost::program_options::value<bool>(), "if4 condition");
("if4", boost::program_options::value<bool>(), "if4 condition")
("ifall", boost::program_options::value<bool>(), "all if conditions");
boost::program_options::variables_map vm;
auto parsed = boost::program_options::command_line_parser(argc, argv).options(opts).allow_unregistered().run();
boost::program_options::store(parsed, vm);
@@ -31,6 +32,13 @@
if (vm.count("if4")) {
if4Cond = vm["if4"].as<bool>();
}
if (vm.count("ifall")) {
auto val = vm["ifall"].as<bool>();
if1Cond = val;
if2Cond = val;
if3Cond = val;
if4Cond = val;
}
std::cerr << "if1 = " << if1Cond << std::endl;
std::cerr << "if2 = " << if2Cond << std::endl;
std::cerr << "if3 = " << if3Cond << std::endl;
+76
View File
@@ -0,0 +1,76 @@
<IWIR version="1.1" wfname="UTest_Conditional1" xmlns="http://shiwa-workflow.eu/IWIR">
<blockScope name="toplevel">
<inputPorts>
<inputPort name="if1cond" type="boolean"/>
<inputPort name="if1Value" type="integer"/>
</inputPorts>
<body>
<task name="AtomicActivity1" tasktype="AtomicActivity1">
<inputPorts>
<inputPort name="if1cond" type="boolean"/>
<inputPort name="if1Value" type="integer"/>
</inputPorts>
<outputPorts>
<outputPort name="if1condOut" type="boolean"/>
<outputPort name="if1ValueOut" type="integer"/>
</outputPorts>
</task>
<if name="DecisionNode1">
<inputPorts>
<inputPort name="if1cond" type="boolean"/>
<inputPort name="if1Value" type="integer"/>
</inputPorts>
<condition>if1cond = true</condition>
<then>
<task name="AtomicActivity2" tasktype="AtomicActivity2">
<inputPorts>
<inputPort name="if1cond" type="boolean"/>
<inputPort name="if1Value" type="integer"/>
</inputPorts>
<outputPorts>
<outputPort name="if1ValueOut" type="integer"/>
</outputPorts>
</task>
</then>
<else>
<task name="AtomicActivity3" tasktype="AtomicActivity3">
<inputPorts>
<inputPort name="if1Cond" type="boolean"/>
<inputPort name="if1Value" type="integer"/>
</inputPorts>
<outputPorts>
<outputPort name="if1ValueOut" type="integer"/>
</outputPorts>
</task>
</else>
<outputPorts>
<outputPort name="if1ValueOut" type="integer"/>
</outputPorts>
<links>
<link from="DecisionNode1/if1Value" to="AtomicActivity2/if1Value"/>
<link from="DecisionNode1/if1cond" to="AtomicActivity2/if1cond"/>
<link from="DecisionNode1/if1cond" to="AtomicActivity3/if1Cond"/>
<link from="DecisionNode1/if1Value" to="AtomicActivity3/if1Value"/>
<link from="AtomicActivity2/if1ValueOut" to="DecisionNode1/if1ValueOut"/>
<link from="AtomicActivity3/if1ValueOut" to="DecisionNode1/if1ValueOut"/>
</links>
</if>
</body>
<outputPorts>
<outputPort name="if1valueOut" type="integer"/>
</outputPorts>
<links>
<link from="toplevel/if1Value" to="AtomicActivity1/if1Value"/>
<link from="toplevel/if1cond" to="AtomicActivity1/if1cond"/>
<link from="AtomicActivity1/if1condOut" to="DecisionNode1/if1cond"/>
<link from="AtomicActivity1/if1ValueOut" to="DecisionNode1/if1Value"/>
<link from="DecisionNode1/if1ValueOut" to="toplevel/if1valueOut"/>
</links>
<properties>
<property name="version" value="1.0.0"/>
<property name="author" value="matthias"/>
<property name="domain" value="Generic"/>
</properties>
</blockScope>
</IWIR>