BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
scientificspinbox.test.cpp File Reference

Implements class CLASS? More...

Include dependency graph for scientificspinbox.test.cpp:

Go to the source code of this file.

Classes

class  ScientificSpinBoxTest
 

Functions

 TEST_F (ScientificSpinBoxTest, round)
 
 TEST_F (ScientificSpinBoxTest, testValueFromText)
 
 TEST_F (ScientificSpinBoxTest, toString)
 

Detailed Description

Implements class CLASS?

Homepage:\n http://www.bornagainproject.org
License:\n GNU General Public License v3 or higher (see COPYING)
Authors
Gennady Pospelov et al, Scientific Computing Group at MLZ (see CITATION, AUTHORS)

Definition in file scientificspinbox.test.cpp.

Function Documentation

◆ TEST_F() [1/3]

TEST_F ( ScientificSpinBoxTest  ,
round   
)

Definition at line 122 of file scientificspinbox.test.cpp.

123 {
124  auto round_3 = [](double val) { return ScientificSpinBox::round(val, 3); };
125  EXPECT_DOUBLE_EQ(1.232e-12, round_3(1.2323e-12));
126  EXPECT_DOUBLE_EQ(0.123, round_3(0.1232));
127  EXPECT_DOUBLE_EQ(1.002e+2, round_3(100.2));
128 }
static double round(double val, int decimals)

References ModelView::ScientificSpinBox::round().

Here is the call graph for this function:

◆ TEST_F() [2/3]

TEST_F ( ScientificSpinBoxTest  ,
testValueFromText   
)

Definition at line 28 of file scientificspinbox.test.cpp.

29 {
30  QLocale locale(QLocale::C);
31  locale.setNumberOptions(QLocale::RejectGroupSeparator);
32 
33  QDoubleValidator validator;
34  validator.setLocale(locale);
35  validator.setNotation(QDoubleValidator::ScientificNotation);
36 
37  auto to_value = [&validator](QString text) {
38  return ScientificSpinBox::toDouble(text, validator, std::numeric_limits<double>::lowest(),
39  std::numeric_limits<double>::max(), 0.1);
40  };
41 
42  // translation fails
43  EXPECT_EQ(0.1, to_value(QString("abcd")));
44  EXPECT_EQ(0.1, to_value(QString("1,2")));
45  EXPECT_EQ(0.1, to_value(QString("100,000,000.2")));
46  EXPECT_EQ(0.1, to_value(QString("100.000.000.2")));
47  EXPECT_EQ(0.1, to_value(QString("1e+2345")));
48  EXPECT_EQ(0.1, to_value(QString("-1e+2345")));
49  EXPECT_EQ(0.1, to_value(QString("1e-2345")));
50  EXPECT_EQ(0.1, to_value(QString("-1e-2345")));
51  EXPECT_EQ(0.1, to_value(QString("--0.1")));
52  EXPECT_EQ(0.1, to_value(QString("-.e-12")));
53  EXPECT_EQ(0.1, to_value(QString()));
54 
55  auto to_value_2 = [&validator](QString text) {
56  return ScientificSpinBox::toDouble(text, validator, -0.1, 1e+7, 0.1);
57  };
58 
59  // translation fails due to out-of-bounds condition
60  EXPECT_EQ(0.1, to_value_2(QString("-0.2")));
61  EXPECT_EQ(0.1, to_value_2(QString("-0.1e+1")));
62  EXPECT_EQ(0.1, to_value_2(QString("1e+8")));
63 
64  // legitimate values
65  EXPECT_EQ(-0.0999, to_value_2(QString("-0.0999")));
66  EXPECT_EQ(-1e-13, to_value_2(QString("-.1e-12")));
67  EXPECT_EQ(0.0, to_value_2(QString("0")));
68  EXPECT_EQ(0.123, to_value_2(QString("0.123")));
69  EXPECT_EQ(1e+6, to_value_2(QString("1e+6")));
70  EXPECT_EQ(1.1e+6, to_value_2(QString("1.1e+6")));
71  EXPECT_EQ(0.012, to_value_2(QString("0.012")));
72 }
static double toDouble(QString text, const QDoubleValidator &validator, double min, double max, double default_value)

References ModelView::ScientificSpinBox::toDouble().

Here is the call graph for this function:

◆ TEST_F() [3/3]

TEST_F ( ScientificSpinBoxTest  ,
toString   
)

Definition at line 74 of file scientificspinbox.test.cpp.

75 {
76  int decimals = 3;
77  auto to_string = [&decimals](double val) { return ScientificSpinBox::toString(val, decimals); };
78 
79  EXPECT_EQ(std::string("-123.45"), to_string(-123.45).toStdString());
80  EXPECT_EQ(std::string("-100"), to_string(-99.9999).toStdString());
81  EXPECT_EQ(std::string("-99.999"), to_string(-99.9994).toStdString());
82  EXPECT_EQ(std::string("-10.123"), to_string(-10.12345).toStdString());
83  EXPECT_EQ(std::string("-1"), to_string(-1.).toStdString());
84  EXPECT_EQ(std::string("-0.1"), to_string(-0.1).toStdString());
85  EXPECT_EQ(std::string("-0.1"), to_string(-0.1).toStdString());
86  EXPECT_EQ(std::string("-9.99e-2"), to_string(-9.99e-2).toStdString());
87  EXPECT_EQ(std::string("-1.266e-12"), to_string(-1.26555e-12).toStdString());
88  EXPECT_EQ(std::string("0"), to_string(-0.0).toStdString());
89  EXPECT_EQ(std::string("0"), to_string(0.0).toStdString());
90  EXPECT_EQ(std::string("1e-12"), to_string(1.e-12).toStdString());
91  EXPECT_EQ(std::string("1.23e-12"), to_string(1.23e-12).toStdString());
92  EXPECT_EQ(std::string("1e-2"), to_string(1.e-2).toStdString());
93  EXPECT_EQ(std::string("1.5e-2"), to_string(1.5e-2).toStdString());
94  EXPECT_EQ(std::string("1.523e-2"), to_string(1.5234e-2).toStdString());
95  EXPECT_EQ(std::string("9.99e-2"), to_string(9.99e-2).toStdString());
96  EXPECT_EQ(std::string("1e-1"), to_string(9.9999e-2).toStdString());
97  EXPECT_EQ(std::string("0.1"), to_string(0.1).toStdString());
98  EXPECT_EQ(std::string("1"), to_string(1.).toStdString());
99  EXPECT_EQ(std::string("1.1"), to_string(1.1).toStdString());
100  EXPECT_EQ(std::string("1.123"), to_string(1.12345).toStdString());
101  EXPECT_EQ(std::string("10.123"), to_string(10.12345).toStdString());
102  EXPECT_EQ(std::string("99.9"), to_string(99.9).toStdString());
103  EXPECT_EQ(std::string("99.999"), to_string(99.9994).toStdString());
104  EXPECT_EQ(std::string("100"), to_string(99.9999).toStdString());
105  EXPECT_EQ(std::string("123.45"), to_string(123.45).toStdString());
106  EXPECT_EQ(std::string("1e+4"), to_string(1.e+4).toStdString());
107  EXPECT_EQ(std::string("1.265e+12"), to_string(1.265e+12).toStdString());
108  EXPECT_EQ(std::string("1.266e+12"), to_string(1.26555e+12).toStdString());
109 
110  decimals = 5;
111  EXPECT_EQ(std::string("1.23e-12"), to_string(1.23e-12).toStdString());
112  EXPECT_EQ(std::string("1.52346e-2"), to_string(1.523456e-2).toStdString());
113  EXPECT_EQ(std::string("1e-1"), to_string(9.999999e-2).toStdString());
114  EXPECT_EQ(std::string("1.12346"), to_string(1.123455).toStdString());
115  EXPECT_EQ(std::string("10.12346"), to_string(10.123456).toStdString());
116  EXPECT_EQ(std::string("99.9"), to_string(99.9).toStdString());
117  EXPECT_EQ(std::string("100"), to_string(99.999999).toStdString());
118  EXPECT_EQ(std::string("123.45"), to_string(123.45).toStdString());
119  EXPECT_EQ(std::string("1.26556e+12"), to_string(1.265556e+12).toStdString());
120 }
static QString toString(double val, int decimal_points)

References ModelView::ScientificSpinBox::toString().

Here is the call graph for this function: