blob: 79f98a9e5e8015a8606db3008ee72cf224c755e3 [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>
10#include <opaque/include/Version.hpp>
11
Narumol Prangnawarat26654cb2023-05-03 16:08:11 +010012#include <flatbuffers/flatbuffers.h>
13#include <tensorflow/lite/experimental/acceleration/configuration/delegate_registry.h>
14
Matthew Sloyan65c21a12023-04-04 12:06:14 +010015namespace armnnOpaqueDelegate
16{
17
18TEST_SUITE("ArmnnOpaqueDelegate")
19{
20
21TEST_CASE ("DelegateOptions_OpaqueDelegateDefault")
22{
23 // Check default options can be created
24 auto options = armnnOpaqueDelegate::TfLiteArmnnDelegateOptionsDefault();
25 armnnOpaqueDelegate::ArmnnOpaqueDelegate delegate(options);
26
27 // Check version returns correctly
28 auto version = delegate.GetVersion();
29 CHECK_EQ(version, OPAQUE_DELEGATE_VERSION);
30
31 auto* builder = delegate.GetDelegateBuilder();
32 CHECK(builder);
33
34 // Check Opaque delegate created
35 auto opaqueDelegate = armnnOpaqueDelegate::TfLiteArmnnOpaqueDelegateCreate(&options);
36 CHECK(opaqueDelegate);
37
38 // Check Opaque Delegate can be deleted
39 CHECK(opaqueDelegate->opaque_delegate_builder->data);
40 armnnOpaqueDelegate::TfLiteArmnnOpaqueDelegateDelete(opaqueDelegate);
41}
42
Narumol Prangnawarat26654cb2023-05-03 16:08:11 +010043TEST_CASE ("DelegatePluginTest")
44{
45 // Use default settings until options have been enabled.
46 flatbuffers::FlatBufferBuilder flatBufferBuilder;
47 tflite::TFLiteSettingsBuilder tfliteSettingBuilder(flatBufferBuilder);
48 flatbuffers::Offset<tflite::TFLiteSettings> tfliteSettings = tfliteSettingBuilder.Finish();
49 flatBufferBuilder.Finish(tfliteSettings);
50 const tflite::TFLiteSettings* settings = flatbuffers::GetRoot<tflite::TFLiteSettings>(
51 flatBufferBuilder.GetBufferPointer());
52
53 std::unique_ptr<tflite::delegates::DelegatePluginInterface> delegatePlugin =
54 tflite::delegates::DelegatePluginRegistry::CreateByName("armnn_delegate", *settings);
55
56 // Plugin is created correctly using armnn_delegate name.
57 CHECK((delegatePlugin != nullptr));
58
59 tflite::delegates::TfLiteDelegatePtr armnnDelegate = delegatePlugin->Create();
60
61 // Armnn Opaque Delegate is created correctly.
62 CHECK((armnnDelegate != nullptr));
63 CHECK((armnnDelegate->opaque_delegate_builder != nullptr));
Matthew Sloyan65c21a12023-04-04 12:06:14 +010064}
65
Narumol Prangnawarat26654cb2023-05-03 16:08:11 +010066}
Matthew Sloyan65c21a12023-04-04 12:06:14 +010067} // namespace armnnDelegate