blob: 9d255b112624237a0cbd1b946a2b78c508c5f834 [file] [log] [blame]
Matthew Sloyan65c21a12023-04-04 12:06:14 +01001//
2// Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
7#include <doctest/doctest.h>
8
9#include <opaque/include/armnn_delegate.hpp>
Narumol Prangnawarat26654cb2023-05-03 16:08:11 +010010
Matthew Sloyan65c21a12023-04-04 12:06:14 +010011namespace armnnOpaqueDelegate
12{
13
14TEST_SUITE("ArmnnOpaqueDelegate")
15{
16
17TEST_CASE ("DelegateOptions_OpaqueDelegateDefault")
18{
19 // Check default options can be created
20 auto options = armnnOpaqueDelegate::TfLiteArmnnDelegateOptionsDefault();
21 armnnOpaqueDelegate::ArmnnOpaqueDelegate delegate(options);
22
23 // Check version returns correctly
24 auto version = delegate.GetVersion();
25 CHECK_EQ(version, OPAQUE_DELEGATE_VERSION);
26
27 auto* builder = delegate.GetDelegateBuilder();
28 CHECK(builder);
29
30 // Check Opaque delegate created
31 auto opaqueDelegate = armnnOpaqueDelegate::TfLiteArmnnOpaqueDelegateCreate(&options);
32 CHECK(opaqueDelegate);
33
34 // Check Opaque Delegate can be deleted
35 CHECK(opaqueDelegate->opaque_delegate_builder->data);
36 armnnOpaqueDelegate::TfLiteArmnnOpaqueDelegateDelete(opaqueDelegate);
37}
38
Narumol Prangnawarat26654cb2023-05-03 16:08:11 +010039TEST_CASE ("DelegatePluginTest")
40{
41 // Use default settings until options have been enabled.
42 flatbuffers::FlatBufferBuilder flatBufferBuilder;
Narumol Prangnawarat46e574e2023-05-05 16:39:05 +010043 tflite::TFLiteSettingsBuilder tfliteSettingsBuilder(flatBufferBuilder);
44 flatbuffers::Offset<tflite::TFLiteSettings> tfliteSettings = tfliteSettingsBuilder.Finish();
Narumol Prangnawarat26654cb2023-05-03 16:08:11 +010045 flatBufferBuilder.Finish(tfliteSettings);
46 const tflite::TFLiteSettings* settings = flatbuffers::GetRoot<tflite::TFLiteSettings>(
47 flatBufferBuilder.GetBufferPointer());
48
49 std::unique_ptr<tflite::delegates::DelegatePluginInterface> delegatePlugin =
50 tflite::delegates::DelegatePluginRegistry::CreateByName("armnn_delegate", *settings);
51
52 // Plugin is created correctly using armnn_delegate name.
53 CHECK((delegatePlugin != nullptr));
54
55 tflite::delegates::TfLiteDelegatePtr armnnDelegate = delegatePlugin->Create();
56
57 // Armnn Opaque Delegate is created correctly.
58 CHECK((armnnDelegate != nullptr));
59 CHECK((armnnDelegate->opaque_delegate_builder != nullptr));
Matthew Sloyan65c21a12023-04-04 12:06:14 +010060}
61
Narumol Prangnawarat26654cb2023-05-03 16:08:11 +010062}
Matthew Sloyan65c21a12023-04-04 12:06:14 +010063} // namespace armnnDelegate