mirror of
https://github.com/ETLCPP/etl.git
synced 2026-10-28 18:07:10 +08:00
Merged new tests from PR #1625
This commit is contained in:
parent
ac50a71cea
commit
fb367487e5
@ -2570,6 +2570,40 @@ namespace
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//*************************************************************************
|
||||||
|
TEST(test_variant_visit_dispatches_every_alternative)
|
||||||
|
{
|
||||||
|
etl::variant<int8_t, uint8_t, int16_t> variant;
|
||||||
|
variant_test_visit_dispatcher visitor;
|
||||||
|
|
||||||
|
variant = int8_t{};
|
||||||
|
CHECK_EQUAL(5, etl::visit(visitor, variant));
|
||||||
|
|
||||||
|
variant = uint8_t{};
|
||||||
|
CHECK_EQUAL(6, etl::visit(visitor, variant));
|
||||||
|
|
||||||
|
variant = int16_t{};
|
||||||
|
CHECK_EQUAL(7, etl::visit(visitor, variant));
|
||||||
|
}
|
||||||
|
|
||||||
|
//*************************************************************************
|
||||||
|
TEST(test_variant_visit_rejects_valueless_variant)
|
||||||
|
{
|
||||||
|
etl::variant<int8_t, uint8_t> variant(etl::private_variant::valueless_t{});
|
||||||
|
variant_test_visit_dispatcher visitor;
|
||||||
|
|
||||||
|
CHECK_THROW(etl::visit(visitor, variant), etl::bad_variant_access);
|
||||||
|
}
|
||||||
|
|
||||||
|
//*************************************************************************
|
||||||
|
TEST(test_variant_multiple_visit_rejects_valueless_later_variant)
|
||||||
|
{
|
||||||
|
etl::variant<int8_t, uint8_t> variant1;
|
||||||
|
etl::variant<int8_t, uint16_t, uint8_t> variant2(etl::private_variant::valueless_t{});
|
||||||
|
|
||||||
|
CHECK_THROW(etl::visit<int16_t>(test_variant_multiple_visit_helper{}, variant1, variant2), etl::bad_variant_access);
|
||||||
|
}
|
||||||
|
|
||||||
TEST(test_variant_multiple_visit)
|
TEST(test_variant_multiple_visit)
|
||||||
{
|
{
|
||||||
etl::variant<int8_t, uint8_t> variant1;
|
etl::variant<int8_t, uint8_t> variant1;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user