File: SpecularScanTest.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 (49 lines) | stat: -rw-r--r-- 1,854 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
#include "Base/Axis/MakeScale.h"
#include "Base/Axis/Scale.h"
#include "Param/Distrib/Distributions.h"
#include "Sim/Scan/AlphaScan.h"
#include "Sim/Scan/QzScan.h"
#include "Tests/GTestWrapper/google_test.h"

TEST(SpecularScan, AngularScanClone)
{
    AlphaScan scan(3, 0.1, 0.3);
    scan.setWavelength(0.123);
    EXPECT_EQ(scan.commonWavelength(), 0.123);

    std::unique_ptr<AlphaScan> scan_clone(scan.clone());
    EXPECT_EQ(*scan_clone->coordinateAxis(), *scan.coordinateAxis());
    EXPECT_NE(scan_clone->coordinateAxis(), scan.coordinateAxis());
    EXPECT_EQ(scan_clone->commonWavelength(), scan.commonWavelength());

    std::unique_ptr<AlphaScan> scan_clone2(scan.clone());
    EXPECT_EQ(*scan_clone2->coordinateAxis(), *scan.coordinateAxis());
    EXPECT_EQ(scan_clone2->commonWavelength(), scan.commonWavelength());
}

TEST(SpecularScan, QzScanClone)
{
    QzScan scan(std::vector<double>{0.1, 0.2, 0.3});
    scan.setOffset(2.22);
    const auto distribution = DistributionGaussian(.4711, 1., 25, 3.);
    scan.setRelativeQResolution(distribution, 0.02);

    std::unique_ptr<QzScan> scan_clone(scan.clone());
    EXPECT_EQ(*scan_clone->coordinateAxis(), *scan.coordinateAxis());
    EXPECT_NE(scan_clone->coordinateAxis(), scan.coordinateAxis());

    const auto* resolution = scan.qzDistribution();
    const auto* distributionClone = dynamic_cast<const DistributionGaussian*>(resolution);
    EXPECT_NE(distributionClone, nullptr);
    EXPECT_NE(distributionClone, &distribution);
    if (distributionClone) {
        EXPECT_EQ(distributionClone->relSamplingWidth(), 3.);
        EXPECT_EQ(distributionClone->nSamples(), 25);
    }
}

TEST(SpecularScan, ErrorInput)
{
    EXPECT_THROW(QzScan(std::vector<double>{-0.01, 0.2, 0.3}), std::runtime_error);
    EXPECT_THROW(QzScan(std::vector<double>{0.1, 0.3, 0.2}), std::runtime_error);
}