telsoa01 | 5307bc1 | 2018-03-09 13:51:08 +0000 | [diff] [blame] | 1 | // |
| 2 | // Copyright © 2017 Arm Ltd. All rights reserved. |
David Beck | 93e4898 | 2018-09-05 13:05:09 +0100 | [diff] [blame] | 3 | // SPDX-License-Identifier: MIT |
telsoa01 | 5307bc1 | 2018-03-09 13:51:08 +0000 | [diff] [blame] | 4 | // |
telsoa01 | 5307bc1 | 2018-03-09 13:51:08 +0000 | [diff] [blame] | 5 | #define LOG_TAG "ArmnnDriverTests" |
telsoa01 | 5307bc1 | 2018-03-09 13:51:08 +0000 | [diff] [blame] | 6 | #include <log/log.h> |
| 7 | |
surmeh01 | 49b9e10 | 2018-05-17 14:11:25 +0100 | [diff] [blame] | 8 | #include "DriverTestHelpers.hpp" |
telsoa01 | 5307bc1 | 2018-03-09 13:51:08 +0000 | [diff] [blame] | 9 | |
Sadik Armagan | 9150bff | 2021-05-26 15:40:53 +0100 | [diff] [blame^] | 10 | #ifndef DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN |
| 11 | #define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN |
| 12 | #endif |
| 13 | #include <doctest/doctest.h> |
telsoa01 | 5307bc1 | 2018-03-09 13:51:08 +0000 | [diff] [blame] | 14 | |
telsoa01 | ce3e84a | 2018-08-31 09:31:35 +0100 | [diff] [blame] | 15 | using namespace android::hardware; |
surmeh01 | 49b9e10 | 2018-05-17 14:11:25 +0100 | [diff] [blame] | 16 | using namespace driverTestHelpers; |
telsoa01 | ce3e84a | 2018-08-31 09:31:35 +0100 | [diff] [blame] | 17 | using namespace armnn_driver; |
telsoa01 | 5307bc1 | 2018-03-09 13:51:08 +0000 | [diff] [blame] | 18 | |
Sadik Armagan | 9150bff | 2021-05-26 15:40:53 +0100 | [diff] [blame^] | 19 | TEST_SUITE("DriverTests") |
| 20 | { |
| 21 | |
| 22 | TEST_CASE("Init") |
telsoa01 | 5307bc1 | 2018-03-09 13:51:08 +0000 | [diff] [blame] | 23 | { |
| 24 | // Making the driver object on the stack causes a weird libc error, so make it on the heap instead |
| 25 | auto driver = std::make_unique<ArmnnDriver>(DriverOptions(armnn::Compute::CpuRef)); |
| 26 | |
Sadik Armagan | 188675f | 2021-02-12 17:16:42 +0000 | [diff] [blame] | 27 | V1_0::DeviceStatus status = driver->getStatus(); |
Sadik Armagan | 9150bff | 2021-05-26 15:40:53 +0100 | [diff] [blame^] | 28 | // Note double-parentheses to avoid compile error from doctest trying to printf the DeviceStatus |
| 29 | CHECK((status == V1_0::DeviceStatus::AVAILABLE)); |
telsoa01 | 5307bc1 | 2018-03-09 13:51:08 +0000 | [diff] [blame] | 30 | } |
| 31 | |
Sadik Armagan | 9150bff | 2021-05-26 15:40:53 +0100 | [diff] [blame^] | 32 | TEST_CASE("TestCapabilities") |
telsoa01 | 5307bc1 | 2018-03-09 13:51:08 +0000 | [diff] [blame] | 33 | { |
| 34 | // Making the driver object on the stack causes a weird libc error, so make it on the heap instead |
| 35 | auto driver = std::make_unique<ArmnnDriver>(DriverOptions(armnn::Compute::CpuRef)); |
| 36 | |
Kevin May | ec1e5b8 | 2020-02-26 17:00:39 +0000 | [diff] [blame] | 37 | V1_0::ErrorStatus error; |
Matteo Martincigh | 8b287c2 | 2018-09-07 09:25:10 +0100 | [diff] [blame] | 38 | V1_0::Capabilities cap; |
telsoa01 | 5307bc1 | 2018-03-09 13:51:08 +0000 | [diff] [blame] | 39 | |
Kevin May | ec1e5b8 | 2020-02-26 17:00:39 +0000 | [diff] [blame] | 40 | auto cb = [&](V1_0::ErrorStatus status, const V1_0::Capabilities& capabilities) |
telsoa01 | 5307bc1 | 2018-03-09 13:51:08 +0000 | [diff] [blame] | 41 | { |
| 42 | error = status; |
| 43 | cap = capabilities; |
| 44 | }; |
| 45 | |
| 46 | driver->getCapabilities(cb); |
| 47 | |
Sadik Armagan | 9150bff | 2021-05-26 15:40:53 +0100 | [diff] [blame^] | 48 | CHECK((int)error == (int)V1_0::ErrorStatus::NONE); |
| 49 | CHECK(cap.float32Performance.execTime > 0.f); |
| 50 | CHECK(cap.float32Performance.powerUsage > 0.f); |
| 51 | CHECK(cap.quantized8Performance.execTime > 0.f); |
| 52 | CHECK(cap.quantized8Performance.powerUsage > 0.f); |
telsoa01 | 5307bc1 | 2018-03-09 13:51:08 +0000 | [diff] [blame] | 53 | } |
| 54 | |
Sadik Armagan | 9150bff | 2021-05-26 15:40:53 +0100 | [diff] [blame^] | 55 | } |