Possibility to pass class method reference
[command.git] / tests / required / should_be_required.cpp
1 #include <iostream>
2
3 #include "required.h"
4 #include "argument.h"
5 #include "option.h"
6
7 using namespace std;
8 using namespace command;
9
10 #define NAME "test"
11 #define VALUE "1"
12
13 #define OPTION NAME "=" VALUE
14
15 typedef int Type;
16
17 void _function(Type val) { }
18
19 int main() {
20     Parameter * requiredOption = new Required(new Option<Type>(NAME, "Required Option", _function));
21     Parameter * requiredArgument = new Required(new Argument<Type>("Required Argument", _function));
22
23     if (!requiredOption->isRequired()) {
24         cout << requiredOption->describe() << " should be treated as required but it is not\n";
25         delete requiredOption;
26         return 1;
27     }
28     if (!requiredArgument->isRequired()) {
29         cout << requiredArgument->describe() << " should be treated as required but it is not\n";
30         delete requiredOption;
31         return 1;
32     }
33
34     cout << "Required decorator correctly returns its property\n";
35
36     return 0;
37 }