File: MultiOptionTest.cpp

package info (click to toggle)
bornagain 23.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 103,936 kB
  • sloc: cpp: 423,131; python: 40,997; javascript: 11,167; awk: 630; sh: 318; ruby: 173; xml: 130; makefile: 51; ansic: 24
file content (93 lines) | stat: -rw-r--r-- 2,524 bytes parent folder | download | duplicates (2)
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "Fit/Option/MultiOption.h"

#include "Tests/GTestWrapper/google_test.h"
#include <string>

TEST(MultiOption, Variant)
{
    MultiOption::variant_t v1(1);

    EXPECT_EQ(0, v1.index());
    //    EXPECT_EQ(1, v1.get<int>());
    EXPECT_EQ(1, std::get<int>(v1));

    v1 = 2.0;
    EXPECT_EQ(1, v1.index());
    // EXPECT_EQ(2.0, v1.get<double>());
    EXPECT_EQ(2.0, std::get<double>(v1));

    const std::string text("xxx");
    v1 = text;
    EXPECT_EQ(2, v1.index());
    //    EXPECT_EQ(text, v1.get<std::string>());
    EXPECT_EQ(text, std::get<std::string>(v1));
}

TEST(MultiOption, Construction)
{
    const std::string name("name");
    const std::string description("description");
    const double double_value(2.0);
    MultiOption opt(name, double_value, description);

    EXPECT_EQ(name, opt.name());
    EXPECT_EQ(description, opt.description());
    EXPECT_EQ(double_value, opt.get<double>());
    EXPECT_EQ(double_value, opt.getDefault<double>());

    // setting new value
    const double new_value = 3.0;
    opt.value() = new_value;
    EXPECT_EQ(new_value, opt.get<double>());
    EXPECT_EQ(double_value, opt.getDefault<double>());
}

TEST(MultiOption, Copying)
{
    const std::string name("name");
    const std::string description("description");
    const double double_value(2.0);
    MultiOption opt(name, double_value, description);

    const MultiOption& copy(opt);
    EXPECT_EQ(name, copy.name());
    EXPECT_EQ(description, copy.description());
    EXPECT_EQ(double_value, copy.get<double>());
    EXPECT_EQ(double_value, copy.getDefault<double>());
}

TEST(MultiOption, Assignment)
{
    const std::string name("name");
    const std::string description("description");
    const double double_value(2.0);
    MultiOption opt(name, double_value, description);

    MultiOption copy;
    copy = opt;

    const double new_value = 3.0;
    opt.value() = new_value;

    EXPECT_EQ(name, copy.name());
    EXPECT_EQ(description, copy.description());
    EXPECT_EQ(double_value, copy.get<double>());
    EXPECT_EQ(double_value, copy.getDefault<double>());
}

TEST(MultiOption, SetFromString)
{
    MultiOption opt("name", 2.0);
    opt.setFromString("2.1");
    EXPECT_EQ(2.1, opt.get<double>());
    opt.setFromString("2");
    EXPECT_EQ(2.0, opt.get<double>());

    MultiOption opt2("name", 99);
    opt2.setFromString("100");
    EXPECT_EQ(100, opt2.get<int>());

    MultiOption opt3("name", "xxx");
    opt3.setFromString("yyy");
    EXPECT_EQ("yyy", opt3.get<std::string>());
}