Fix allDepleted(). Add tests.
This commit is contained in:
parent
a309ec1b0b
commit
360a977520
|
|
@ -14,7 +14,9 @@ set(TEST_SOURCES
|
||||||
Tests/tests.cpp
|
Tests/tests.cpp
|
||||||
Tests/Example_test.cpp
|
Tests/Example_test.cpp
|
||||||
Tests/Timer_test.cpp
|
Tests/Timer_test.cpp
|
||||||
|
Tests/AutoDeplete_test.cpp
|
||||||
Firmware/Timer.cpp
|
Firmware/Timer.cpp
|
||||||
|
Firmware/AutoDeplete.cpp
|
||||||
)
|
)
|
||||||
add_executable(tests ${TEST_SOURCES})
|
add_executable(tests ${TEST_SOURCES})
|
||||||
target_include_directories(tests PRIVATE Tests)
|
target_include_directories(tests PRIVATE Tests)
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ static const uint8_t filamentCount = 5;
|
||||||
|
|
||||||
static constexpr uint8_t allDepleted(uint8_t fCount)
|
static constexpr uint8_t allDepleted(uint8_t fCount)
|
||||||
{
|
{
|
||||||
return fCount == 1 ? 1 : ((1 << (fCount - 1)) | allDepleted(fCount - 2));
|
return fCount == 1 ? 1 : ((1 << (fCount - 1)) | allDepleted(fCount - 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! @brief Is filament available for printing?
|
//! @brief Is filament available for printing?
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,146 @@
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @author Marek Bel
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "catch.hpp"
|
||||||
|
|
||||||
|
#include "../Firmware/AutoDeplete.h"
|
||||||
|
|
||||||
|
TEST_CASE( "AutoDeplete test.", "[AutoDeplete]" )
|
||||||
|
{
|
||||||
|
CHECK(ad_allDepleted() == false);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 0);
|
||||||
|
CHECK(ad_getAlternative(1) == 1);
|
||||||
|
CHECK(ad_getAlternative(2) == 2);
|
||||||
|
CHECK(ad_getAlternative(3) == 3);
|
||||||
|
CHECK(ad_getAlternative(4) == 4);
|
||||||
|
|
||||||
|
ad_markDepleted(1);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 0);
|
||||||
|
CHECK(ad_getAlternative(1) == 2);
|
||||||
|
CHECK(ad_getAlternative(2) == 2);
|
||||||
|
CHECK(ad_getAlternative(3) == 3);
|
||||||
|
CHECK(ad_getAlternative(4) == 4);
|
||||||
|
CHECK(ad_allDepleted() == false);
|
||||||
|
|
||||||
|
ad_markDepleted(3);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 0);
|
||||||
|
CHECK(ad_getAlternative(1) == 2);
|
||||||
|
CHECK(ad_getAlternative(2) == 2);
|
||||||
|
CHECK(ad_getAlternative(3) == 4);
|
||||||
|
CHECK(ad_getAlternative(4) == 4);
|
||||||
|
CHECK(ad_allDepleted() == false);
|
||||||
|
|
||||||
|
ad_markDepleted(4);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 0);
|
||||||
|
CHECK(ad_getAlternative(1) == 2);
|
||||||
|
CHECK(ad_getAlternative(2) == 2);
|
||||||
|
CHECK(ad_getAlternative(3) == 0);
|
||||||
|
CHECK(ad_getAlternative(4) == 0);
|
||||||
|
CHECK(ad_allDepleted() == false);
|
||||||
|
|
||||||
|
ad_markDepleted(4);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 0);
|
||||||
|
CHECK(ad_getAlternative(1) == 2);
|
||||||
|
CHECK(ad_getAlternative(2) == 2);
|
||||||
|
CHECK(ad_getAlternative(3) == 0);
|
||||||
|
CHECK(ad_getAlternative(4) == 0);
|
||||||
|
CHECK(ad_allDepleted() == false);
|
||||||
|
|
||||||
|
ad_markDepleted(0);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 2);
|
||||||
|
CHECK(ad_getAlternative(1) == 2);
|
||||||
|
CHECK(ad_getAlternative(2) == 2);
|
||||||
|
CHECK(ad_getAlternative(3) == 2);
|
||||||
|
CHECK(ad_getAlternative(4) == 2);
|
||||||
|
CHECK(ad_allDepleted() == false);
|
||||||
|
|
||||||
|
ad_markDepleted(2);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 0);
|
||||||
|
CHECK(ad_getAlternative(1) == 1);
|
||||||
|
CHECK(ad_getAlternative(2) == 2);
|
||||||
|
CHECK(ad_getAlternative(3) == 3);
|
||||||
|
CHECK(ad_getAlternative(4) == 4);
|
||||||
|
CHECK(ad_allDepleted() == true);
|
||||||
|
|
||||||
|
ad_markDepleted(2);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 0);
|
||||||
|
CHECK(ad_getAlternative(1) == 1);
|
||||||
|
CHECK(ad_getAlternative(2) == 2);
|
||||||
|
CHECK(ad_getAlternative(3) == 3);
|
||||||
|
CHECK(ad_getAlternative(4) == 4);
|
||||||
|
CHECK(ad_allDepleted() == true);
|
||||||
|
|
||||||
|
ad_markLoaded(4);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 4);
|
||||||
|
CHECK(ad_getAlternative(1) == 4);
|
||||||
|
CHECK(ad_getAlternative(2) == 4);
|
||||||
|
CHECK(ad_getAlternative(3) == 4);
|
||||||
|
CHECK(ad_getAlternative(4) == 4);
|
||||||
|
CHECK(ad_allDepleted() == false);
|
||||||
|
|
||||||
|
ad_markLoaded(0);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 0);
|
||||||
|
CHECK(ad_getAlternative(1) == 4);
|
||||||
|
CHECK(ad_getAlternative(2) == 4);
|
||||||
|
CHECK(ad_getAlternative(3) == 4);
|
||||||
|
CHECK(ad_getAlternative(4) == 4);
|
||||||
|
CHECK(ad_allDepleted() == false);
|
||||||
|
|
||||||
|
ad_markLoaded(3);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 0);
|
||||||
|
CHECK(ad_getAlternative(1) == 3);
|
||||||
|
CHECK(ad_getAlternative(2) == 3);
|
||||||
|
CHECK(ad_getAlternative(3) == 3);
|
||||||
|
CHECK(ad_getAlternative(4) == 4);
|
||||||
|
CHECK(ad_allDepleted() == false);
|
||||||
|
|
||||||
|
ad_markLoaded(3);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 0);
|
||||||
|
CHECK(ad_getAlternative(1) == 3);
|
||||||
|
CHECK(ad_getAlternative(2) == 3);
|
||||||
|
CHECK(ad_getAlternative(3) == 3);
|
||||||
|
CHECK(ad_getAlternative(4) == 4);
|
||||||
|
CHECK(ad_allDepleted() == false);
|
||||||
|
|
||||||
|
ad_markLoaded(2);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 0);
|
||||||
|
CHECK(ad_getAlternative(1) == 2);
|
||||||
|
CHECK(ad_getAlternative(2) == 2);
|
||||||
|
CHECK(ad_getAlternative(3) == 3);
|
||||||
|
CHECK(ad_getAlternative(4) == 4);
|
||||||
|
CHECK(ad_allDepleted() == false);
|
||||||
|
|
||||||
|
ad_markLoaded(1);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 0);
|
||||||
|
CHECK(ad_getAlternative(1) == 1);
|
||||||
|
CHECK(ad_getAlternative(2) == 2);
|
||||||
|
CHECK(ad_getAlternative(3) == 3);
|
||||||
|
CHECK(ad_getAlternative(4) == 4);
|
||||||
|
CHECK(ad_allDepleted() == false);
|
||||||
|
|
||||||
|
ad_markLoaded(1);
|
||||||
|
|
||||||
|
CHECK(ad_getAlternative(0) == 0);
|
||||||
|
CHECK(ad_getAlternative(1) == 1);
|
||||||
|
CHECK(ad_getAlternative(2) == 2);
|
||||||
|
CHECK(ad_getAlternative(3) == 3);
|
||||||
|
CHECK(ad_getAlternative(4) == 4);
|
||||||
|
CHECK(ad_allDepleted() == false);
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue