From 6a2fb25013fd779a650b7bd61041dbf270129a1c Mon Sep 17 00:00:00 2001 From: Rick Altherr Date: Mon, 18 Dec 2017 12:16:10 -0800 Subject: [PATCH] lib: xc7series: YAML conversion tests for ConfigurationFrameAddress Signed-off-by: Rick Altherr Signed-off-by: Tim 'mithro' Ansell --- lib/CMakeLists.txt | 7 ++++ .../xc7series/configuration_frame_address.cc | 12 +++--- .../configuration_frame_address_test.cc | 38 +++++++++++++++++++ 3 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 lib/xilinx/xc7series/configuration_frame_address_test.cc diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index a0647c03..3b97c960 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -48,6 +48,13 @@ if (PRJXRAY_BUILD_TESTING) add_test(NAME xilinx_xc7series_block_type_test COMMAND xilinx_xc7series_block_type_test) + add_executable(xilinx_xc7series_configuration_frame_address_test + xilinx/xc7series/configuration_frame_address_test.cc) + target_link_libraries(xilinx_xc7series_configuration_frame_address_test + libprjxray gtest_main absl::span) + add_test(NAME xilinx_xc7series_configuration_frame_address_test + COMMAND xilinx_xc7series_configuration_frame_address_test) + add_executable(xilinx_xc7series_configuration_packet_test xilinx/xc7series/configuration_packet_test.cc) target_link_libraries(xilinx_xc7series_configuration_packet_test diff --git a/lib/xilinx/xc7series/configuration_frame_address.cc b/lib/xilinx/xc7series/configuration_frame_address.cc index 4b8bf002..806b0fc1 100644 --- a/lib/xilinx/xc7series/configuration_frame_address.cc +++ b/lib/xilinx/xc7series/configuration_frame_address.cc @@ -43,8 +43,10 @@ uint8_t ConfigurationFrameAddress::minor_address() const { namespace YAML { -Node convert::encode( - const prjxray::xilinx::xc7series::ConfigurationFrameAddress &rhs) { +namespace xc7series = prjxray::xilinx::xc7series; + +Node convert::encode( + const xc7series::ConfigurationFrameAddress &rhs) { Node node; node.SetTag("xilinx/xc7series/configuration_frame_address"); node["block_type"] = rhs.block_type(); @@ -55,8 +57,8 @@ Node convert::encode( return node; } -bool convert::decode( - const Node &node, prjxray::xilinx::xc7series::ConfigurationFrameAddress &lhs) { +bool convert::decode( + const Node &node, xc7series::ConfigurationFrameAddress &lhs) { if (node.Tag() != "xilinx/xc7series/configuration_frame_address" || !node["block_type"] || !node["row_half"] || @@ -65,7 +67,7 @@ bool convert::decode( !node["minor"]) return false; lhs = prjxray::xilinx::xc7series::ConfigurationFrameAddress( - node["block_type"].as(), + node["block_type"].as(), node["row_half"].as(), node["row"].as(), node["column"].as(), diff --git a/lib/xilinx/xc7series/configuration_frame_address_test.cc b/lib/xilinx/xc7series/configuration_frame_address_test.cc new file mode 100644 index 00000000..3574b488 --- /dev/null +++ b/lib/xilinx/xc7series/configuration_frame_address_test.cc @@ -0,0 +1,38 @@ +#include + +#include + +namespace xc7series = prjxray::xilinx::xc7series; + +TEST(ConfigurationFrameAddressTest, YamlEncode) { + xc7series::ConfigurationFrameAddress address( + xc7series::BlockType::BLOCK_RAM, + false, 10, 0, 5); + + YAML::Node node(address); + + EXPECT_EQ(node.Tag(), "xilinx/xc7series/configuration_frame_address"); + EXPECT_EQ(node["block_type"].as(), "BLOCK_RAM"); + EXPECT_EQ(node["row_half"].as(), "top"); + EXPECT_EQ(node["row"].as(), "10"); + EXPECT_EQ(node["column"].as(), "0"); + EXPECT_EQ(node["minor"].as(), "5"); +} + +TEST(ConfigurationFrameAddressTest, YamlDecode) { + YAML::Node node; + node.SetTag("xilinx/xc7series/configuration_frame_address"); + node["block_type"] = "BLOCK_RAM"; + node["row_half"] = "bottom"; + node["row"] = "0"; + node["column"] = "5"; + node["minor"] = "11"; + + xc7series::ConfigurationFrameAddress address = + node.as(); + EXPECT_EQ(address.block_type(), xc7series::BlockType::BLOCK_RAM); + EXPECT_TRUE(address.is_bottom_half_rows()); + EXPECT_EQ(address.row_address(), 0); + EXPECT_EQ(address.column_address(), 5); + EXPECT_EQ(address.minor_address(), 11); +}