Documentation is the directory of the documentation
[hkl.git] / test / source_test.cpp
blobc9b92bf99aef4b8c6bb8396616c0cb467803835b
1 // File to test matrix and vector implementation.
2 #include "source_test.h"
4 CPPUNIT_TEST_SUITE_REGISTRATION( sourceTest );
6 void
7 sourceTest::setUp(void)
9 _v.data[X] = 1;
10 _v.data[Y] = 0;
11 _v.data[Z] = 0;
14 void
15 sourceTest::tearDown(void) {}
17 void
18 sourceTest::Constructor(void)
20 Source source(1., &_v);
22 CPPUNIT_ASSERT_EQUAL(Value(1.), source.get_waveLength());
23 CPPUNIT_ASSERT_EQUAL(HKL_TRUE, ::hkl_svector_cmp(&_v, source.get_direction()));
26 void
27 sourceTest::Equal(void)
29 const Source s(1., &_v);
31 CPPUNIT_ASSERT_EQUAL(s, s);
34 void
35 sourceTest::CopyConstructor(void)
37 const Source s1(1., &_v);
38 const Source s2(s1);
40 CPPUNIT_ASSERT_EQUAL(s1, s2);
43 void
44 sourceTest::SetWaveLength(void)
46 Source s(1.54, &_v);
48 CPPUNIT_ASSERT_THROW(s.setWaveLength(0.0), HKLException);
50 CPPUNIT_ASSERT_NO_THROW(s.setWaveLength(1.));
51 CPPUNIT_ASSERT_EQUAL(Value(1.), s.get_waveLength());
55 void
56 sourceTest::SetDirection(void)
58 Source s(1., &_v);
59 hkl_svector axe = {{1, 1, 0}};
60 hkl_svector axe_ref = {{1/sqrt(2.), 1/sqrt(2.), 0}};
62 hkl_svector null = {{0, 0, 0}};
63 CPPUNIT_ASSERT_THROW(s.setDirection(&null), HKLException);
64 CPPUNIT_ASSERT_NO_THROW(s.setDirection(&axe));
66 CPPUNIT_ASSERT_EQUAL(HKL_TRUE, ::hkl_svector_cmp(&axe_ref, s.get_direction()));
69 void
70 sourceTest::GetSetKi(void)
72 Source s(1.54, &_v);
74 hkl_svector ki;
75 hkl_svector ki_ref;
77 ki_ref = _v;
78 ::hkl_svector_times_double(&ki_ref, HKL_TAU / 1.54);
79 s.get_ki(&ki);
80 CPPUNIT_ASSERT_EQUAL(HKL_TRUE, ::hkl_svector_cmp(&ki_ref, &ki));
82 hkl_svector null = {{0, 0, 0}};
83 CPPUNIT_ASSERT_THROW(s.set_ki(&null), HKLException);
85 ki_ref.data[X] = 1;
86 ki_ref.data[Y] = 1;
87 ki_ref.data[Z] = 0;
88 CPPUNIT_ASSERT_NO_THROW(s.set_ki(&ki_ref));
89 s.get_ki(&ki);
90 CPPUNIT_ASSERT_EQUAL(HKL_TRUE, ::hkl_svector_cmp(&ki_ref, &ki));