xref: /aosp_15_r20/external/android-nn-driver/test/Tests.cpp (revision 3e777be0405cee09af5d5785ff37f7cfb5bee59a)
1*3e777be0SXin Li //
2*3e777be0SXin Li // Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
3*3e777be0SXin Li // SPDX-License-Identifier: MIT
4*3e777be0SXin Li //
5*3e777be0SXin Li 
6*3e777be0SXin Li #define LOG_TAG "ArmnnDriverTests"
7*3e777be0SXin Li #include <log/log.h>
8*3e777be0SXin Li 
9*3e777be0SXin Li #ifndef DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
10*3e777be0SXin Li #define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
11*3e777be0SXin Li #endif
12*3e777be0SXin Li 
13*3e777be0SXin Li #include "DriverTestHelpers.hpp"
14*3e777be0SXin Li 
15*3e777be0SXin Li using namespace android::hardware;
16*3e777be0SXin Li using namespace driverTestHelpers;
17*3e777be0SXin Li using namespace armnn_driver;
18*3e777be0SXin Li 
19*3e777be0SXin Li DOCTEST_TEST_SUITE("DriverTests")
20*3e777be0SXin Li {
21*3e777be0SXin Li 
22*3e777be0SXin Li DOCTEST_TEST_CASE("Init")
23*3e777be0SXin Li {
24*3e777be0SXin Li     // Making the driver object on the stack causes a weird libc error, so make it on the heap instead
25*3e777be0SXin Li     auto driver = std::make_unique<ArmnnDriver>(DriverOptions(armnn::Compute::CpuRef));
26*3e777be0SXin Li 
27*3e777be0SXin Li     V1_0::DeviceStatus status = driver->getStatus();
28*3e777be0SXin Li     // Note double-parentheses to avoid compile error from doctest trying to printf the DeviceStatus
29*3e777be0SXin Li     DOCTEST_CHECK((status == V1_0::DeviceStatus::AVAILABLE));
30*3e777be0SXin Li }
31*3e777be0SXin Li 
32*3e777be0SXin Li DOCTEST_TEST_CASE("TestCapabilities")
33*3e777be0SXin Li {
34*3e777be0SXin Li     // Making the driver object on the stack causes a weird libc error, so make it on the heap instead
35*3e777be0SXin Li     auto driver = std::make_unique<ArmnnDriver>(DriverOptions(armnn::Compute::CpuRef));
36*3e777be0SXin Li 
37*3e777be0SXin Li     V1_0::ErrorStatus error;
38*3e777be0SXin Li     V1_0::Capabilities cap;
39*3e777be0SXin Li 
40*3e777be0SXin Li     auto cb = [&](V1_0::ErrorStatus status, const V1_0::Capabilities& capabilities)
__anon3bea8d8c0102(V1_0::ErrorStatus status, const V1_0::Capabilities& capabilities) 41*3e777be0SXin Li     {
42*3e777be0SXin Li         error = status;
43*3e777be0SXin Li         cap = capabilities;
44*3e777be0SXin Li     };
45*3e777be0SXin Li 
46*3e777be0SXin Li     driver->getCapabilities(cb);
47*3e777be0SXin Li 
48*3e777be0SXin Li     DOCTEST_CHECK((int)error == (int)V1_0::ErrorStatus::NONE);
49*3e777be0SXin Li     DOCTEST_CHECK(cap.float32Performance.execTime > 0.f);
50*3e777be0SXin Li     DOCTEST_CHECK(cap.float32Performance.powerUsage > 0.f);
51*3e777be0SXin Li     DOCTEST_CHECK(cap.quantized8Performance.execTime > 0.f);
52*3e777be0SXin Li     DOCTEST_CHECK(cap.quantized8Performance.powerUsage > 0.f);
53*3e777be0SXin Li }
54*3e777be0SXin Li 
55*3e777be0SXin Li }
56