1ca0551cfSopenharmony_ci/* 2ca0551cfSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3ca0551cfSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4ca0551cfSopenharmony_ci * you may not use this file except in compliance with the License. 5ca0551cfSopenharmony_ci * You may obtain a copy of the License at 6ca0551cfSopenharmony_ci * 7ca0551cfSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8ca0551cfSopenharmony_ci * 9ca0551cfSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10ca0551cfSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11ca0551cfSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12ca0551cfSopenharmony_ci * See the License for the specific language governing permissions and 13ca0551cfSopenharmony_ci * limitations under the License. 14ca0551cfSopenharmony_ci */ 15ca0551cfSopenharmony_ci 16ca0551cfSopenharmony_ci#include <gtest/gtest.h> 17ca0551cfSopenharmony_ci#define private public 18ca0551cfSopenharmony_ci#define protected public 19ca0551cfSopenharmony_ci#include "parser/lexer.h" 20ca0551cfSopenharmony_ci 21ca0551cfSopenharmony_ciusing namespace testing; 22ca0551cfSopenharmony_ciusing namespace testing::ext; 23ca0551cfSopenharmony_cinamespace OHOS { 24ca0551cfSopenharmony_cinamespace Idl { 25ca0551cfSopenharmony_ci 26ca0551cfSopenharmony_ciclass LexerUnitTest : public testing::Test { 27ca0551cfSopenharmony_cipublic: 28ca0551cfSopenharmony_ci LexerUnitTest() {} 29ca0551cfSopenharmony_ci 30ca0551cfSopenharmony_ci virtual ~LexerUnitTest() {} 31ca0551cfSopenharmony_ci 32ca0551cfSopenharmony_ci static void SetUpTestCase(); 33ca0551cfSopenharmony_ci 34ca0551cfSopenharmony_ci static void TearDownTestCase(); 35ca0551cfSopenharmony_ci 36ca0551cfSopenharmony_ci void SetUp(); 37ca0551cfSopenharmony_ci 38ca0551cfSopenharmony_ci void TearDown(); 39ca0551cfSopenharmony_ci}; 40ca0551cfSopenharmony_ci 41ca0551cfSopenharmony_civoid LexerUnitTest::SetUpTestCase() {} 42ca0551cfSopenharmony_ci 43ca0551cfSopenharmony_civoid LexerUnitTest::TearDownTestCase() {} 44ca0551cfSopenharmony_ci 45ca0551cfSopenharmony_civoid LexerUnitTest::SetUp() {} 46ca0551cfSopenharmony_ci 47ca0551cfSopenharmony_civoid LexerUnitTest::TearDown() {} 48ca0551cfSopenharmony_ci 49ca0551cfSopenharmony_ci/* 50ca0551cfSopenharmony_ci * @tc.name: OpenSourceFileTest_0100 51ca0551cfSopenharmony_ci * @tc.desc: test Lexer's OpenSourceFile function return false. 52ca0551cfSopenharmony_ci * @tc.type: FUNC 53ca0551cfSopenharmony_ci * @tc.require: 54ca0551cfSopenharmony_ci */ 55ca0551cfSopenharmony_ciHWTEST_F(LexerUnitTest, OpenSourceFileTest_0100, Function | MediumTest | Level1) 56ca0551cfSopenharmony_ci{ 57ca0551cfSopenharmony_ci GTEST_LOG_(INFO) 58ca0551cfSopenharmony_ci << "LexerUnitTest, OpenSourceFileTest_0100, TestSize.Level1"; 59ca0551cfSopenharmony_ci Lexer imageLexer; 60ca0551cfSopenharmony_ci String filePath = ""; 61ca0551cfSopenharmony_ci bool result = imageLexer.OpenSourceFile(filePath); 62ca0551cfSopenharmony_ci EXPECT_EQ(result, false); 63ca0551cfSopenharmony_ci} 64ca0551cfSopenharmony_ci 65ca0551cfSopenharmony_ci/* 66ca0551cfSopenharmony_ci * @tc.name: TokenToCharTest_0100 67ca0551cfSopenharmony_ci * @tc.desc: test the token in Lexer's TokenToChar function is ANGLE_BRACKETS_LEFT. 68ca0551cfSopenharmony_ci * @tc.type: FUNC 69ca0551cfSopenharmony_ci * @tc.require: 70ca0551cfSopenharmony_ci */ 71ca0551cfSopenharmony_ciHWTEST_F(LexerUnitTest, TokenToCharTest_0100, Function | MediumTest | Level1) 72ca0551cfSopenharmony_ci{ 73ca0551cfSopenharmony_ci GTEST_LOG_(INFO) 74ca0551cfSopenharmony_ci << "LexerUnitTest, TokenToCharTest_0100, TestSize.Level1"; 75ca0551cfSopenharmony_ci Lexer imageLexer; 76ca0551cfSopenharmony_ci Token token = Token::ANGLE_BRACKETS_LEFT; 77ca0551cfSopenharmony_ci int result = imageLexer.TokenToChar(token); 78ca0551cfSopenharmony_ci EXPECT_EQ(result, 60); 79ca0551cfSopenharmony_ci} 80ca0551cfSopenharmony_ci 81ca0551cfSopenharmony_ci/* 82ca0551cfSopenharmony_ci * @tc.name: TokenToCharTest_0200 83ca0551cfSopenharmony_ci * @tc.desc: test the token in Lexer's TokenToChar function is ANGLE_BRACKETS_RIGHT. 84ca0551cfSopenharmony_ci * @tc.type: FUNC 85ca0551cfSopenharmony_ci * @tc.require: 86ca0551cfSopenharmony_ci */ 87ca0551cfSopenharmony_ciHWTEST_F(LexerUnitTest, TokenToCharTest_0200, Function | MediumTest | Level1) 88ca0551cfSopenharmony_ci{ 89ca0551cfSopenharmony_ci GTEST_LOG_(INFO) 90ca0551cfSopenharmony_ci << "LexerUnitTest, TokenToCharTest_0200, TestSize.Level1"; 91ca0551cfSopenharmony_ci Lexer imageLexer; 92ca0551cfSopenharmony_ci Token token = Token::ANGLE_BRACKETS_RIGHT; 93ca0551cfSopenharmony_ci int result = imageLexer.TokenToChar(token); 94ca0551cfSopenharmony_ci EXPECT_EQ(result, 62); 95ca0551cfSopenharmony_ci} 96ca0551cfSopenharmony_ci 97ca0551cfSopenharmony_ci/* 98ca0551cfSopenharmony_ci * @tc.name: TokenToCharTest_0300 99ca0551cfSopenharmony_ci * @tc.desc: test the token in Lexer's TokenToChar function is BRACES_LEFT. 100ca0551cfSopenharmony_ci * @tc.type: FUNC 101ca0551cfSopenharmony_ci * @tc.require: 102ca0551cfSopenharmony_ci */ 103ca0551cfSopenharmony_ciHWTEST_F(LexerUnitTest, TokenToCharTest_0300, Function | MediumTest | Level1) 104ca0551cfSopenharmony_ci{ 105ca0551cfSopenharmony_ci GTEST_LOG_(INFO) 106ca0551cfSopenharmony_ci << "LexerUnitTest, TokenToCharTest_0300, TestSize.Level1"; 107ca0551cfSopenharmony_ci Lexer imageLexer; 108ca0551cfSopenharmony_ci Token token = Token::BRACES_LEFT; 109ca0551cfSopenharmony_ci int result = imageLexer.TokenToChar(token); 110ca0551cfSopenharmony_ci EXPECT_EQ(result, 123); 111ca0551cfSopenharmony_ci} 112ca0551cfSopenharmony_ci 113ca0551cfSopenharmony_ci/* 114ca0551cfSopenharmony_ci * @tc.name: TokenToCharTest_0400 115ca0551cfSopenharmony_ci * @tc.desc: test the token in Lexer's TokenToChar function is BRACES_RIGHT. 116ca0551cfSopenharmony_ci * @tc.type: FUNC 117ca0551cfSopenharmony_ci * @tc.require: 118ca0551cfSopenharmony_ci */ 119ca0551cfSopenharmony_ciHWTEST_F(LexerUnitTest, TokenToCharTest_0400, Function | MediumTest | Level1) 120ca0551cfSopenharmony_ci{ 121ca0551cfSopenharmony_ci GTEST_LOG_(INFO) 122ca0551cfSopenharmony_ci << "LexerUnitTest, TokenToCharTest_0400, TestSize.Level1"; 123ca0551cfSopenharmony_ci Lexer imageLexer; 124ca0551cfSopenharmony_ci Token token = Token::BRACES_RIGHT; 125ca0551cfSopenharmony_ci int result = imageLexer.TokenToChar(token); 126ca0551cfSopenharmony_ci EXPECT_EQ(result, 125); 127ca0551cfSopenharmony_ci} 128ca0551cfSopenharmony_ci 129ca0551cfSopenharmony_ci/* 130ca0551cfSopenharmony_ci * @tc.name: TokenToCharTest_0500 131ca0551cfSopenharmony_ci * @tc.desc: test the token in Lexer's TokenToChar function is BRACKETS_LEFT. 132ca0551cfSopenharmony_ci * @tc.type: FUNC 133ca0551cfSopenharmony_ci * @tc.require: 134ca0551cfSopenharmony_ci */ 135ca0551cfSopenharmony_ciHWTEST_F(LexerUnitTest, TokenToCharTest_0500, Function | MediumTest | Level1) 136ca0551cfSopenharmony_ci{ 137ca0551cfSopenharmony_ci GTEST_LOG_(INFO) 138ca0551cfSopenharmony_ci << "LexerUnitTest, TokenToCharTest_0500, TestSize.Level1"; 139ca0551cfSopenharmony_ci Lexer imageLexer; 140ca0551cfSopenharmony_ci Token token = Token::BRACKETS_LEFT; 141ca0551cfSopenharmony_ci int result = imageLexer.TokenToChar(token); 142ca0551cfSopenharmony_ci EXPECT_EQ(result, 91); 143ca0551cfSopenharmony_ci} 144ca0551cfSopenharmony_ci 145ca0551cfSopenharmony_ci/* 146ca0551cfSopenharmony_ci * @tc.name: TokenToCharTest_0600 147ca0551cfSopenharmony_ci * @tc.desc: test the token in Lexer's TokenToChar function is BRACKETS_RIGHT. 148ca0551cfSopenharmony_ci * @tc.type: FUNC 149ca0551cfSopenharmony_ci * @tc.require: 150ca0551cfSopenharmony_ci */ 151ca0551cfSopenharmony_ciHWTEST_F(LexerUnitTest, TokenToCharTest_0600, Function | MediumTest | Level1) 152ca0551cfSopenharmony_ci{ 153ca0551cfSopenharmony_ci GTEST_LOG_(INFO) 154ca0551cfSopenharmony_ci << "LexerUnitTest, TokenToCharTest_0600, TestSize.Level1"; 155ca0551cfSopenharmony_ci Lexer imageLexer; 156ca0551cfSopenharmony_ci Token token = Token::BRACKETS_RIGHT; 157ca0551cfSopenharmony_ci int result = imageLexer.TokenToChar(token); 158ca0551cfSopenharmony_ci EXPECT_EQ(result, 93); 159ca0551cfSopenharmony_ci} 160ca0551cfSopenharmony_ci 161ca0551cfSopenharmony_ci/* 162ca0551cfSopenharmony_ci * @tc.name: TokenToCharTest_0700 163ca0551cfSopenharmony_ci * @tc.desc: test the token in Lexer's TokenToChar function is COMMA. 164ca0551cfSopenharmony_ci * @tc.type: FUNC 165ca0551cfSopenharmony_ci * @tc.require: 166ca0551cfSopenharmony_ci */ 167ca0551cfSopenharmony_ciHWTEST_F(LexerUnitTest, TokenToCharTest_0700, Function | MediumTest | Level1) 168ca0551cfSopenharmony_ci{ 169ca0551cfSopenharmony_ci GTEST_LOG_(INFO) 170ca0551cfSopenharmony_ci << "LexerUnitTest, TokenToCharTest_0700, TestSize.Level1"; 171ca0551cfSopenharmony_ci Lexer imageLexer; 172ca0551cfSopenharmony_ci Token token = Token::COMMA; 173ca0551cfSopenharmony_ci int result = imageLexer.TokenToChar(token); 174ca0551cfSopenharmony_ci EXPECT_EQ(result, 44); 175ca0551cfSopenharmony_ci} 176ca0551cfSopenharmony_ci 177ca0551cfSopenharmony_ci/* 178ca0551cfSopenharmony_ci * @tc.name: TokenToCharTest_0800 179ca0551cfSopenharmony_ci * @tc.desc: test the token in Lexer's TokenToChar function is DOT. 180ca0551cfSopenharmony_ci * @tc.type: FUNC 181ca0551cfSopenharmony_ci * @tc.require: 182ca0551cfSopenharmony_ci */ 183ca0551cfSopenharmony_ciHWTEST_F(LexerUnitTest, TokenToCharTest_0800, Function | MediumTest | Level1) 184ca0551cfSopenharmony_ci{ 185ca0551cfSopenharmony_ci GTEST_LOG_(INFO) 186ca0551cfSopenharmony_ci << "LexerUnitTest, TokenToCharTest_0800, TestSize.Level1"; 187ca0551cfSopenharmony_ci Lexer imageLexer; 188ca0551cfSopenharmony_ci Token token = Token::DOT; 189ca0551cfSopenharmony_ci int result = imageLexer.TokenToChar(token); 190ca0551cfSopenharmony_ci EXPECT_EQ(result, 46); 191ca0551cfSopenharmony_ci} 192ca0551cfSopenharmony_ci 193ca0551cfSopenharmony_ci/* 194ca0551cfSopenharmony_ci * @tc.name: TokenToCharTest_0900 195ca0551cfSopenharmony_ci * @tc.desc: test the token in Lexer's TokenToChar function is PARENTHESES_LEFT. 196ca0551cfSopenharmony_ci * @tc.type: FUNC 197ca0551cfSopenharmony_ci * @tc.require: 198ca0551cfSopenharmony_ci */ 199ca0551cfSopenharmony_ciHWTEST_F(LexerUnitTest, TokenToCharTest_0900, Function | MediumTest | Level1) 200ca0551cfSopenharmony_ci{ 201ca0551cfSopenharmony_ci GTEST_LOG_(INFO) 202ca0551cfSopenharmony_ci << "LexerUnitTest, TokenToCharTest_0900, TestSize.Level1"; 203ca0551cfSopenharmony_ci Lexer imageLexer; 204ca0551cfSopenharmony_ci Token token = Token::PARENTHESES_LEFT; 205ca0551cfSopenharmony_ci int result = imageLexer.TokenToChar(token); 206ca0551cfSopenharmony_ci EXPECT_EQ(result, 40); 207ca0551cfSopenharmony_ci} 208ca0551cfSopenharmony_ci 209ca0551cfSopenharmony_ci/* 210ca0551cfSopenharmony_ci * @tc.name: TokenToCharTest_1000 211ca0551cfSopenharmony_ci * @tc.desc: test the token in Lexer's TokenToChar function is PARENTHESES_RIGHT. 212ca0551cfSopenharmony_ci * @tc.type: FUNC 213ca0551cfSopenharmony_ci * @tc.require: 214ca0551cfSopenharmony_ci */ 215ca0551cfSopenharmony_ciHWTEST_F(LexerUnitTest, TokenToCharTest_1000, Function | MediumTest | Level1) 216ca0551cfSopenharmony_ci{ 217ca0551cfSopenharmony_ci GTEST_LOG_(INFO) 218ca0551cfSopenharmony_ci << "LexerUnitTest, TokenToCharTest_1000, TestSize.Level1"; 219ca0551cfSopenharmony_ci Lexer imageLexer; 220ca0551cfSopenharmony_ci Token token = Token::PARENTHESES_RIGHT; 221ca0551cfSopenharmony_ci int result = imageLexer.TokenToChar(token); 222ca0551cfSopenharmony_ci EXPECT_EQ(result, 41); 223ca0551cfSopenharmony_ci} 224ca0551cfSopenharmony_ci 225ca0551cfSopenharmony_ci/* 226ca0551cfSopenharmony_ci * @tc.name: TokenToCharTest_1100 227ca0551cfSopenharmony_ci * @tc.desc: test the token in Lexer's TokenToChar function is other. 228ca0551cfSopenharmony_ci * @tc.type: FUNC 229ca0551cfSopenharmony_ci * @tc.require: 230ca0551cfSopenharmony_ci */ 231ca0551cfSopenharmony_ciHWTEST_F(LexerUnitTest, TokenToCharTest_1100, Function | MediumTest | Level1) 232ca0551cfSopenharmony_ci{ 233ca0551cfSopenharmony_ci GTEST_LOG_(INFO) 234ca0551cfSopenharmony_ci << "LexerUnitTest, TokenToCharTest_1100, TestSize.Level1"; 235ca0551cfSopenharmony_ci Lexer imageLexer; 236ca0551cfSopenharmony_ci Token token = Token::IDENTIFIER; 237ca0551cfSopenharmony_ci int result = imageLexer.TokenToChar(token); 238ca0551cfSopenharmony_ci EXPECT_EQ(result, -1); 239ca0551cfSopenharmony_ci} 240ca0551cfSopenharmony_ci 241ca0551cfSopenharmony_ci/* 242ca0551cfSopenharmony_ci * @tc.name: strToIntTest_0100 243ca0551cfSopenharmony_ci * @tc.desc: test str to int 244ca0551cfSopenharmony_ci * @tc.type: FUNC 245ca0551cfSopenharmony_ci * @tc.require: 246ca0551cfSopenharmony_ci */ 247ca0551cfSopenharmony_ciHWTEST_F(LexerUnitTest, strToIntTest_0100, Function | MediumTest | Level1) 248ca0551cfSopenharmony_ci{ 249ca0551cfSopenharmony_ci GTEST_LOG_(INFO) << "LexerUnitTest, strToIntTest_0100, TestSize.Level1"; 250ca0551cfSopenharmony_ci Lexer imageLexer; 251ca0551cfSopenharmony_ci int number; 252ca0551cfSopenharmony_ci { 253ca0551cfSopenharmony_ci const char *str = "100"; 254ca0551cfSopenharmony_ci bool result = imageLexer.strToInt(str, 3, number); 255ca0551cfSopenharmony_ci EXPECT_EQ(result, true); 256ca0551cfSopenharmony_ci EXPECT_EQ(number, 100); 257ca0551cfSopenharmony_ci } 258ca0551cfSopenharmony_ci 259ca0551cfSopenharmony_ci { 260ca0551cfSopenharmony_ci const char *str = "0000100"; 261ca0551cfSopenharmony_ci bool result = imageLexer.strToInt(str, 7, number); 262ca0551cfSopenharmony_ci EXPECT_EQ(result, true); 263ca0551cfSopenharmony_ci EXPECT_EQ(number, 100); 264ca0551cfSopenharmony_ci } 265ca0551cfSopenharmony_ci 266ca0551cfSopenharmony_ci { 267ca0551cfSopenharmony_ci const char *str = "0"; 268ca0551cfSopenharmony_ci bool result = imageLexer.strToInt(str, 1, number); 269ca0551cfSopenharmony_ci EXPECT_EQ(result, true); 270ca0551cfSopenharmony_ci EXPECT_EQ(number, 0); 271ca0551cfSopenharmony_ci } 272ca0551cfSopenharmony_ci 273ca0551cfSopenharmony_ci { 274ca0551cfSopenharmony_ci const char *str = "-1"; 275ca0551cfSopenharmony_ci bool result = imageLexer.strToInt(str, 2, number); 276ca0551cfSopenharmony_ci EXPECT_EQ(result, false); 277ca0551cfSopenharmony_ci } 278ca0551cfSopenharmony_ci 279ca0551cfSopenharmony_ci // exceed the upper limit of int 280ca0551cfSopenharmony_ci { 281ca0551cfSopenharmony_ci const char *str = "2147483647"; 282ca0551cfSopenharmony_ci bool result = imageLexer.strToInt(str, 10, number); 283ca0551cfSopenharmony_ci EXPECT_EQ(result, true); 284ca0551cfSopenharmony_ci EXPECT_EQ(number, 2147483647); 285ca0551cfSopenharmony_ci } 286ca0551cfSopenharmony_ci 287ca0551cfSopenharmony_ci // exceed the upper limit of int 288ca0551cfSopenharmony_ci { 289ca0551cfSopenharmony_ci const char *str = "2147483648"; 290ca0551cfSopenharmony_ci bool result = imageLexer.strToInt(str, 10, number); 291ca0551cfSopenharmony_ci EXPECT_EQ(result, false); 292ca0551cfSopenharmony_ci } 293ca0551cfSopenharmony_ci 294ca0551cfSopenharmony_ci { 295ca0551cfSopenharmony_ci const char *str = "abdc"; 296ca0551cfSopenharmony_ci bool result = imageLexer.strToInt(str, 4, number); 297ca0551cfSopenharmony_ci EXPECT_EQ(result, false); 298ca0551cfSopenharmony_ci } 299ca0551cfSopenharmony_ci 300ca0551cfSopenharmony_ci { 301ca0551cfSopenharmony_ci const char *str = "0000"; 302ca0551cfSopenharmony_ci bool result = imageLexer.strToInt(str, 4, number); 303ca0551cfSopenharmony_ci EXPECT_EQ(result, true); 304ca0551cfSopenharmony_ci EXPECT_EQ(number, 0); 305ca0551cfSopenharmony_ci } 306ca0551cfSopenharmony_ci} 307ca0551cfSopenharmony_ci} // namespace idl 308ca0551cfSopenharmony_ci} // namespace OHOS