| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #include "na64util/numerical/linalg.hh" | ||
| 2 | |||
| 3 | #include <gtest/gtest.h> | ||
| 4 | |||
| 5 | namespace na64dp { | ||
| 6 | namespace test { | ||
| 7 | |||
| 8 | using namespace util; | ||
| 9 | |||
| 10 | 8 | TEST( ArtTrack, unitMatrixMult ) { | |
| 11 | // simple unit matrices | ||
| 12 | 2 | Matrix3 unitMx = {{ {1, 0, 0} | |
| 13 | , {0, 1, 0} | ||
| 14 | , {0, 0, 1} | ||
| 15 | }}; | ||
| 16 | 2 | Vec3 v = {{1, 2, 3}}; | |
| 17 | // | ||
| 18 |
1/1✓ Branch 1 taken 1 times.
|
2 | Vec3 vv = unitMx*v; |
| 19 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_EQ(vv.r[0], 1); |
| 20 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_EQ(vv.r[1], 2); |
| 21 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_EQ(vv.r[2], 3); |
| 22 | // | ||
| 23 | 2 | Matrix3 m = {{ {1, 2, 3} | |
| 24 | , {4, 5, 6} | ||
| 25 | , {7, 8, 9} | ||
| 26 | }}; | ||
| 27 |
1/1✓ Branch 1 taken 1 times.
|
2 | Matrix3 rm = unitMx*m; |
| 28 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_EQ( rm.cm[0][0], 1 ); |
| 29 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_EQ( rm.cm[1][1], 5 ); |
| 30 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_EQ( rm.cm[2][2], 9 ); |
| 31 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_EQ( rm.cm[1][2], 6 ); |
| 32 | 2 | } | |
| 33 | |||
| 34 | 8 | TEST( ArtTrack, rotationMatrix ) { | |
| 35 | // simple rotation matrices | ||
| 36 |
1/1✓ Branch 1 taken 1 times.
|
2 | Matrix3 mOx = arbitrary_rotation_matrix<Float_t>({{1, 0, 0}}, M_PI/2) |
| 37 |
1/1✓ Branch 1 taken 1 times.
|
2 | , mOy = arbitrary_rotation_matrix<Float_t>({{0, 1, 0}}, M_PI/2) |
| 38 |
1/1✓ Branch 1 taken 1 times.
|
2 | , mOz = arbitrary_rotation_matrix<Float_t>({{0, 0, 1}}, M_PI/2) |
| 39 | ; | ||
| 40 | 2 | Vec3 v = {{1, 0, 0}}; | |
| 41 | // We're testing very simple rotation here | ||
| 42 | { | ||
| 43 |
1/1✓ Branch 1 taken 1 times.
|
2 | Vec3 vv = mOx*v; |
| 44 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( vv.r[0], 1, 1e-6 ); |
| 45 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( vv.r[1], 0, 1e-6 ); |
| 46 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( vv.r[2], 0, 1e-6 ); |
| 47 | } | ||
| 48 | { | ||
| 49 |
1/1✓ Branch 1 taken 1 times.
|
2 | Vec3 vv = mOz*v; |
| 50 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( vv.r[0], 0, 1e-6 ); |
| 51 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( vv.r[1], 1, 1e-6 ); |
| 52 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( vv.r[2], 0, 1e-6 ); |
| 53 |
1/1✓ Branch 1 taken 1 times.
|
2 | vv = mOy*vv; |
| 54 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( vv.r[0], 0, 1e-6 ); |
| 55 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( vv.r[1], 1, 1e-6 ); |
| 56 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( vv.r[2], 0, 1e-6 ); |
| 57 | } | ||
| 58 | 2 | } | |
| 59 | |||
| 60 | 8 | TEST( ArtTrack, unitInvertedIsUnit ) { | |
| 61 | 2 | Matrix3 unit{{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}}; | |
| 62 |
1/1✓ Branch 1 taken 1 times.
|
2 | Matrix3 unitInv = unit.inv(); |
| 63 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( unitInv.cm[0][0], 1, 1e-6 ); |
| 64 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( unitInv.cm[1][1], 1, 1e-6 ); |
| 65 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( unitInv.cm[2][2], 1, 1e-6 ); |
| 66 | 2 | } | |
| 67 | |||
| 68 | 8 | TEST( ArtTrack, testInversion ) { | |
| 69 | 2 | Matrix3 m{{ {1, 2, 3} | |
| 70 | , {0, 1, 4} | ||
| 71 | , {5, 6, 0} | ||
| 72 | }}; | ||
| 73 | |||
| 74 |
1/1✓ Branch 1 taken 1 times.
|
2 | Matrix3 mi = m.inv(); |
| 75 |
1/1✓ Branch 1 taken 1 times.
|
2 | Matrix3 unit = m*mi; |
| 76 | |||
| 77 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( unit.cm[0][0], 1, 1e-6 ); |
| 78 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( unit.cm[1][1], 1, 1e-6 ); |
| 79 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | EXPECT_NEAR( unit.cm[2][2], 1, 1e-6 ); |
| 80 | 2 | } | |
| 81 | |||
| 82 | } // namespace ::arttrack::test | ||
| 83 | } // namespace arttrack | ||
| 84 |