Added Argument boolean tests.
authorRafał Długołęcki <rafal@dlugolecki.net.pl>
Sun, 3 May 2015 00:10:59 +0000 (02:10 +0200)
committerRafał Długołęcki <rafal@dlugolecki.net.pl>
Sun, 3 May 2015 00:10:59 +0000 (02:10 +0200)
src/main.cpp
tests/Makefile.am
tests/argument/handles_boolean_value.cpp [new file with mode: 0644]
tests/argument/handles_float_value.cpp
tests/argument/handles_int_value.cpp
tests/argument/handles_negative_float_value.cpp
tests/argument/handles_negative_int_value.cpp
tests/argument/handles_string_value.cpp

index 6365c7f47b952533297f89c73b7c18dd2722bfc1..813491aae3442b231841f2490d4faecae04200c4 100644 (file)
@@ -5,15 +5,15 @@
 #include "argument.h"
 #include "command.h"
 
-void some_function(std::string) {
-    std::cout << "Some function" << std::endl;
+void some_function(bool a) {
+    std::cout << "Some function " << a << std::endl;
 }
 
 int main(int argc, char *argv[]) {
     command::Command command(argc, argv, {
-        new command::Argument<std::string>("File path", [](std::string value)->void { std::cout << "Hello from lambda " << value << std::endl; }),
-        new command::Argument<std::string>("File path", some_function),
-        new command::Option<std::string>("h", "Help", some_function)
+//         new command::Argument<std::string>("File path", [](std::string value)->void { std::cout << "Hello from lambda " << value << std::endl; }),
+        new command::Argument<bool>("File path", some_function)/*,
+        new command::Option<std::string>("h", "Help", some_function)*/
     });
 
     return 0;
index 374f604fda964f3fc49ef808f0685bd47ecdc83b..ecc69f9e54216217bda5987078bfb7fec3143c1f 100644 (file)
@@ -8,7 +8,8 @@ TESTS = \
        argument_handles_int_value.test \
        argument_handles_negative_int_value.test \
        argument_handles_float_value.test \
-       argument_handles_negative_float_value.test
+       argument_handles_negative_float_value.test \
+       argument_handles_boolean_value.test
 
 noinst_PROGRAMS = $(TESTS)
 
@@ -25,3 +26,4 @@ argument_handles_int_value_test_SOURCES  = argument/handles_int_value.cpp
 argument_handles_negative_int_value_test_SOURCES  = argument/handles_negative_int_value.cpp
 argument_handles_float_value_test_SOURCES  = argument/handles_float_value.cpp
 argument_handles_negative_float_value_test_SOURCES  = argument/handles_negative_float_value.cpp
+argument_handles_boolean_value_test_SOURCES  = argument/handles_boolean_value.cpp
diff --git a/tests/argument/handles_boolean_value.cpp b/tests/argument/handles_boolean_value.cpp
new file mode 100644 (file)
index 0000000..b41106f
--- /dev/null
@@ -0,0 +1,51 @@
+#include <iostream>
+
+#include "argument.h"
+
+using namespace std;
+using namespace command;
+
+#define FALSE "0"
+#define TRUE "1"
+
+typedef bool ArgumentType;
+
+ArgumentType test;
+
+void function(ArgumentType value) {
+    test = value;
+}
+
+int main() {
+    Argument<ArgumentType> argument("Argument as boolean", function);
+
+    if (argument.understand(FALSE)) {
+        argument.handle();
+    }
+    else {
+        cout << "Argument class do not understand boolean (FALSE) values\n";
+        return 1;
+    }
+
+    if (test == (bool)std::stoi(FALSE)) {
+        cout << "Argument class handles boolean (FALSE) values\n";
+    }
+
+    Argument<ArgumentType> argument2("Argument as boolean", function);
+    if (argument2.understand(TRUE)) {
+        argument2.handle();
+    }
+    else {
+        cout << "Argument class do not understand boolean (TRUE) values\n";
+        return 1;
+    }
+
+    if (test == (bool)std::stoi(TRUE)) {
+        cout << "Argument class handles boolean (TRUE) values\n";
+        return 0;
+    }
+
+    cout << "Argument class do not handle boolean values\n";
+
+    return 1;
+}
index 3fd86fb9bc8b6021cb63199c1444003ce7cded9b..93ff14f11484cad3b7108a99c110496a7a043249 100644 (file)
@@ -21,6 +21,10 @@ int main() {
     if (argument.understand(VALUE)) {
         argument.handle();
     }
+    else {
+        cout << "Argument class do not understand float values\n";
+        return 1;
+    }
 
     if (test == std::stof(VALUE)) {
         cout << "Argument class handles float values\n";
index 552a2e35e30d114bcde6145c3d258ab036dc65fa..ffe130c83cd30549951f3ab306424d41bc65f800 100644 (file)
@@ -22,6 +22,10 @@ int main() {
     if (argument.understand(VALUE)) {
         argument.handle();
     }
+    else {
+        cout << "Argument class do not understand int values\n";
+        return 1;
+    }
 
     if (test == std::stoi(VALUE)) {
         cout << "Argument class handles int values\n";
index 0279cac8617dd0a8e704dfc670becb59f5b7271d..0111502e48a1df7e921f46d08625f452f44db159 100644 (file)
@@ -21,6 +21,10 @@ int main() {
     if (argument.understand(VALUE)) {
         argument.handle();
     }
+    else {
+        cout << "Argument class do not understand negative float values\n";
+        return 1;
+    }
 
     if (test == std::stof(VALUE)) {
         cout << "Argument class handles negative float values\n";
@@ -29,6 +33,5 @@ int main() {
 
     cout << "Argument class do not handle negative float values\n";
 
-
     return 1;
 }
index 3f53f1aea97015593fbcf29b8af3dcd3469902ee..f9c222f9d80caa3f43ec85b3bd616b21c3c7e064 100644 (file)
@@ -21,6 +21,10 @@ int main() {
     if (argument.understand(VALUE)) {
         argument.handle();
     }
+    else {
+        cout << "Argument class do not understand negative int values\n";
+        return 1;
+    }
 
     if (test == std::stoi(VALUE)) {
         cout << "Argument class handles negative int values\n";
index 9dd6efa8a53b0c461585090dad1e761d4f884880..38e6efa98c5d6044eed80c110a7ca617b6e872ed 100644 (file)
@@ -22,6 +22,10 @@ int main() {
     if (argument.understand(VALUE)) {
         argument.handle();
     }
+    else {
+        cout << "Argument class do not understand string values\n";
+        return 1;
+    }
 
     int cmp = strcmp(test.c_str(), VALUE);