1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 #include "ast/ast_interface_type.h"
18 #include "ast/ast_module.h"
19 #include "ast/ast_namespace.h"
20 
21 using namespace testing;
22 using namespace testing::ext;
23 using namespace OHOS::Idl;
24 
25 namespace OHOS {
26 namespace idl {
27 class AstModuleUnitTest : public testing::Test {
28 public:
AstModuleUnitTest()29     AstModuleUnitTest() {}
30 
~AstModuleUnitTest()31     virtual ~AstModuleUnitTest() {}
32 
33     static void SetUpTestCase();
34 
35     static void TearDownTestCase();
36 
37     void SetUp();
38 
39     void TearDown();
40 };
41 
SetUpTestCase()42 void AstModuleUnitTest::SetUpTestCase() {}
43 
TearDownTestCase()44 void AstModuleUnitTest::TearDownTestCase() {}
45 
SetUp()46 void AstModuleUnitTest::SetUp() {}
47 
TearDown()48 void AstModuleUnitTest::TearDown() {}
49 
50 /*
51  * @tc.name: GetParameterTest_0100
52  * @tc.desc: test GetParameter in AstModuleUnitTest.
53  * @tc.type: FUNC
54  * @tc.require:
55  */
56 HWTEST_F(AstModuleUnitTest, GetNamespaceTest_0100, Function | MediumTest | Level1)
57 {
58     GTEST_LOG_(INFO)
59         << "AstModuleUnitTest, GetNamespaceTest_0100, TestSize.Level1";
60     AutoPtr<ASTModule> module = new ASTModule();
61     size_t index = 3;
62     AutoPtr<ASTNamespace> result = module->GetNamespace(index);
63 
64     EXPECT_EQ(result, nullptr);
65 }
66 
67 /*
68  * @tc.name: GetInterfaceTest_0100
69  * @tc.desc: test GetInterface in AstModuleUnitTest.
70  * @tc.type: FUNC
71  * @tc.require:
72  */
73 HWTEST_F(AstModuleUnitTest, GetInterfaceTest_0100, Function | MediumTest | Level1)
74 {
75     GTEST_LOG_(INFO)
76         << "AstModuleUnitTest, GetInterfaceTest_0100, TestSize.Level1";
77     AutoPtr<ASTModule> module = new ASTModule();
78     size_t index = 3;
79     AutoPtr<ASTInterfaceType> result = module->GetInterface(index);
80 
81     EXPECT_EQ(result, nullptr);
82 }
83 
84 /*
85  * @tc.name: IndexOfTest_0100
86  * @tc.desc: test IndexOf in AstModuleUnitTest.
87  * @tc.type: FUNC
88  * @tc.require:
89  */
90 HWTEST_F(AstModuleUnitTest, IndexOfTest_0100, Function | MediumTest | Level1)
91 {
92     GTEST_LOG_(INFO)
93         << "AstModuleUnitTest, IndexOfTest_0100, TestSize.Level1";
94     AutoPtr<ASTModule> module = new ASTModule();
95     ASTInterfaceType* interface = new ASTInterfaceType();
96     int result = module->IndexOf(interface);
97 
98     EXPECT_EQ(result, -1);
99 }
100 
101 /*
102  * @tc.name: GetSequenceableTest_0100
103  * @tc.desc: test GetSequenceable in AstModuleUnitTest.
104  * @tc.type: FUNC
105  * @tc.require:
106  */
107 HWTEST_F(AstModuleUnitTest, GetSequenceableTest_0100, Function | MediumTest | Level1)
108 {
109     GTEST_LOG_(INFO)
110         << "AstModuleUnitTest, GetSequenceableTest_0100, TestSize.Level1";
111     AutoPtr<ASTModule> module = new ASTModule();
112     size_t index = 3;
113     AutoPtr<ASTSequenceableType> result = module->GetSequenceable(index);
114 
115     EXPECT_EQ(result, nullptr);
116 }
117 
118 /*
119  * @tc.name: IndexOfTest_0200
120  * @tc.desc: test IndexOf in AstModuleUnitTest.
121  * @tc.type: FUNC
122  * @tc.require:
123  */
124 HWTEST_F(AstModuleUnitTest, IndexOfTest_0200, Function | MediumTest | Level1)
125 {
126     GTEST_LOG_(INFO)
127         << "AstModuleUnitTest, IndexOfTest_0200, TestSize.Level1";
128     AutoPtr<ASTModule> module = new ASTModule();
129     ASTSequenceableType* sequenceable = new ASTSequenceableType();
130     int result = module->IndexOf(sequenceable);
131 
132     EXPECT_EQ(result, -1);
133 }
134 
135 /*
136  * @tc.name: FindTypeTest_0100
137  * @tc.desc: test IndexOf in AstModuleUnitTest.
138  * @tc.type: FUNC
139  * @tc.require:
140  */
141 HWTEST_F(AstModuleUnitTest, FindTypeTest_0100, Function | MediumTest | Level1)
142 {
143     GTEST_LOG_(INFO)
144         << "AstModuleUnitTest, FindTypeTest_0100, TestSize.Level1";
145     AutoPtr<ASTModule> module = new ASTModule();
146     String typeName = "";
147     AutoPtr<ASTType> result = module->FindType(typeName);
148 
149     EXPECT_EQ(result, nullptr);
150 }
151 
152 /*
153  * @tc.name: IndexOfTest_0300
154  * @tc.desc: test IndexOf in AstModuleUnitTest.
155  * @tc.type: FUNC
156  * @tc.require:
157  */
158 HWTEST_F(AstModuleUnitTest, IndexOfTest_0300, Function | MediumTest | Level1)
159 {
160     GTEST_LOG_(INFO)
161         << "AstModuleUnitTest, IndexOfTest_0300, TestSize.Level1";
162     AutoPtr<ASTModule> module = new ASTModule();
163     AutoPtr<ASTInterfaceType> interfaceType = new ASTInterfaceType();
164     int result = module->IndexOf(interfaceType);
165 
166     EXPECT_EQ(result, -1);
167 }
168 
169 /*
170  * @tc.name: IsValidTest_0100
171  * @tc.desc: test IsValid in AstModuleUnitTest.
172  * @tc.type: FUNC
173  * @tc.require:
174  */
175 HWTEST_F(AstModuleUnitTest, IsValidTest_0100, Function | MediumTest | Level1)
176 {
177     GTEST_LOG_(INFO)
178         << "AstModuleUnitTest, IsValidTest_0100, TestSize.Level1";
179     AutoPtr<ASTModule> module = new ASTModule();
180     bool result = module->IsValid();
181 
182     EXPECT_EQ(result, false);
183 }
184 
185 /*
186  * @tc.name: DumpTest_0100
187  * @tc.desc: test Dump in AstModuleUnitTest.
188  * @tc.type: FUNC
189  * @tc.require:
190  */
191 HWTEST_F(AstModuleUnitTest, DumpTest_0100, Function | MediumTest | Level1)
192 {
193     GTEST_LOG_(INFO)
194         << "AstModuleUnitTest, DumpTest_0100, TestSize.Level1";
195     AutoPtr<ASTModule> module = new ASTModule();
196     AutoPtr<ASTInterfaceType> interfaceType = new ASTInterfaceType();
197 
198     String prefix = "prefix";
199     String idlFile = "idlFile";
200 
201     ASTSequenceableType* sequenceable = new ASTSequenceableType();
202     ASTInterfaceType* interface = new ASTInterfaceType();
203     interface->SetExternal(true);
204 
205     module->SetIdlFile(idlFile);
206     module->AddSequenceable(sequenceable);
207     module->AddInterface(interface);
208 
209     String result = module->Dump(prefix);
210     String expectResult = prefix + "Module[" + "name: " + " " + "file: " + idlFile + "]\n"
211       + "  sequenceable " + ";\n" + "\n" + "  interface " + ";\n" + "\n";
212 
213     ASSERT_STREQ(result, expectResult);
214 }
215 } // namespace idl
216 } // namespace OHOS
217