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.
18 #include "NNPackages.h"
20 using ValidationTestAddSessionPrepared = ValidationTestSessionPrepared<NNPackages::ADD>;
22 TEST_F(ValidationTestAddSessionPrepared, run)
26 NNFW_ENSURE_SUCCESS(nnfw_run(_session));
27 ASSERT_FLOAT_EQ(_output[0], 5.0);
30 TEST_F(ValidationTestAddSessionPrepared, run_twice)
34 NNFW_ENSURE_SUCCESS(nnfw_run(_session));
35 ASSERT_FLOAT_EQ(_output[0], 6.0);
38 NNFW_ENSURE_SUCCESS(nnfw_run(_session));
39 ASSERT_FLOAT_EQ(_output[0], 7.0);
42 TEST_F(ValidationTestAddSessionPrepared, run_async)
46 NNFW_ENSURE_SUCCESS(nnfw_run_async(_session));
47 NNFW_ENSURE_SUCCESS(nnfw_await(_session));
48 ASSERT_FLOAT_EQ(_output[0], 5.0);
51 TEST_F(ValidationTestAddSessionPrepared, set_input_001)
54 ASSERT_EQ(nnfw_set_input(_session, 0, NNFW_TYPE_TENSOR_FLOAT32, input, sizeof(input)),
55 NNFW_STATUS_NO_ERROR);
58 TEST_F(ValidationTestAddSessionPrepared, get_input_size)
61 NNFW_ENSURE_SUCCESS(nnfw_input_size(_session, &size));
65 TEST_F(ValidationTestAddSessionPrepared, get_output_size)
68 NNFW_ENSURE_SUCCESS(nnfw_output_size(_session, &size));
72 TEST_F(ValidationTestAddSessionPrepared, output_tensorinfo)
74 nnfw_tensorinfo tensor_info;
75 NNFW_ENSURE_SUCCESS(nnfw_output_tensorinfo(_session, 0, &tensor_info));
76 ASSERT_EQ(tensor_info.rank, 1);
77 ASSERT_EQ(tensor_info.dims[0], 1);
80 TEST_F(ValidationTestAddSessionPrepared, neg_await_without_async_run)
83 ASSERT_EQ(nnfw_await(_session), NNFW_STATUS_ERROR);
86 TEST_F(ValidationTestAddSessionPrepared, neg_await_after_sync_run)
89 NNFW_ENSURE_SUCCESS(nnfw_run(_session));
90 ASSERT_EQ(nnfw_await(_session), NNFW_STATUS_ERROR);
93 TEST_F(ValidationTestAddSessionPrepared, neg_await_twice)
96 NNFW_ENSURE_SUCCESS(nnfw_run_async(_session));
97 NNFW_ENSURE_SUCCESS(nnfw_await(_session));
98 ASSERT_EQ(nnfw_await(_session), NNFW_STATUS_ERROR);
101 TEST_F(ValidationTestAddSessionPrepared, neg_run_during_async_run)
104 NNFW_ENSURE_SUCCESS(nnfw_run_async(_session));
105 EXPECT_EQ(nnfw_run(_session), NNFW_STATUS_INVALID_STATE);
106 NNFW_ENSURE_SUCCESS(nnfw_await(_session));
109 TEST_F(ValidationTestAddSessionPrepared, neg_set_input_001)
111 ASSERT_EQ(nnfw_set_input(_session, 0, NNFW_TYPE_TENSOR_FLOAT32, nullptr, 1), NNFW_STATUS_ERROR);
114 TEST_F(ValidationTestAddSessionPrepared, neg_set_input_002)
116 char input[1]; // buffer size is too small
117 ASSERT_EQ(nnfw_set_input(_session, 0, NNFW_TYPE_TENSOR_FLOAT32, input, sizeof(input)),
121 TEST_F(ValidationTestAddSessionPrepared, set_output_001)
124 ASSERT_EQ(nnfw_set_input(_session, 0, NNFW_TYPE_TENSOR_FLOAT32, buffer, sizeof(buffer)),
125 NNFW_STATUS_NO_ERROR);
128 TEST_F(ValidationTestAddSessionPrepared, neg_set_output_001)
130 ASSERT_EQ(nnfw_set_output(_session, 0, NNFW_TYPE_TENSOR_FLOAT32, nullptr, 1), NNFW_STATUS_ERROR);
133 TEST_F(ValidationTestAddSessionPrepared, neg_set_output_002)
135 char input[1]; // buffer size is too small
136 ASSERT_EQ(nnfw_set_output(_session, 0, NNFW_TYPE_TENSOR_FLOAT32, input, sizeof(input)),
140 TEST_F(ValidationTestAddSessionPrepared, neg_get_input_size)
142 ASSERT_EQ(nnfw_input_size(_session, nullptr), NNFW_STATUS_UNEXPECTED_NULL);
145 TEST_F(ValidationTestAddSessionPrepared, neg_get_output_size)
147 ASSERT_EQ(nnfw_output_size(_session, nullptr), NNFW_STATUS_UNEXPECTED_NULL);
150 TEST_F(ValidationTestAddSessionPrepared, neg_load_model)
153 ASSERT_EQ(nnfw_load_model_from_file(
154 _session, NNPackages::get().getModelAbsolutePath(NNPackages::ADD).c_str()),
155 NNFW_STATUS_INVALID_STATE);
158 TEST_F(ValidationTestAddSessionPrepared, neg_prepare)
160 // Call Prepare twice
161 ASSERT_EQ(nnfw_prepare(_session), NNFW_STATUS_INVALID_STATE);
164 // TODO Validation check when "nnfw_run" is called without input & output tensor setting