diff options
author | Aron Virginas-Tar <Aron.Virginas-Tar@arm.com> | 2019-02-22 17:08:36 +0000 |
---|---|---|
committer | Aron Virginas-Tar <aron.virginas-tar@arm.com> | 2019-02-27 13:40:06 +0000 |
commit | b56292c0040aa125cdaafcee1a4299c5cd144200 (patch) | |
tree | 3ff8908587d065ee4c621db78d4ea26df6500c3e /src/armnn/test/OptionalTest.cpp | |
parent | 91c0eff2ff4ff384e013cb69cac1e07e28b9e2b1 (diff) | |
download | armnn-b56292c0040aa125cdaafcee1a4299c5cd144200.tar.gz |
IVGCVSW-2759 Add MakeOptional to enable in-place optional object construction
* Added new argument-forwarding in-place constructor to Optional
* Added MakeOptional utility template to allow for efficient construction
of optional objects
Change-Id: Iec9067fc5c3e109a26c4cc2fe8468260637b66c5
Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com>
Diffstat (limited to 'src/armnn/test/OptionalTest.cpp')
-rw-r--r-- | src/armnn/test/OptionalTest.cpp | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/src/armnn/test/OptionalTest.cpp b/src/armnn/test/OptionalTest.cpp index 3f4c02d56f..e2054399f1 100644 --- a/src/armnn/test/OptionalTest.cpp +++ b/src/armnn/test/OptionalTest.cpp @@ -54,7 +54,6 @@ BOOST_AUTO_TEST_CASE(SimpleStringTests) BOOST_TEST(optionalString3.value() == "Hello World"); } - BOOST_AUTO_TEST_CASE(StringRefTests) { armnn::Optional<std::string&> optionalStringRef{armnn::EmptyOptional()}; @@ -111,4 +110,42 @@ BOOST_AUTO_TEST_CASE(SimpleIntTests) BOOST_TEST(otherOptionalInt.value() == intValue); } +BOOST_AUTO_TEST_CASE(ObjectConstructedInPlaceTests) +{ + struct SimpleObject + { + public: + SimpleObject(const std::string& name, int value) + : m_Name(name) + , m_Value(value) + {} + + bool operator ==(const SimpleObject& other) + { + return m_Name == other.m_Name && + m_Value == other.m_Value; + } + + private: + std::string m_Name; + int m_Value; + }; + + std::string objectName("SimpleObject"); + int objectValue = 1; + SimpleObject referenceObject(objectName, objectValue); + + // Use MakeOptional + armnn::Optional<SimpleObject> optionalObject1 = armnn::MakeOptional<SimpleObject>(objectName, objectValue); + BOOST_CHECK(optionalObject1 == true); + BOOST_CHECK(optionalObject1.has_value() == true); + BOOST_CHECK(optionalObject1.value() == referenceObject); + + // Call in-place constructor directly + armnn::Optional<SimpleObject> optionalObject2(CONSTRUCT_IN_PLACE, objectName, objectValue); + BOOST_CHECK(optionalObject1 == true); + BOOST_CHECK(optionalObject1.has_value() == true); + BOOST_CHECK(optionalObject1.value() == referenceObject); +} + BOOST_AUTO_TEST_SUITE_END() |