2 * Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include "NNPackages.h"
26 // NOTE Must match `enum TestPackages`
27 const char *TEST_PACKAGE_NAMES[] = {
28 // for validation test
29 "add", "add_no_manifest", "add_invalid_manifest",
31 // for dynamic tensor test
32 "input_reshaping_add", "dynamic_tensor_reshape", "while_dynamic", "if_dynamic",
35 NNPackages &NNPackages::get()
37 static NNPackages instance;
41 void NNPackages::init(const char *argv0)
45 strncpy(raw_dir, argv0, sizeof(raw_dir) - 1);
47 if (raw_dir[0] == '/')
49 // If it is an absolute path, just use it
54 // If it is a relative path, prepend CWD
55 getcwd(cwd, sizeof(cwd));
58 _base_path += raw_dir;
62 void NNPackages::checkAll()
64 assert(!_base_path.empty());
66 for (int i = 0; i < NNPackages::COUNT; i++)
68 std::string package_name = TEST_PACKAGE_NAMES[i];
69 std::string path = getModelAbsolutePath(i);
71 DIR *dir = opendir(path.c_str());
74 std::string msg = "missing nnpackage: " + package_name + ", path: " + path;
75 throw std::runtime_error{msg};
81 std::string NNPackages::getModelAbsolutePath(int package_no)
83 if (package_no < 0 || package_no >= NNPackages::COUNT)
85 throw std::runtime_error{"Invalid package_no: " + std::to_string(package_no)};
88 const char *package_dir = TEST_PACKAGE_NAMES[package_no];
89 return getModelAbsolutePath(package_dir);
92 std::string NNPackages::getModelAbsolutePath(const char *package_name)
94 return _base_path + "/nnfw_api_gtest_models/" + package_name + "/" + package_name;