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