IVGCVSW-7423 Add ArmnnDelegatePlugin

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Signed-off-by: Ryan OShea <ryan.oshea3@arm.com>
Change-Id: Ie02021ac56a512598760e4c6d05ef1a80f4aec8d
diff --git a/delegate/opaque/src/test/ArmnnOpaqueDelegateTest.cpp b/delegate/opaque/src/test/ArmnnOpaqueDelegateTest.cpp
index 1635b65..79f98a9 100644
--- a/delegate/opaque/src/test/ArmnnOpaqueDelegateTest.cpp
+++ b/delegate/opaque/src/test/ArmnnOpaqueDelegateTest.cpp
@@ -9,6 +9,9 @@
 #include <opaque/include/armnn_delegate.hpp>
 #include <opaque/include/Version.hpp>
 
+#include <flatbuffers/flatbuffers.h>
+#include <tensorflow/lite/experimental/acceleration/configuration/delegate_registry.h>
+
 namespace armnnOpaqueDelegate
 {
 
@@ -37,6 +40,28 @@
     armnnOpaqueDelegate::TfLiteArmnnOpaqueDelegateDelete(opaqueDelegate);
 }
 
+TEST_CASE ("DelegatePluginTest")
+{
+    // Use default settings until options have been enabled.
+    flatbuffers::FlatBufferBuilder flatBufferBuilder;
+    tflite::TFLiteSettingsBuilder tfliteSettingBuilder(flatBufferBuilder);
+    flatbuffers::Offset<tflite::TFLiteSettings> tfliteSettings = tfliteSettingBuilder.Finish();
+    flatBufferBuilder.Finish(tfliteSettings);
+    const tflite::TFLiteSettings* settings = flatbuffers::GetRoot<tflite::TFLiteSettings>(
+        flatBufferBuilder.GetBufferPointer());
+
+    std::unique_ptr<tflite::delegates::DelegatePluginInterface> delegatePlugin =
+        tflite::delegates::DelegatePluginRegistry::CreateByName("armnn_delegate", *settings);
+
+    // Plugin is created correctly using armnn_delegate name.
+    CHECK((delegatePlugin != nullptr));
+
+    tflite::delegates::TfLiteDelegatePtr armnnDelegate = delegatePlugin->Create();
+
+    // Armnn Opaque Delegate is created correctly.
+    CHECK((armnnDelegate != nullptr));
+    CHECK((armnnDelegate->opaque_delegate_builder != nullptr));
 }
 
+}
 } // namespace armnnDelegate