lib: xc7series: YAML conversion tests for ConfigurationFrameAddress

Signed-off-by: Rick Altherr <kc8apf@kc8apf.net>
Signed-off-by: Tim 'mithro' Ansell <mithro@mithis.com>
This commit is contained in:
Rick Altherr 2017-12-18 12:16:10 -08:00 committed by Tim 'mithro' Ansell
parent 7e2cdc0947
commit 6a2fb25013
3 changed files with 52 additions and 5 deletions

View File

@ -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

View File

@ -43,8 +43,10 @@ uint8_t ConfigurationFrameAddress::minor_address() const {
namespace YAML {
Node convert<prjxray::xilinx::xc7series::ConfigurationFrameAddress>::encode(
const prjxray::xilinx::xc7series::ConfigurationFrameAddress &rhs) {
namespace xc7series = prjxray::xilinx::xc7series;
Node convert<xc7series::ConfigurationFrameAddress>::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<prjxray::xilinx::xc7series::ConfigurationFrameAddress>::encode(
return node;
}
bool convert<prjxray::xilinx::xc7series::ConfigurationFrameAddress>::decode(
const Node &node, prjxray::xilinx::xc7series::ConfigurationFrameAddress &lhs) {
bool convert<xc7series::ConfigurationFrameAddress>::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<prjxray::xilinx::xc7series::ConfigurationFrameAddress>::decode(
!node["minor"]) return false;
lhs = prjxray::xilinx::xc7series::ConfigurationFrameAddress(
node["block_type"].as<prjxray::xilinx::xc7series::BlockType>(),
node["block_type"].as<xc7series::BlockType>(),
node["row_half"].as<bool>(),
node["row"].as<uint8_t>(),
node["column"].as<uint32_t>(),

View File

@ -0,0 +1,38 @@
#include <prjxray/xilinx/xc7series/configuration_frame_address.h>
#include <gtest/gtest.h>
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<std::string>(), "BLOCK_RAM");
EXPECT_EQ(node["row_half"].as<std::string>(), "top");
EXPECT_EQ(node["row"].as<std::string>(), "10");
EXPECT_EQ(node["column"].as<std::string>(), "0");
EXPECT_EQ(node["minor"].as<std::string>(), "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<xc7series::ConfigurationFrameAddress>();
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);
}