etrobocon2018 feat.KatLab  770af34cce41ae9c30c41303275e1add2daae0c3 (with uncommitted changes)
 全て クラス 名前空間 ファイル 関数 変数 列挙型 列挙値 フレンド マクロ定義 ページ
MotorAngleTest.cpp
[詳解]
1 
4 #include "MotorAngle.h"
5 #include <gtest/gtest.h>
6 
7 namespace etrobocon2018_test {
8  TEST(MotorAngleTest, absoluteAngleMeanTestPositive)
9  {
10  MotorAngle angle;
11  std::int32_t left = 10;
12  std::int32_t right = 20;
13 
14  float mean = (left + right) / 2.0f;
15  ASSERT_FLOAT_EQ(mean, angle.absoluteAngleMean(left, right));
16  }
17 
18  TEST(MotorAngleTest, absoluteAngleMeanTestNegative)
19  {
20  MotorAngle angle;
21  std::int32_t left = -10;
22  std::int32_t right = 30;
23 
24  float mean = (left + right) / 2.0f;
25  ASSERT_FLOAT_EQ(mean, angle.absoluteAngleMean(left, right));
26 
27  left = 20;
28  right = -50;
29  mean = (left + right) / 2.0f;
30  ASSERT_FLOAT_EQ(mean, angle.absoluteAngleMean(left, right));
31  }
32 
33  TEST(MotorAngleTest, absoluteAngleMeanTestZero)
34  {
35  MotorAngle angle;
36  std::int32_t left = 0;
37  std::int32_t right = 0;
38 
39  float mean = (left + right) / 2.0f;
40  ASSERT_FLOAT_EQ(mean, angle.absoluteAngleMean(left, right));
41  }
42 
43  TEST(MotorAngleTest, relativeAngleMeanTestPositive)
44  {
45  MotorAngle angle;
46  std::int32_t left = 10;
47  std::int32_t right = 10;
48  float mean = (left + right) / 2.0f;
49 
50  ASSERT_FLOAT_EQ(mean, angle.relativeAngleMean(left, right));
51 
52  std::int32_t left2 = 20;
53  std::int32_t right2 = 30;
54  float mean2 = ((left2 - left) + (right2 - right)) / 2.0f;
55 
56  ASSERT_FLOAT_EQ(mean2, angle.relativeAngleMean(left2, right2));
57  }
58 
59  TEST(MotorAngleTest, relativeAngleMeanNegative)
60  {
61  MotorAngle angle;
62  std::int32_t left = -10;
63  std::int32_t right = -20;
64  float mean = (left + right) / 2.0f;
65  ASSERT_FLOAT_EQ(mean, angle.relativeAngleMean(left, right));
66 
67  std::int32_t left2 = -20;
68  std::int32_t right2 = -30;
69  float mean2 = ((left2 - left) + (right2 - right)) / 2.0f;
70 
71  ASSERT_FLOAT_EQ(mean2, angle.relativeAngleMean(left2, right2));
72  }
73 
74  TEST(MotorAngleTest, relativeAngleMeanZero)
75  {
76  MotorAngle angle;
77  ASSERT_FLOAT_EQ(0.0f, angle.relativeAngleMean(0, 0));
78  ASSERT_FLOAT_EQ(0.0f, angle.relativeAngleMean(0, 0));
79  }
80 
81  TEST(MotorAngleTest, angularDifferenceTestPositive)
82  {
83  MotorAngle angle;
84  std::int32_t left = 10;
85  std::int32_t right = 20;
86 
87  ASSERT_FLOAT_EQ(right - left, angle.angularDifference(left, right));
88  }
89 
90  TEST(MotorAngleTest, angularDifferenceTestNegative)
91  {
92  MotorAngle angle;
93  std::int32_t left = -10;
94  std::int32_t right = -20;
95 
96  ASSERT_FLOAT_EQ(right - left, angle.angularDifference(left, right));
97  }
98 
99  TEST(MotorAngleTest, angularDifferenceTestZero)
100  {
101  MotorAngle angle;
102  ASSERT_FLOAT_EQ(0.0f, angle.angularDifference(0, 0));
103  }
104 
105  TEST(MotorAngleTest, absoluteValueOfAngleTest)
106  {
107  MotorAngle angle;
108  ASSERT_EQ(10, angle.absoluteValueOfAngle(10));
109  ASSERT_EQ(10, angle.absoluteValueOfAngle(-10));
110  }
111 } // namespace etrobocon2018_test
float relativeAngleMean(std::int32_t current_left_motor, std::int32_t current_right_motor)
左右モータの相対角度の平均値を計算する
Definition: MotorAngle.cpp:51
float angularDifference(std::int32_t left_motor, std::int32_t right_motor)
左右モータ角度の差を計算する(右手系/反時計回りが正)
Definition: MotorAngle.cpp:72
std::int32_t absoluteValueOfAngle(std::int32_t motor)
モータ角度の絶対値を計算する
Definition: MotorAngle.cpp:83
TEST(AIAnswerArrayTest, construct)
float absoluteAngleMean(std::int32_t left_motor, std::int32_t right_motor)
左右モータの絶対角度の平均値を計算する
Definition: MotorAngle.cpp:39
左右モータの回転角に関するクラス(旧Distance.h, SelfLocalization内のMotorAngle)