diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index d4c5978c..c934db88 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -58,7 +58,8 @@ if (PRJXRAY_BUILD_TESTING) xilinx/xc7series/frame_address_test.cc xilinx/xc7series/global_clock_region_test.cc xilinx/xc7series/part_test.cc - xilinx/xc7series/row_test.cc) + xilinx/xc7series/row_test.cc + xilinx/xc7series/frames_test.cc) target_link_libraries(xilinx_xc7series_test libprjxray gtest_main) add_test(NAME xilinx_xc7series_test COMMAND xilinx_xc7series_test diff --git a/lib/xilinx/xc7series/frames_test.cc b/lib/xilinx/xc7series/frames_test.cc new file mode 100644 index 00000000..279c742d --- /dev/null +++ b/lib/xilinx/xc7series/frames_test.cc @@ -0,0 +1,53 @@ +#include + +#include + +#include +#include + +namespace xc7series = prjxray::xilinx::xc7series; +TEST(FramesTest, FillInMissingFrames) { + std::vector test_part_addresses = { + xc7series::FrameAddress(xc7series::BlockType::CLB_IO_CLK, false, 0, + 0, 0), + xc7series::FrameAddress(xc7series::BlockType::CLB_IO_CLK, false, 0, + 0, 1), + xc7series::FrameAddress(xc7series::BlockType::CLB_IO_CLK, false, 0, + 0, 2), + xc7series::FrameAddress(xc7series::BlockType::CLB_IO_CLK, false, 0, + 0, 3), + xc7series::FrameAddress(xc7series::BlockType::CLB_IO_CLK, false, 0, + 0, 4)}; + + xc7series::Part test_part(0x1234, test_part_addresses); + + xc7series::Frames frames; + frames.getFrames().emplace(std::make_pair( + xc7series::FrameAddress(2), std::vector(101, 0xCC))); + frames.getFrames().emplace(std::make_pair( + xc7series::FrameAddress(3), std::vector(101, 0xDD))); + frames.getFrames().emplace(std::make_pair( + xc7series::FrameAddress(4), std::vector(101, 0xEE))); + + ASSERT_EQ(frames.getFrames().size(), 3); + EXPECT_EQ(frames.getFrames().at(test_part_addresses[2]), + std::vector(101, 0xCC)); + EXPECT_EQ(frames.getFrames().at(test_part_addresses[3]), + std::vector(101, 0xDD)); + EXPECT_EQ(frames.getFrames().at(test_part_addresses[4]), + std::vector(101, 0xEE)); + + frames.addMissingFrames(test_part); + + ASSERT_EQ(frames.getFrames().size(), 5); + EXPECT_EQ(frames.getFrames().at(test_part_addresses[0]), + std::vector(101, 0)); + EXPECT_EQ(frames.getFrames().at(test_part_addresses[1]), + std::vector(101, 0)); + EXPECT_EQ(frames.getFrames().at(test_part_addresses[2]), + std::vector(101, 0xCC)); + EXPECT_EQ(frames.getFrames().at(test_part_addresses[3]), + std::vector(101, 0xDD)); + EXPECT_EQ(frames.getFrames().at(test_part_addresses[4]), + std::vector(101, 0xEE)); +}