Skip to content
Snippets Groups Projects
Commit fa4c75f8 authored by Jerome Hue's avatar Jerome Hue
Browse files

[UT] Harmonize tests by using approxEq<> everywhere

Previously, tests used both `approxEq<>` and a for-loop combined with
`std::abs()` to test the equality of two tensors.
`approxEq`` results in fewer and clearer lines. It is also more
configurable.
parent aa30d4b3
No related branches found
No related tags found
No related merge requests found
Pipeline #54797 canceled
......@@ -9,6 +9,7 @@
*
********************************************************************************/
#include <aidge/utils/TensorUtils.hpp>
#include <catch2/catch_test_macros.hpp>
#include <memory>
#include <cstdlib>
......@@ -100,11 +101,8 @@ TEST_CASE("[cpu/operator] AvgPooling(forward)", "[AvgPooling][CPU]") {
op->setBackend("cpu");
myAvgPool->forward();
op->getOutput(0)->print();
float* outPtr = static_cast<float*>(op->getOutput(0)->getImpl()->rawPtr());
float* expectedOutPtr = static_cast<float*>(myOutput.getImpl()->rawPtr());
for (std::size_t i = 0; i < 1; ++i) {
REQUIRE(std::abs(outPtr[i] - expectedOutPtr[i]) < 0.00001);
}
REQUIRE(approxEq<float>(*(op->getOutput(0)), myOutput, 0, 1E-5));
}
// std::cout << static_cast<Tensor>((*op)["weight"])[0][0][0][0] << std::endl;
}
\ No newline at end of file
......@@ -9,6 +9,7 @@
*
********************************************************************************/
#include <aidge/utils/TensorUtils.hpp>
#include <catch2/catch_test_macros.hpp>
#include <memory>
......@@ -88,11 +89,6 @@ TEST_CASE("[cpu/operator] BatchNorm(forward)", "[BatchNorm][CPU]") {
op->setBackend("cpu");
myBatchNorm->forward();
float* resPtr = static_cast<float*>(op->getOutput(0)->getImpl()->rawPtr());
float* expectedPtr = static_cast<float*>(myOutput->getImpl()->rawPtr());
for (std::size_t i = 0; i< 54; ++i) {
REQUIRE(std::abs(resPtr[i]-expectedPtr[i]) < 0.00001);
}
REQUIRE(approxEq<float>(*op->getOutput(0), *myOutput, 0, 1E-5));
// std::cout << static_cast<Tensor>((*op)["weight"])[0][0][0][0] << std::endl;
}
\ No newline at end of file
......@@ -9,6 +9,7 @@
*
********************************************************************************/
#include <aidge/utils/TensorUtils.hpp>
#include <catch2/catch_test_macros.hpp>
#include <cstdlib>
#include <memory>
......@@ -245,10 +246,6 @@ TEST_CASE("[cpu/operator] Conv(forward)", "[Conv][CPU]") {
op->setBackend("cpu");
myConv->forward();
float* resPtr = static_cast<float*>(op->getOutput(0)->getImpl()->rawPtr());
float* expectedPtr = static_cast<float*>(expectedOutput.getImpl()->rawPtr());
for (std::size_t i = 0; i< expectedOutput.size(); ++i) {
REQUIRE(std::abs(resPtr[i]-expectedPtr[i]) < 0.00001);
}
REQUIRE(approxEq<float>(*op->getOutput(0),expectedOutput, 0, 1E-5));
}
}
\ No newline at end of file
......@@ -9,6 +9,7 @@
*
********************************************************************************/
#include <aidge/utils/TensorUtils.hpp>
#include <catch2/catch_test_macros.hpp>
#include "aidge/data/Tensor.hpp"
......@@ -21,7 +22,7 @@
using namespace Aidge;
TEST_CASE("[cpu/operator] Erf(forward)") {
TEST_CASE("[cpu/operator] Erf(forward)", "[CPU][Erf]") {
SECTION("1D Tensor") {
std::shared_ptr<Tensor> input0 = std::make_shared<Tensor>(Array1D<float,10> {
{0.41384590, 0.43120754, 0.93762982, 0.31049860, 0.77547199, 0.09514862,
......@@ -39,11 +40,7 @@ TEST_CASE("[cpu/operator] Erf(forward)") {
op->setBackend("cpu");
myErf->forward();
float* resPtr = static_cast<float*>(op->getOutput(0)->getImpl()->rawPtr());
float* expectedPtr = static_cast<float*>(expectedOutput->getImpl()->rawPtr());
for (std::size_t i = 0; i< expectedOutput->size(); ++i) {
REQUIRE(std::abs(resPtr[i]-expectedPtr[i]) < 0.00001);
}
REQUIRE(approxEq<float>(*(op->getOutput(0)), *(expectedOutput)));
}
SECTION("3D Tensor") {
......@@ -79,10 +76,6 @@ TEST_CASE("[cpu/operator] Erf(forward)") {
op->setBackend("cpu");
myErf->forward();
float* resPtr = static_cast<float*>(op->getOutput(0)->getImpl()->rawPtr());
float* expectedPtr = static_cast<float*>(expectedOutput->getImpl()->rawPtr());
for (std::size_t i = 0; i< expectedOutput->size(); ++i) {
REQUIRE(std::abs(resPtr[i]-expectedPtr[i]) < 0.00001);
}
REQUIRE(approxEq<float>(*(op->getOutput(0)), *(expectedOutput)));
}
}
\ No newline at end of file
......@@ -182,11 +182,7 @@ TEST_CASE("[cpu/operator] MetaOperator", "[MetaOperator][CPU]") {
myConv->forward();
convOp -> getOutput(0) -> print();
double* computedOutput = static_cast<double*>(convOp->getOutput(0)->getImpl()->rawPtr());
double* expectedOutput = static_cast<double*>(myOutput->getImpl()->rawPtr());
for (std::size_t i = 0; i < myOutput->size(); ++i) {
REQUIRE(std::abs(computedOutput[i] - expectedOutput[i]) < 1e-5);
}
REQUIRE(approxEq<double>(*(convOp->getOutput(0)), *myOutput, 0, 1E-5));
std::shared_ptr<Node> myPaddedConv =
PaddedConv(3, 4, {3, 3}, "myPaddedConv", {1, 1}, {1, 1, 1, 1});
......
......@@ -9,6 +9,7 @@
*
********************************************************************************/
#include <aidge/utils/TensorUtils.hpp>
#include <catch2/catch_test_macros.hpp>
#include "aidge/data/Tensor.hpp"
......@@ -52,6 +53,7 @@ TEST_CASE("[cpu/operator] Softmax(forward)", "[Softmax][CPU]") {
REQUIRE(std::abs(resPtr[i]-expectedPtr[i]) < 0.00001);
}
REQUIRE(approxEq<float>(*op->getOutput(0), *expectedOutput, 0, 1E-5));
}
SECTION("4D Tensor") {
std::shared_ptr<Tensor> input = std::make_shared<Tensor>(Array4D<float,2,3,3,3> {
......@@ -114,10 +116,6 @@ TEST_CASE("[cpu/operator] Softmax(forward)", "[Softmax][CPU]") {
op->setBackend("cpu");
mySoftmax->forward();
float* resPtr = static_cast<float*>(op->getOutput(0)->getImpl()->rawPtr());
float* expectedPtr = static_cast<float*>(expectedOutput->getImpl()->rawPtr());
for (std::size_t i = 0; i< expectedOutput->size(); ++i) {
REQUIRE(std::abs(resPtr[i]-expectedPtr[i]) < 0.00001);
}
REQUIRE(approxEq<float>(*op->getOutput(0), *expectedOutput, 0, 1E-5));
}
}
\ No newline at end of file
......@@ -9,6 +9,7 @@
*
********************************************************************************/
#include <aidge/utils/TensorUtils.hpp>
#include <catch2/catch_test_macros.hpp>
#include "aidge/data/Tensor.hpp"
......@@ -42,12 +43,7 @@ TEST_CASE("[cpu/operator] Sqrt(forward)", "[Sqrt][CPU]") {
mySqrt->getOperator()->setBackend("cpu");
mySqrt->forward();
float* resPtr = static_cast<float*>(op->getOutput(0)->getImpl()->rawPtr());
float* expectedPtr = static_cast<float*>(expectedOutput->getImpl()->rawPtr());
for (std::size_t i = 0; i< 4; ++i) {
REQUIRE(std::abs(resPtr[i]-expectedPtr[i]) < 0.00001);
}
REQUIRE(approxEq<float>(*op->getOutput(0), *expectedOutput, 0, 1E-5));
}
SECTION("4D Tensor") {
......@@ -112,10 +108,6 @@ TEST_CASE("[cpu/operator] Sqrt(forward)", "[Sqrt][CPU]") {
mySqrt->getOperator()->setBackend("cpu");
mySqrt->forward();
float* resPtr = static_cast<float*>(op->getOutput(0)->getImpl()->rawPtr());
float* expectedPtr = static_cast<float*>(expectedOutput->getImpl()->rawPtr());
for (std::size_t i = 0; i< 54; ++i) {
REQUIRE(std::abs(resPtr[i]-expectedPtr[i]) < 0.00001);
}
REQUIRE(approxEq<float>(*op->getOutput(0), *expectedOutput, 0, 1E-5));
}
}
\ No newline at end of file
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment