-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgramOptions_test.cpp
More file actions
61 lines (48 loc) · 1.86 KB
/
ProgramOptions_test.cpp
File metadata and controls
61 lines (48 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// Copyright (C) 2022, Antoine Basset
// SPDX-License-Identifier: LGPL-3.0-or-later
#define BOOST_TEST_MODULE "ProgramOptionsTest"
#include <boost/test/unit_test.hpp>
#include "ProgramOptions.h"
struct TestProgramOptions {
Kast::ProgramOptions po;
TestProgramOptions() : po("Description") {
po.positional<int>("positional", "Positional option, no short form, no default");
po.positional("positional-default", "Positional option with short form and default", 0);
po.named<int>("named", "Named option, no short form, no default");
po.named<int>("named-short,n", "Named option with short form, no default");
po.named("named-default,d", "Named option with short form and default", 0);
po.flag("flag", "Flag, no short form");
po.flag("flag-short,f", "Flag with short form");
}
};
BOOST_FIXTURE_TEST_SUITE(ProgramOptionsTest, TestProgramOptions);
BOOST_AUTO_TEST_CASE(positional_test) {
po.parse("exe 1");
BOOST_TEST(po.as<int>("positional") == 1);
BOOST_TEST(po.as<int>("positional-default") == 0);
po.parse("exe 1 2");
BOOST_TEST(po.as<int>("positional") == 1);
BOOST_TEST(po.as<int>("positional-default") == 2);
}
BOOST_AUTO_TEST_CASE(named_test) {
po.parse("exe --named 1 -n2");
BOOST_TEST(po.as<int>("named") == 1);
BOOST_TEST(po.as<int>("named-short") == 2);
BOOST_TEST(po.as<int>("named-default") == 0);
po.parse("exe -d 3");
BOOST_TEST(po.as<int>("named-default") == 3);
}
BOOST_AUTO_TEST_CASE(flag_test) {
po.parse("exe");
BOOST_TEST(not po.as<bool>("flag"));
BOOST_TEST(not po.as<bool>("flag-short"));
po.parse("exe --flag");
BOOST_TEST(po.as<bool>("flag"));
po.parse("exe -f");
BOOST_TEST(po.as<bool>("flag-short"));
}
BOOST_AUTO_TEST_CASE(bad_option_test) {
BOOST_CHECK_THROW(po.parse("exe --bad 0"), std::exception);
BOOST_CHECK_THROW(po.parse("exe --named"), std::exception);
}
BOOST_AUTO_TEST_SUITE_END();