1f6603c60Sopenharmony_ci/* 2f6603c60Sopenharmony_ci * Copyright (c) 2020-2021 Huawei Device Co., Ltd. 3f6603c60Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4f6603c60Sopenharmony_ci * you may not use this file except in compliance with the License. 5f6603c60Sopenharmony_ci * You may obtain a copy of the License at 6f6603c60Sopenharmony_ci * 7f6603c60Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8f6603c60Sopenharmony_ci * 9f6603c60Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10f6603c60Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11f6603c60Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12f6603c60Sopenharmony_ci * See the License for the specific language governing permissions and 13f6603c60Sopenharmony_ci * limitations under the License. 14f6603c60Sopenharmony_ci */ 15f6603c60Sopenharmony_ci 16f6603c60Sopenharmony_ci// --------------------<测试 参数化>----------------------------------- 17f6603c60Sopenharmony_ci#include "gtest/gtest.h" 18f6603c60Sopenharmony_ci#include <cmath> 19f6603c60Sopenharmony_ci#include "demo.h" 20f6603c60Sopenharmony_ciusing namespace ::testing; 21f6603c60Sopenharmony_ci 22f6603c60Sopenharmony_cistruct ParamList { 23f6603c60Sopenharmony_ci bool out; 24f6603c60Sopenharmony_ci int in; 25f6603c60Sopenharmony_ci}; 26f6603c60Sopenharmony_ci 27f6603c60Sopenharmony_ciclass IsPrimeParamTest : public ::testing::TestWithParam<struct ParamList> { 28f6603c60Sopenharmony_ci}; 29f6603c60Sopenharmony_ci 30f6603c60Sopenharmony_ci// if n is prime num return true else return false 31f6603c60Sopenharmony_cistatic bool IsPrimeNum(int n) 32f6603c60Sopenharmony_ci{ 33f6603c60Sopenharmony_ci if (n < NUM2) { 34f6603c60Sopenharmony_ci return false; 35f6603c60Sopenharmony_ci } 36f6603c60Sopenharmony_ci int i; 37f6603c60Sopenharmony_ci for (i = NUM2; i <= sqrt(n); i++) { 38f6603c60Sopenharmony_ci if ((n % i) == 0) { 39f6603c60Sopenharmony_ci return false; 40f6603c60Sopenharmony_ci } 41f6603c60Sopenharmony_ci } 42f6603c60Sopenharmony_ci return true; 43f6603c60Sopenharmony_ci} 44f6603c60Sopenharmony_ci 45f6603c60Sopenharmony_ciTEST_P(IsPrimeParamTest, IsPrime) 46f6603c60Sopenharmony_ci{ 47f6603c60Sopenharmony_ci bool out = GetParam().out; 48f6603c60Sopenharmony_ci int in = GetParam().in; 49f6603c60Sopenharmony_ci EXPECT_EQ(out, IsPrimeNum(in)); 50f6603c60Sopenharmony_ci} 51f6603c60Sopenharmony_ci 52f6603c60Sopenharmony_ciINSTANTIATE_TEST_CASE_P(IsPrimeParamTest, 53f6603c60Sopenharmony_ci IsPrimeParamTest, 54f6603c60Sopenharmony_ci Values(ParamList{false, NUM10}, ParamList{true, NUM3}, ParamList{false, NUM0}, ParamList{false, NG_NUM1})); 55