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