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", "unknown_dim_input_concat",
33 "add_unspecified_rank_inputs", "neg", "while_dynamic", "if_dynamic",
36 NNPackages &NNPackages::get()
38 static NNPackages instance;
42 void NNPackages::init(const char *argv0)
46 strncpy(raw_dir, argv0, sizeof(raw_dir) - 1);
48 if (raw_dir[0] == '/')
50 // If it is an absolute path, just use it
55 // If it is a relative path, prepend CWD
56 getcwd(cwd, sizeof(cwd));
59 _base_path += raw_dir;
63 void NNPackages::checkAll()
65 assert(!_base_path.empty());
67 for (int i = 0; i < NNPackages::COUNT; i++)
69 std::string package_name = TEST_PACKAGE_NAMES[i];
70 std::string path = getModelAbsolutePath(i);
72 DIR *dir = opendir(path.c_str());
75 std::string msg = "missing nnpackage: " + package_name + ", path: " + path;
76 throw std::runtime_error{msg};
82 std::string NNPackages::getModelAbsolutePath(int package_no)
84 if (package_no < 0 || package_no >= NNPackages::COUNT)
86 throw std::runtime_error{"Invalid package_no: " + std::to_string(package_no)};
89 const char *package_dir = TEST_PACKAGE_NAMES[package_no];
90 return getModelAbsolutePath(package_dir);
93 std::string NNPackages::getModelAbsolutePath(const char *package_name)
95 return _base_path + "/nnfw_api_gtest_models/" + package_name + "/" + package_name;