6 #include <boost/test/unit_test.hpp> 7 #include <boost/core/lightweight_test.hpp> 9 #define ARMNN_POLYMORPHIC_CAST_TESTABLE 10 #define ARMNN_NUMERIC_CAST_TESTABLE 23 using namespace armnn;
31 class Child1 :
public Base
37 class Child2 :
public Base
44 Base* base1 = &child1;
45 auto ptr1 =
dynamic_cast<Child1*
>(base1);
47 BOOST_CHECK_NO_THROW(armnn::PolymorphicDowncast<Child1*>(base1));
48 BOOST_CHECK(armnn::PolymorphicDowncast<Child1*>(base1) == ptr1);
50 auto ptr2 =
dynamic_cast<Child2*
>(base1);
52 BOOST_CHECK_THROW(armnn::PolymorphicDowncast<Child2*>(base1), std::bad_cast);
60 using namespace armnn;
68 class Child1 :
public Base
74 class Child2 :
public Base
80 std::shared_ptr<Base> base1 = std::make_shared<Child1>();
82 std::shared_ptr<Child1> ptr1 = std::static_pointer_cast<Child1>(base1);
84 BOOST_CHECK_NO_THROW(armnn::PolymorphicPointerDowncast<Child1>(base1));
85 BOOST_CHECK(armnn::PolymorphicPointerDowncast<Child1>(base1) == ptr1);
87 auto ptr2 = std::dynamic_pointer_cast<Child2>(base1);
89 BOOST_CHECK_THROW(armnn::PolymorphicPointerDowncast<Child2>(base1), std::bad_cast);
97 using namespace armnn;
105 class Child1 :
public Base
111 class Child2 :
public Base
118 Base* base1 = &child1;
119 auto ptr1 =
dynamic_cast<Child1*
>(base1);
121 BOOST_CHECK_NO_THROW(armnn::PolymorphicPointerDowncast<Child1>(base1));
122 BOOST_CHECK(armnn::PolymorphicPointerDowncast<Child1>(base1) == ptr1);
124 auto ptr2 =
dynamic_cast<Child2*
>(base1);
126 BOOST_CHECK_THROW(armnn::PolymorphicPointerDowncast<Child2>(base1), std::bad_cast);
134 using namespace armnn;
137 BOOST_CHECK_THROW(numeric_cast<unsigned char>(-1), std::bad_cast);
138 BOOST_CHECK_THROW(numeric_cast<unsigned char>(1 << 8), std::bad_cast);
139 BOOST_CHECK_THROW(numeric_cast<unsigned char>(1L << 16), std::bad_cast);
140 BOOST_CHECK_THROW(numeric_cast<unsigned char>(1LL << 32), std::bad_cast);
142 BOOST_CHECK_THROW(numeric_cast<signed char>((1L << 8)*-1), std::bad_cast);
143 BOOST_CHECK_THROW(numeric_cast<signed char>((1L << 15)*-1), std::bad_cast);
144 BOOST_CHECK_THROW(numeric_cast<signed char>((1LL << 31)*-1), std::bad_cast);
146 BOOST_CHECK_NO_THROW(numeric_cast<unsigned char>(1U));
147 BOOST_CHECK_NO_THROW(numeric_cast<unsigned char>(1L));
148 BOOST_CHECK_NO_THROW(numeric_cast<signed char>(-1));
149 BOOST_CHECK_NO_THROW(numeric_cast<signed char>(-1L));
150 BOOST_CHECK_NO_THROW(numeric_cast<signed char>((1 << 7)*-1));
153 BOOST_CHECK_THROW(numeric_cast<uint16_t>(-1), std::bad_cast);
154 BOOST_CHECK_THROW(numeric_cast<uint16_t>(1L << 16), std::bad_cast);
155 BOOST_CHECK_THROW(numeric_cast<uint16_t>(1LL << 32), std::bad_cast);
157 BOOST_CHECK_THROW(numeric_cast<int16_t>(1L << 15), std::bad_cast);
158 BOOST_CHECK_THROW(numeric_cast<int16_t>(1LL << 31), std::bad_cast);
160 BOOST_CHECK_NO_THROW(numeric_cast<uint16_t>(1L << 8));
161 BOOST_CHECK_NO_THROW(numeric_cast<int16_t>(1L << 7));
162 BOOST_CHECK_NO_THROW(numeric_cast<int16_t>((1L << 15)*-1));
165 BOOST_CHECK_NO_THROW(numeric_cast<uint32_t>(1));
166 BOOST_CHECK_NO_THROW(numeric_cast<uint32_t>(1 << 8));
167 BOOST_CHECK_NO_THROW(numeric_cast<uint32_t>(1L << 16));
168 BOOST_CHECK_NO_THROW(numeric_cast<uint32_t>(1LL << 31));
170 BOOST_CHECK_NO_THROW(numeric_cast<int32_t>(-1));
171 BOOST_CHECK_NO_THROW(numeric_cast<int32_t>((1L << 8)*-1));
172 BOOST_CHECK_NO_THROW(numeric_cast<int32_t>((1L << 16)*-1));
173 BOOST_CHECK_NO_THROW(numeric_cast<int32_t>((1LL << 31)*-1));
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
Copyright (c) 2020 ARM Limited.
void IgnoreUnused(Ts &&...)
BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)
BOOST_AUTO_TEST_CASE(PolymorphicDowncast)
BOOST_AUTO_TEST_CASE(CheckConvolution2dLayer)
BOOST_AUTO_TEST_SUITE_END()
DestType PolymorphicDowncast(SourceType value)
Polymorphic downcast for build in pointers only.