Fix allDepleted(). Add tests.
This commit is contained in:
parent
a309ec1b0b
commit
360a977520
3 changed files with 149 additions and 1 deletions
|
@ -14,7 +14,9 @@ set(TEST_SOURCES
|
|||
Tests/tests.cpp
|
||||
Tests/Example_test.cpp
|
||||
Tests/Timer_test.cpp
|
||||
Tests/AutoDeplete_test.cpp
|
||||
Firmware/Timer.cpp
|
||||
Firmware/AutoDeplete.cpp
|
||||
)
|
||||
add_executable(tests ${TEST_SOURCES})
|
||||
target_include_directories(tests PRIVATE Tests)
|
||||
|
|
|
@ -14,7 +14,7 @@ static const uint8_t filamentCount = 5;
|
|||
|
||||
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?
|
||||
|
|
146
Tests/AutoDeplete_test.cpp
Normal file
146
Tests/AutoDeplete_test.cpp
Normal file
|
@ -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 a new issue