Fix tests
This commit is contained in:
parent
9b0a5e066f
commit
10700da996
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user