From 10700da9967fd0b7c7a67d8b2a558e4c74056ffd Mon Sep 17 00:00:00 2001 From: Pascal Serrarens Date: Mon, 5 Aug 2024 11:47:07 +0200 Subject: [PATCH] Fix tests --- test/BB2B_Test.cc | 128 ++++++++++++++++++++++++---------------------- 1 file changed, 67 insertions(+), 61 deletions(-) diff --git a/test/BB2B_Test.cc b/test/BB2B_Test.cc index 66643a9..b70f467 100644 --- a/test/BB2B_Test.cc +++ b/test/BB2B_Test.cc @@ -12,9 +12,10 @@ /// @brief A Distance sensor with testing support /// With this sensor it is possible to simulate a measurement class MockDistanceSensor : public DistanceSensor { -public: - MockDistanceSensor() : DistanceSensor(){}; - MockDistanceSensor(float triggerDistance) : DistanceSensor(triggerDistance){}; + public: + MockDistanceSensor() : DistanceSensor() {}; + MockDistanceSensor(float triggerDistance) + : DistanceSensor(triggerDistance) {}; void SimulateMeasurement(float distance) { this->distance = distance; } }; @@ -22,20 +23,21 @@ public: TEST(BB2B, NoObstacle) { #pragma region Setup - Motor *motorLeft = new Motor(); - Motor *motorRight = new Motor(); + Motor* motorLeft = new Motor(); + Motor* motorRight = new Motor(); - DifferentialDrive *propulsion = new DifferentialDrive(motorLeft, motorRight); + DifferentialDrive* propulsion = new DifferentialDrive(motorLeft, motorRight); propulsion->SetDimensions( - 1 / Angle::pi, // we use this, such that motor speed 1 -> velocity 1 m/s + 1 / Passer::LinearAlgebra::pi, // we use this, such that motor speed 1 -> + // velocity 1 m/s 1); - Roboid *roboid = new Roboid(propulsion); + Roboid* roboid = new Roboid(propulsion); - MockDistanceSensor *sensorLeft = new MockDistanceSensor(10.0F); + MockDistanceSensor* sensorLeft = new MockDistanceSensor(10.0F); sensorLeft->position.horizontalAngle = -30; roboid->AddChild(sensorLeft); - MockDistanceSensor *sensorRight = new MockDistanceSensor(10.0F); + MockDistanceSensor* sensorRight = new MockDistanceSensor(10.0F); sensorRight->SetParent(roboid); sensorRight->position.horizontalAngle = 30; @@ -49,8 +51,8 @@ TEST(BB2B, NoObstacle) { float distanceLeft = sensorLeft->GetDistance(); float distanceRight = sensorRight->GetDistance(); - EXPECT_LT(distanceLeft, 0.0F); // negative values are invalid - EXPECT_LT(distanceRight, 0.0F); // negative values are invalid + EXPECT_LT(distanceLeft, 0.0F); // negative values are invalid + EXPECT_LT(distanceRight, 0.0F); // negative values are invalid #pragma endregion @@ -68,8 +70,8 @@ TEST(BB2B, NoObstacle) { distanceLeft = sensorLeft->GetDistance(); distanceRight = sensorRight->GetDistance(); - EXPECT_LT(distanceLeft, 0.0F); // negative values are invalid - EXPECT_LT(distanceRight, 0.0F); // negative values are invalid + EXPECT_LT(distanceLeft, 0.0F); // negative values are invalid + EXPECT_LT(distanceRight, 0.0F); // negative values are invalid int trackedObjectCount = roboid->perception->TrackedObjectCount(); EXPECT_EQ(trackedObjectCount, 0); @@ -86,7 +88,7 @@ TEST(BB2B, NoObstacle) { EXPECT_FLOAT_EQ(leftMotorSpeed, 1.0F); EXPECT_FLOAT_EQ(rightMotorSpeed, 1.0F); - DifferentialDrive *diffDrive = (DifferentialDrive *)roboid->propulsion; + DifferentialDrive* diffDrive = (DifferentialDrive*)roboid->propulsion; diffDrive->SetMotorTargetSpeeds(leftMotorSpeed, rightMotorSpeed); float leftActualSpeed = motorLeft->GetActualSpeed(); @@ -96,15 +98,15 @@ TEST(BB2B, NoObstacle) { EXPECT_FLOAT_EQ(rightActualSpeed, 1.0F); Polar velocity = - diffDrive->GetVelocity(); // this depends on the wheel diameter. + diffDrive->GetVelocity(); // this depends on the wheel diameter. EXPECT_FLOAT_EQ(velocity.distance, 1.0F); - EXPECT_FLOAT_EQ(velocity.angle, 0.0F); + EXPECT_FLOAT_EQ(velocity.angle.ToFloat(), 0.0F); trackedObjectCount = roboid->perception->TrackedObjectCount(); EXPECT_EQ(trackedObjectCount, 0); - InterestingThing **trackedObjects = roboid->perception->GetTrackedObjects(); - InterestingThing *trackedObject = nullptr; + InterestingThing** trackedObjects = roboid->perception->GetTrackedObjects(); + InterestingThing* trackedObject = nullptr; for (int i = 0; i < roboid->perception->maxObjectCount; i++) { if (trackedObjects[i] != nullptr) trackedObject = trackedObjects[0]; @@ -117,21 +119,22 @@ TEST(BB2B, NoObstacle) { TEST(BB2B, ObstacleLeft) { #pragma region Setup - Motor *motorLeft = new Motor(); - Motor *motorRight = new Motor(); + Motor* motorLeft = new Motor(); + Motor* motorRight = new Motor(); - DifferentialDrive *propulsion = new DifferentialDrive(motorLeft, motorRight); + DifferentialDrive* propulsion = new DifferentialDrive(motorLeft, motorRight); propulsion->SetDimensions( - 1 / Angle::pi, // we use this, such that motor speed 1 -> velocity 1 m/s - 8 / Angle::pi); // we use this, such that angular velocity will be 90 - // degrees per second + 1 / Passer::LinearAlgebra::pi, // we use this, such that motor speed 1 -> + // velocity 1 m/s + 8 / Passer::LinearAlgebra::pi); // we use this, such that angular + // velocity will be 90 degrees per second - Roboid *roboid = new Roboid(propulsion); + Roboid* roboid = new Roboid(propulsion); - MockDistanceSensor *sensorLeft = new MockDistanceSensor(); + MockDistanceSensor* sensorLeft = new MockDistanceSensor(); sensorLeft->position.horizontalAngle = -30; roboid->AddChild(sensorLeft); - MockDistanceSensor *sensorRight = new MockDistanceSensor(); + MockDistanceSensor* sensorRight = new MockDistanceSensor(); sensorRight->SetParent(roboid); sensorRight->position.horizontalAngle = 30; @@ -154,7 +157,7 @@ TEST(BB2B, ObstacleLeft) { float distanceRight = sensorRight->GetDistance(); EXPECT_FLOAT_EQ(distanceLeft, 0.1F); - EXPECT_LT(distanceRight, 0.0F); // invalid + EXPECT_LT(distanceRight, 0.0F); // invalid // Obstacle bool obstacleLeft = roboid->perception->ObjectNearby(-30); @@ -168,8 +171,8 @@ TEST(BB2B, ObstacleLeft) { EXPECT_EQ(trackedObjectCount, 1); // Find the single tracked object - InterestingThing **trackedObjects = roboid->perception->GetTrackedObjects(); - InterestingThing *trackedObject = nullptr; + InterestingThing** trackedObjects = roboid->perception->GetTrackedObjects(); + InterestingThing* trackedObject = nullptr; for (int i = 0; i < roboid->perception->maxObjectCount; i++) { if (trackedObjects[i] != nullptr) trackedObject = trackedObjects[i]; @@ -177,7 +180,7 @@ TEST(BB2B, ObstacleLeft) { ASSERT_FALSE(trackedObject == nullptr); EXPECT_FLOAT_EQ(trackedObject->position.distance, 0.1F); - EXPECT_FLOAT_EQ(trackedObject->position.horizontalAngle, -30); + EXPECT_FLOAT_EQ(trackedObject->position.horizontalAngle.ToFloat(), -30); #pragma endregion @@ -190,7 +193,7 @@ TEST(BB2B, ObstacleLeft) { EXPECT_FLOAT_EQ(leftMotorSpeed, 1.0F); EXPECT_FLOAT_EQ(rightMotorSpeed, -1.0F); - DifferentialDrive *diffDrive = (DifferentialDrive *)roboid->propulsion; + DifferentialDrive* diffDrive = (DifferentialDrive*)roboid->propulsion; diffDrive->SetMotorTargetSpeeds(leftMotorSpeed, rightMotorSpeed); #pragma endregion @@ -205,11 +208,11 @@ TEST(BB2B, ObstacleLeft) { // Roboid velocity Polar velocity = - diffDrive->GetVelocity(); // this depends on the wheel diameter. + diffDrive->GetVelocity(); // this depends on the wheel diameter. EXPECT_FLOAT_EQ(velocity.distance, 0.0F); float angularVelocity = - diffDrive->GetAngularVelocity(); // this also depends on wheel separation + diffDrive->GetAngularVelocity(); // this also depends on wheel separation EXPECT_FLOAT_EQ(angularVelocity, 90.0F); #pragma endregion @@ -218,21 +221,23 @@ TEST(BB2B, ObstacleLeft) { TEST(BB2B, ObstacleRight) { #pragma region Setup - Motor *motorLeft = new Motor(); - Motor *motorRight = new Motor(); + Motor* motorLeft = new Motor(); + Motor* motorRight = new Motor(); - DifferentialDrive *propulsion = new DifferentialDrive(motorLeft, motorRight); + DifferentialDrive* propulsion = new DifferentialDrive(motorLeft, motorRight); propulsion->SetDimensions( - 1 / Angle::pi, // we use this, such that motor speed 1 -> velocity 1 m/s - 8 / Angle::pi); // we use this, such that angular velocity will be 90 - // degrees per second + 1 / Passer::LinearAlgebra::pi, // we use this, such that motor speed 1 -> + // velocity 1 m/s + 8 / Passer::LinearAlgebra::pi); // we use this, such that angular + // velocity will be 90 degrees per + // second - Roboid *roboid = new Roboid(propulsion); + Roboid* roboid = new Roboid(propulsion); - MockDistanceSensor *sensorLeft = new MockDistanceSensor(); + MockDistanceSensor* sensorLeft = new MockDistanceSensor(); sensorLeft->position.horizontalAngle = -30; roboid->AddChild(sensorLeft); - MockDistanceSensor *sensorRight = new MockDistanceSensor(); + MockDistanceSensor* sensorRight = new MockDistanceSensor(); sensorRight->SetParent(roboid); sensorRight->position.horizontalAngle = 30; @@ -254,7 +259,7 @@ TEST(BB2B, ObstacleRight) { float distanceLeft = sensorLeft->GetDistance(); float distanceRight = sensorRight->GetDistance(); - EXPECT_LT(distanceLeft, 0.0F); // invalid + EXPECT_LT(distanceLeft, 0.0F); // invalid EXPECT_FLOAT_EQ(distanceRight, 0.1F); // Obstacle @@ -269,8 +274,8 @@ TEST(BB2B, ObstacleRight) { EXPECT_EQ(trackedObjectCount, 1); // Find the single tracked object - InterestingThing **trackedObjects = roboid->perception->GetTrackedObjects(); - InterestingThing *trackedObject = nullptr; + InterestingThing** trackedObjects = roboid->perception->GetTrackedObjects(); + InterestingThing* trackedObject = nullptr; for (int i = 0; i < roboid->perception->maxObjectCount; i++) { if (trackedObjects[i] != nullptr) trackedObject = trackedObjects[i]; @@ -278,7 +283,7 @@ TEST(BB2B, ObstacleRight) { ASSERT_FALSE(trackedObject == nullptr); EXPECT_FLOAT_EQ(trackedObject->position.distance, 0.1F); - EXPECT_FLOAT_EQ(trackedObject->position.horizontalAngle, 30); + EXPECT_FLOAT_EQ(trackedObject->position.horizontalAngle.ToFloat(), 30); #pragma endregion @@ -291,7 +296,7 @@ TEST(BB2B, ObstacleRight) { EXPECT_FLOAT_EQ(leftMotorSpeed, -1.0F); EXPECT_FLOAT_EQ(rightMotorSpeed, 1.0F); - DifferentialDrive *diffDrive = (DifferentialDrive *)roboid->propulsion; + DifferentialDrive* diffDrive = (DifferentialDrive*)roboid->propulsion; diffDrive->SetMotorTargetSpeeds(leftMotorSpeed, rightMotorSpeed); #pragma endregion @@ -317,20 +322,21 @@ TEST(BB2B, ObstacleRight) { TEST(BB2B, ObstacleBoth) { #pragma region Setup - Motor *motorLeft = new Motor(); - Motor *motorRight = new Motor(); + Motor* motorLeft = new Motor(); + Motor* motorRight = new Motor(); - DifferentialDrive *propulsion = new DifferentialDrive(motorLeft, motorRight); + DifferentialDrive* propulsion = new DifferentialDrive(motorLeft, motorRight); propulsion->SetDimensions( - 1 / Angle::pi, // we use this, such that motor speed 1 -> velocity 1 m/s - 8 / Angle::pi); // we use this, such that angular velocity will be 90 - // degrees per second - Roboid *roboid = new Roboid(propulsion); + 1 / Passer::LinearAlgebra::pi, // we use this, such that motor speed 1 -> + // velocity 1 m/s + 8 / Passer::LinearAlgebra::pi); // we use this, such that angular + // velocity will be 90 degrees per second + Roboid* roboid = new Roboid(propulsion); - MockDistanceSensor *sensorLeft = new MockDistanceSensor(); + MockDistanceSensor* sensorLeft = new MockDistanceSensor(); sensorLeft->position.horizontalAngle = -30; roboid->AddChild(sensorLeft); - MockDistanceSensor *sensorRight = new MockDistanceSensor(); + MockDistanceSensor* sensorRight = new MockDistanceSensor(); sensorRight->SetParent(roboid); sensorRight->position.horizontalAngle = 30; @@ -367,7 +373,7 @@ TEST(BB2B, ObstacleBoth) { EXPECT_EQ(trackedObjectCount, 2); // Find the single tracked object - InterestingThing **trackedObjects = roboid->perception->GetTrackedObjects(); + InterestingThing** trackedObjects = roboid->perception->GetTrackedObjects(); for (int i = 0; i < roboid->perception->maxObjectCount; i++) { if (trackedObjects[i] != nullptr) { EXPECT_FLOAT_EQ(trackedObjects[i]->position.distance, 0.1F); @@ -387,7 +393,7 @@ TEST(BB2B, ObstacleBoth) { EXPECT_FLOAT_EQ(leftMotorSpeed, -1.0F); EXPECT_FLOAT_EQ(rightMotorSpeed, -1.0F); - DifferentialDrive *diffDrive = (DifferentialDrive *)roboid->propulsion; + DifferentialDrive* diffDrive = (DifferentialDrive*)roboid->propulsion; diffDrive->SetMotorTargetSpeeds(leftMotorSpeed, rightMotorSpeed); #pragma endregion @@ -403,7 +409,7 @@ TEST(BB2B, ObstacleBoth) { // Roboid velocity Polar velocity = diffDrive->GetVelocity(); EXPECT_FLOAT_EQ(velocity.distance, 1.0F); - EXPECT_FLOAT_EQ(velocity.angle, 180.0F); + EXPECT_FLOAT_EQ(velocity.angle.ToFloat(), 180.0F); float angularVelocity = diffDrive->GetAngularVelocity(); EXPECT_FLOAT_EQ(angularVelocity, 0.0F);