forked from npshub/mantid
-
Notifications
You must be signed in to change notification settings - Fork 0
/
MandatoryValidatorTest.h
97 lines (79 loc) · 3.58 KB
/
MandatoryValidatorTest.h
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
94
95
96
97
// Mantid Repository : https://github.com/mantidproject/mantid
//
// Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
// NScD Oak Ridge National Laboratory, European Spallation Source,
// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
// SPDX - License - Identifier: GPL - 3.0 +
#pragma once
#include "MantidKernel/MandatoryValidator.h"
#include "MantidKernel/OptionalBool.h"
#include <cxxtest/TestSuite.h>
#include <string>
using namespace Mantid::Kernel;
class MandatoryValidatorTest : public CxxTest::TestSuite {
public:
void testConstructor() {
TS_ASSERT_THROWS_NOTHING(MandatoryValidator<std::string> nsv)
TS_ASSERT_THROWS_NOTHING(MandatoryValidator<std::vector<int>> nsv)
TS_ASSERT_THROWS_NOTHING(MandatoryValidator<std::vector<double>> nsv)
TS_ASSERT_THROWS_NOTHING(MandatoryValidator<std::vector<std::string>> nsv)
}
void testClone() {
IValidator_sptr v = std::make_shared<MandatoryValidator<std::string>>();
IValidator_sptr vv = v->clone();
TS_ASSERT_DIFFERS(v, vv);
TS_ASSERT(std::dynamic_pointer_cast<MandatoryValidator<std::string>>(vv));
IValidator_sptr i = std::make_shared<MandatoryValidator<std::vector<int>>>();
IValidator_sptr ii = i->clone();
TS_ASSERT_DIFFERS(i, ii)
TS_ASSERT(std::dynamic_pointer_cast<MandatoryValidator<std::vector<int>>>(ii))
IValidator_sptr d = std::make_shared<MandatoryValidator<std::vector<double>>>();
IValidator_sptr dd = d->clone();
TS_ASSERT_DIFFERS(d, dd);
TS_ASSERT(std::dynamic_pointer_cast<MandatoryValidator<std::vector<double>>>(dd));
IValidator_sptr s = std::make_shared<MandatoryValidator<std::vector<std::string>>>();
IValidator_sptr ss = s->clone();
TS_ASSERT_DIFFERS(s, ss);
TS_ASSERT(std::dynamic_pointer_cast<MandatoryValidator<std::vector<std::string>>>(ss));
}
void testMandatoryValidator() {
MandatoryValidator<std::string> p;
TS_ASSERT_EQUALS(p.isValid("AZ"), "");
TS_ASSERT_EQUALS(p.isValid("B"), "");
TS_ASSERT_EQUALS(p.isValid(""), "A value must be entered for this parameter");
TS_ASSERT_EQUALS(p.isValid("ta"), "");
MandatoryValidator<std::vector<int>> i;
std::vector<int> ivec;
TS_ASSERT(ivec.empty())
TS_ASSERT_EQUALS(i.isValid(ivec), "A value must be entered for this parameter")
ivec.emplace_back(1);
TS_ASSERT_EQUALS(i.isValid(ivec), "")
MandatoryValidator<std::vector<double>> d;
std::vector<double> dvec;
TS_ASSERT(dvec.empty())
TS_ASSERT_EQUALS(d.isValid(dvec), "A value must be entered for this parameter")
dvec.emplace_back(1.1);
TS_ASSERT_EQUALS(d.isValid(dvec), "")
MandatoryValidator<std::vector<std::string>> s;
std::vector<std::string> svec;
TS_ASSERT(svec.empty())
TS_ASSERT_EQUALS(s.isValid(svec), "A value must be entered for this parameter")
svec.emplace_back("OK");
TS_ASSERT_EQUALS(s.isValid(svec), "")
MandatoryValidator<int> validate_int;
TS_ASSERT_EQUALS(validate_int.isValid(5), "");
TS_ASSERT_EQUALS(validate_int.isValid(-10000), "");
MandatoryValidator<double> validate_dbl;
TS_ASSERT_EQUALS(validate_dbl.isValid(5.0), "");
TS_ASSERT_EQUALS(validate_dbl.isValid(-250.0), "");
}
void testMandatoryValidatorOptionalBool() {
MandatoryValidator<OptionalBool> validator;
OptionalBool defaultValue;
TS_ASSERT(!validator.isValid(defaultValue).empty());
OptionalBool notDefaultIsTrue(OptionalBool::True);
TS_ASSERT(validator.isValid(notDefaultIsTrue).empty());
OptionalBool notDefaultIsFalse(OptionalBool::False);
TS_ASSERT(validator.isValid(notDefaultIsFalse).empty());
}
};