File: PointwiseAxisTest.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 (99 lines) | stat: -rw-r--r-- 3,421 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
94
95
96
97
98
99
#include "Base/Axis/MakeScale.h"

#include "Base/Axis/Scale.h"
#include "Tests/GTestWrapper/google_test.h"

TEST(PointwiseAxis, Construction)
{
    ListScan("length", std::vector<double>{1.0, 0.0});
    ListScan("length", std::vector<double>{0.0, 1.0, 0.5});
    EXPECT_THROW(ListScan("length", std::vector<double>{0.0, 1.0, 1.0}), std::runtime_error);
    Scale a1 = ListScan("length", std::vector<double>{0.0, 1.0});
    std::vector<double> coordinates{0.0, 1.0};
    Scale a2 = ListScan("length", coordinates);
    EXPECT_TRUE(a1 == a2);
}

TEST(PointwiseAxis, BasicProperties)
{
    std::vector<double> coordinates{0.0, 1.0, 4.0, 8.0};
    Scale a1 = ListScan("length", coordinates);
    EXPECT_EQ(4u, a1.size());
    EXPECT_EQ(0.0, a1.min());
    EXPECT_EQ(8.0, a1.max());
    EXPECT_EQ(0.0, a1.binCenter(0));
    EXPECT_EQ(1.0, a1.binCenter(1));
    EXPECT_EQ(4.0, a1.binCenter(2));
    EXPECT_EQ(8.0, a1.binCenter(3));
    EXPECT_EQ(a1.binCenter(0), a1.binCenter(0));
    EXPECT_EQ(a1.binCenter(1), a1.binCenter(1));
    EXPECT_EQ(a1.binCenter(2), a1.binCenter(2));
    EXPECT_EQ(a1.binCenter(3), a1.binCenter(3));
    EXPECT_THROW(a1.binCenter(4), std::exception);
    EXPECT_THROW(a1.binCenter(4), std::exception);
    EXPECT_TRUE(coordinates == a1.binCenters());
}

TEST(PointwiseAxis, FindClosestIndex)
{
    Scale v1 = ListScan("name", std::vector<double>{0.0, 1.0, 4.0, 8.0});
    EXPECT_EQ(4u, v1.size());
    EXPECT_EQ(v1.closestIndex(-1.0), 0u);
    EXPECT_EQ(v1.closestIndex(0.0), 0u);
    EXPECT_EQ(v1.closestIndex(0.25), 0u);
    EXPECT_EQ(1u, v1.closestIndex(0.5));
    EXPECT_EQ(1u, v1.closestIndex(0.6));
    EXPECT_EQ(1u, v1.closestIndex(2.49));
    EXPECT_EQ(2u, v1.closestIndex(2.5));
    EXPECT_EQ(3u, v1.closestIndex(8.0));
    EXPECT_EQ(3u, v1.closestIndex(11.0));

    Scale v2 = ListScan("name", std::vector<double>{-2.0, -1.0});
    EXPECT_EQ(2u, v2.size());
    EXPECT_EQ(v2.closestIndex(-3.0), 0u);
    EXPECT_EQ(v2.closestIndex(-2.0), 0u);
    EXPECT_EQ(1u, v2.closestIndex(-1.5));
    EXPECT_EQ(1u, v2.closestIndex(-1.0));
    EXPECT_EQ(1u, v2.closestIndex(0.0));
    EXPECT_EQ(1u, v2.closestIndex(1.0));
}

TEST(PointwiseAxis, CheckEquality)
{
    Scale b1 = ListScan("axis", std::vector<double>{1.0, 2.0, 5.0});
    Scale b2 = ListScan("axis", std::vector<double>{1.0, 2.0, 5.0});
    EXPECT_TRUE(b1 == b2);
    Scale b3 = ListScan("axissss", std::vector<double>{1.0, 2.0, 5.0});
    Scale b4 = ListScan("axis", std::vector<double>{1.0, 2.0, 6.0});
    Scale b6 = ListScan("axiss", std::vector<double>{1.5, 2.0, 5.0});
    EXPECT_FALSE(b1 == b3);
    EXPECT_FALSE(b1 == b4);
    EXPECT_FALSE(b1 == b6);
}

TEST(PointwiseAxis, CheckClone)
{
    Scale a1 = ListScan("axis", std::vector<double>{1.0, 2.0, 5.0});
    Scale* clone = a1.clone();
    EXPECT_TRUE(a1 == *clone);
}

TEST(PointwiseAxis, ClippedAxis)
{
    Scale axis = ListScan("name", std::vector<double>{1.0, 2.0, 2.5, 2.7, 5.0});

    Scale clip1 = axis.clipped(0.99, 5.1);
    EXPECT_TRUE(clip1 == axis);

    Scale clip2 = axis.clipped(1, 5.0);
    EXPECT_TRUE(clip2 == axis);

    Scale clip3 = axis.clipped(1.5, 2.5);
    EXPECT_TRUE(!(clip3 == axis));
    EXPECT_EQ(clip3.size(), 2u);
    EXPECT_EQ(clip3.binCenter(0), 2.0);
    EXPECT_EQ(clip3.binCenter(1), 2.5);

    // TODO axis restore EXPECT_THROW(axis.clone()->clip(1.4, 1.6), std::runtime_error);
    EXPECT_THROW(axis.clipped(5.0, 1.0), std::runtime_error);
}