Throw exceptions rather than return default 0

This commit is contained in:
bgbsww
2024-07-19 08:53:55 -04:00
parent ff61f56d19
commit 63a68b3c1c
2 changed files with 53 additions and 5 deletions

View File

@@ -292,3 +292,53 @@ TEST_F(ReaderTest, charStreamBase64Encoded)
// Conversion done using https://www.base64encode.org for testing purposes
EXPECT_EQ(std::string("FreeCAD rocks! 🪨🪨🪨"), std::string(buffer.data()));
}
TEST_F(ReaderTest, validDefaults)
{
// Arrange
auto xmlBody = R"(
<node1 attr='1'/>
<node2 attr='2'/>
)";
givenDataAsXMLStream(xmlBody);
// Act
const char* value2 = Reader()->getAttribute("missing", "expected value");
int value4 = Reader()->getAttributeAsInteger("missing", "-123");
unsigned value6 = Reader()->getAttributeAsUnsigned("missing", "123");
float value8 = Reader()->getAttributeAsFloat("missing", "1.234");
// Assert
EXPECT_THROW({ int value1 = Reader()->getAttributeAsInteger("missing"); },
Base::XMLBaseException);
EXPECT_EQ(value2, "expected value");
EXPECT_THROW({ int value3 = Reader()->getAttributeAsInteger("missing"); },
Base::XMLBaseException);
EXPECT_EQ(value4, -123);
EXPECT_THROW({ int value5 = Reader()->getAttributeAsUnsigned("missing"); },
Base::XMLBaseException);
EXPECT_EQ(value6, 123);
EXPECT_THROW({ int value7 = Reader()->getAttributeAsFloat("missing"); },
Base::XMLBaseException);
EXPECT_NEAR(value8, 1.234, 0.001);
}
TEST_F(ReaderTest, invalidDefaults)
{
// Arrange
auto xmlBody = R"(
<node1 attr='1'/>
<node2 attr='2'/>
)";
givenDataAsXMLStream(xmlBody);
// Act / Assert
EXPECT_THROW({ int value4 = Reader()->getAttributeAsInteger("missing", "Not an Integer"); },
std::invalid_argument);
EXPECT_THROW({ int value6 = Reader()->getAttributeAsInteger("missing", "Not an Unsigned"); },
std::invalid_argument);
EXPECT_THROW({ int value8 = Reader()->getAttributeAsInteger("missing", "Not a Float"); },
std::invalid_argument);
}