Commit 5c0d6617d59c841dba6f00d1ab9d2e71bc52b11b
Committed by
Henry Schreiner
1 parent
11444a4e
Adding optional test
Showing
2 changed files
with
49 additions
and
0 deletions
tests/CMakeLists.txt
tests/OptionalTest.cpp
0 → 100644
| 1 | +#include <cstdlib> | ||
| 2 | +#include <iostream> | ||
| 3 | + | ||
| 4 | +#ifdef __has_include | ||
| 5 | +#if __has_include(<optional>) | ||
| 6 | +#include <optional> | ||
| 7 | +#define have_optional 1 | ||
| 8 | +using std::experimental::optional; | ||
| 9 | +#elif __has_include(<experimental/optional>) | ||
| 10 | +#include <experimental/optional> | ||
| 11 | +#define have_optional 1 | ||
| 12 | +using std::optional; | ||
| 13 | +#else | ||
| 14 | +#define have_optional 0 | ||
| 15 | +#endif | ||
| 16 | +#endif | ||
| 17 | + | ||
| 18 | +#if have_optional | ||
| 19 | + | ||
| 20 | +template <typename T> std::istream &operator>>(std::istream &in, optional<T> &val) { | ||
| 21 | + T v; | ||
| 22 | + in >> v; | ||
| 23 | + val = v; | ||
| 24 | + return in; | ||
| 25 | +} | ||
| 26 | + | ||
| 27 | +#include "app_helper.hpp" | ||
| 28 | + | ||
| 29 | +TEST_F(TApp, OptionalTest) { | ||
| 30 | + optional<int> opt; | ||
| 31 | + app.add_option("-c,--count", opt); | ||
| 32 | + run(); | ||
| 33 | + EXPECT_FALSE(opt); | ||
| 34 | + | ||
| 35 | + app.reset(); | ||
| 36 | + args = {"-c", "1"}; | ||
| 37 | + run(); | ||
| 38 | + EXPECT_TRUE(opt); | ||
| 39 | + EXPECT_EQ(*opt, 1); | ||
| 40 | + | ||
| 41 | + app.reset(); | ||
| 42 | + args = {"--count", "3"}; | ||
| 43 | + run(); | ||
| 44 | + EXPECT_TRUE(opt); | ||
| 45 | + EXPECT_EQ(*opt, 3); | ||
| 46 | +} | ||
| 47 | + | ||
| 48 | +#endif |