Skip to content

Commit

Permalink
Refactor Fram program queue tests
Browse files Browse the repository at this point in the history
Finish test for custom type
  • Loading branch information
jeromehue committed Dec 15, 2024
1 parent f8c5d84 commit d775999
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 19 deletions.
2 changes: 1 addition & 1 deletion CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"name": "clang-tidy",
"hidden": true,
"cacheVariables": {
"CMAKE_CXX_CLANG_TIDY": "clang-tidy-15;--header-filter=${sourceDir}/*"
"CMAKE_CXX_CLANG_TIDY": "clang-tidy;--header-filter=${sourceDir}/*"
}
},
{
Expand Down
4 changes: 3 additions & 1 deletion Sts1CobcSw/FramSections/ProgramQueue.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@ class ProgramQueue


static auto Get(IndexType index) -> T;
[[nodiscard]] static auto PushBack(T const & t) -> bool;
//! @brief Pushes a value to the back of the program queue.
//! If it is full, a debug message is printed.
static auto PushBack(T const & t) -> void;

static auto Clear() -> void;

Expand Down
37 changes: 20 additions & 17 deletions Tests/UnitTests/ProgramQueue.test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,28 +93,28 @@ auto RunUnitTest() -> void

// SECTION("Push operations")
{
Require(programQueueChar.PushBack('a'));
programQueueChar.PushBack('a');
Require(programQueueChar.Size() == 1);
Require(programQueueChar.Get(0) == 'a');
Require(not programQueueChar.Empty());

Require(programQueueChar.PushBack('b'));
programQueueChar.PushBack('b');
Require(programQueueChar.Size() == 2);
Require(programQueueChar.Get(1) == 'b');

Require(fram::ram::memory[charProgramQueueStartAddress + 0] == 0x61_b);
Require(fram::ram::memory[charProgramQueueStartAddress + 1] == 0x62_b);

Require(programQueueChar.PushBack('c'));
Require(programQueueChar.PushBack('d'));
Require(programQueueChar.PushBack('e'));
programQueueChar.PushBack('c');
programQueueChar.PushBack('d');
programQueueChar.PushBack('e');
Require(programQueueChar.Size() == 5);
Require(programQueueChar.Full());
Require(not programQueueChar.Empty());
Require(programQueueChar.Get(4) == 'e');

// Attempt to PushBack beyond cache capacity (should fail)
Require(not programQueueChar.PushBack('f'));
// Attempt to PushBack beyond cache capacity (should print a debug message)
programQueueChar.PushBack('f');
Require(programQueueChar.Size() == 5);
Require(programQueueChar.Get(4) == 'e');

Expand All @@ -128,22 +128,24 @@ auto RunUnitTest() -> void
S s2{.u16 = 2, .i32 = 200, .u8 = 20};
S s3{.u16 = 3, .i32 = 300, .u8 = 30};
S s4{.u16 = 4, .i32 = 400, .u8 = 40};
// S s5{.u16 = 5, .i32 = 500, .u8 = 50};
S s5{.u16 = 5, .i32 = 500, .u8 = 50};

Require(programQueueS.PushBack(s1));
programQueueS.PushBack(s1);
Require(programQueueS.Size() == 1);
Require(programQueueS.Get(0) == s1);

Require(programQueueS.PushBack(s2));
programQueueS.PushBack(s2);
Require(programQueueS.Size() == 2);
Require(programQueueS.Get(0) == s1);

Require(programQueueS.PushBack(s3));
Require(programQueueS.PushBack(s4));
programQueueS.PushBack(s3);
programQueueS.PushBack(s4);
Require(programQueueS.Size() == 4);
Require(programQueueS.Full());

// TODO: Push beyond capacity
programQueueS.PushBack(s5); // NOLINT
Require(programQueueS.Size() == 4);
Require(programQueueS.Get(3) == s4);
}

// SECTION("FRAM is not working")
Expand All @@ -157,17 +159,18 @@ auto RunUnitTest() -> void
Require(programQueueChar.Get(1) == 'b');

Require(programQueueChar2.Size() == 0);
Require(programQueueChar2.PushBack(11));
programQueueChar2.PushBack(11);
Require(programQueueChar2.Size() == 1);

Require(programQueueChar2.PushBack(12));
programQueueChar2.PushBack(12);
Require(programQueueChar2.Size() == 2);
Require(programQueueChar2.Get(0) == 11);
Require(programQueueChar2.Get(1) == 12);

// PushBack() does not write to memory
Require(fram::ram::memory[charProgramQueueStartAddress + 0] == 0_b);
Require(fram::ram::memory[charProgramQueueStartAddress + 1] == 0_b);
Require(fram::ram::memory[charProgramQueueStartAddress + 0] == 0x00_b);
Require(fram::ram::memory[charProgramQueueStartAddress + 1] == 0x00_b);
Require(fram::ram::memory[charProgramQueueStartAddress + 1] == 0x00_b);
}
}

Expand Down

0 comments on commit d775999

Please sign in to comment.