938e8e14ddf838a0d7fff35e3b0ba14841230af3
1 #include <cxxtest/TestSuite.h>
3 #include <libnr/nr-scale.h>
4 #include <libnr/nr-scale-ops.h>
6 class NrScaleTest : public CxxTest::TestSuite
7 {
8 public:
10 NrScaleTest() :
11 sa( 1.5, 2.0 ),
12 b( -2.0, 3.0 ),
13 sb( b )
14 {
15 }
16 virtual ~NrScaleTest() {}
18 // createSuite and destroySuite get us per-suite setup and teardown
19 // without us having to worry about static initialization order, etc.
20 static NrScaleTest *createSuite() { return new NrScaleTest(); }
21 static void destroySuite( NrScaleTest *suite ) { delete suite; }
23 NR::scale const sa;
24 NR::Point const b;
25 NR::scale const sb;
29 void testXY_CtorArrayOperator(void)
30 {
31 TS_ASSERT_EQUALS( sa[NR::X], 1.5 );
32 TS_ASSERT_EQUALS( sa[NR::Y], 2.0 );
33 TS_ASSERT_EQUALS( sa[0u], 1.5 );
34 TS_ASSERT_EQUALS( sa[1u], 2.0 );
35 }
38 void testCopyCtor_AssignmentOp_NotEquals(void)
39 {
40 NR::scale const sa_copy(sa);
41 TS_ASSERT_EQUALS( sa, sa_copy );
42 TS_ASSERT(!( sa != sa_copy ));
43 TS_ASSERT( sa != sb );
44 }
46 void testAssignmentOp(void)
47 {
48 NR::scale sa_eq(sb);
49 sa_eq = sa;
50 TS_ASSERT_EQUALS( sa, sa_eq );
51 }
53 void testPointCtor(void)
54 {
55 TS_ASSERT_EQUALS( sb[NR::X], b[NR::X] );
56 TS_ASSERT_EQUALS( sb[NR::Y], b[NR::Y] );
57 }
59 void testOpStarPointScale(void)
60 {
61 NR::Point const ab( b * sa );
62 TS_ASSERT_EQUALS( ab, NR::Point(-3.0, 6.0) );
63 }
65 void testOpStarScaleScale(void)
66 {
67 NR::scale const sab( sa * sb );
68 TS_ASSERT_EQUALS( sab, NR::scale(-3.0, 6.0) );
69 }
71 void testOpDivScaleScale(void)
72 {
73 NR::scale const sa_b( sa / sb );
74 NR::scale const exp_sa_b(-0.75, 2./3.);
75 TS_ASSERT_EQUALS( sa_b[0], exp_sa_b[0] );
76 // TS_ASSERT_EQUALS( fabs( sa_b[1] - exp_sa_b[1] ) < 1e-10 );
77 TS_ASSERT_DELTA( sa_b[1], exp_sa_b[1], 1e-10 );
78 }
79 };
81 /*
82 Local Variables:
83 mode:c++
84 c-file-style:"stroustrup"
85 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
86 indent-tabs-mode:nil
87 fill-column:99
88 End:
89 */
90 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :