1 /*
2 * Copyright (c) 2023 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
18 #include <climits>
19 #include <string>
20
21 #include "sqlite_utils.h"
22 #include "string_utils.h"
23
24 using namespace testing::ext;
25 using namespace OHOS::NativeRdb;
26
27 class RdbUtilsTest : public testing::Test {
28 public:
29 static void SetUpTestCase(void);
30 static void TearDownTestCase(void);
SetUp(void)31 void SetUp(void){};
TearDown(void)32 void TearDown(void){};
33 };
34
SetUpTestCase(void)35 void RdbUtilsTest::SetUpTestCase(void)
36 {
37 }
38
TearDownTestCase(void)39 void RdbUtilsTest::TearDownTestCase(void)
40 {
41 }
42
43 /**
44 * @tc.name: RdbStore_SqliteUtils_001
45 * @tc.desc: Normal testCase of sqlite_utils for IsSpecial, if sqlType is special
46 * @tc.type: FUNC
47 */
48 HWTEST_F(RdbUtilsTest, RdbStore_SqliteUtils_001, TestSize.Level1)
49 {
50 EXPECT_EQ(true, SqliteUtils::IsSpecial(5));
51 EXPECT_EQ(true, SqliteUtils::IsSpecial(6));
52 EXPECT_EQ(true, SqliteUtils::IsSpecial(7));
53 }
54
55 /**
56 * @tc.name: RdbStore_SqliteUtils_004
57 * @tc.desc: Abnormal testCase of string_utils for SurroundWithQuote, if value is ""
58 * @tc.type: FUNC
59 */
60 HWTEST_F(RdbUtilsTest, RdbStore_SqliteUtils_004, TestSize.Level2)
61 {
62 EXPECT_EQ("", StringUtils::SurroundWithQuote("", "\""));
63 }
64
65 /**
66 * @tc.name: RdbStore_SqliteUtils_005
67 * @tc.desc: Normal testCase of string_utils for SurroundWithQuote
68 * @tc.type: FUNC
69 */
70 HWTEST_F(RdbUtilsTest, RdbStore_SqliteUtils_005, TestSize.Level1)
71 {
72 EXPECT_EQ("\"AND\"", StringUtils::SurroundWithQuote("AND", "\""));
73 }
74
75 /**
76 * @tc.name: RdbStore_SqliteUtils_006
77 * @tc.desc: Normal testCase of string_utils, if fileName is ""
78 * @tc.type: FUNC
79 */
80 HWTEST_F(RdbUtilsTest, RdbStore_SqliteUtils_006, TestSize.Level1)
81 {
82 // fileName size is 0
83 EXPECT_EQ(0, SqliteUtils::GetFileSize(""));
84 }
85
86 /**
87 * @tc.name: RdbStore_SqliteUtils_007
88 * @tc.desc: AbNormal testCase of string_utils, if fileName is ""
89 * @tc.type: FUNC
90 */
91 HWTEST_F(RdbUtilsTest, RdbStore_SqliteUtils_007, TestSize.Level1)
92 {
93 EXPECT_EQ(0, SqliteUtils::GetFileSize("act.txt"));
94 }
95
96 /**
97 * @tc.name: GetSqlStatementType_001
98 * @tc.desc: Normal testCase of GetSqlStatementType
99 * @tc.type: FUNC
100 */
101 HWTEST_F(RdbUtilsTest, GetSqlStatementType_001, TestSize.Level1)
102 {
103 EXPECT_EQ(SqliteUtils::STATEMENT_SELECT, SqliteUtils::GetSqlStatementType("select * from text"));
104 EXPECT_EQ(SqliteUtils::STATEMENT_UPDATE, SqliteUtils::GetSqlStatementType("update test set id = ?"));
105 EXPECT_EQ(SqliteUtils::STATEMENT_UPDATE, SqliteUtils::GetSqlStatementType("delete from test where id = ?"));
106 EXPECT_EQ(SqliteUtils::STATEMENT_UPDATE, SqliteUtils::GetSqlStatementType("Replace INTO test"));
107 EXPECT_EQ(SqliteUtils::STATEMENT_ATTACH, SqliteUtils::GetSqlStatementType("attach database ? as ?"));
108 EXPECT_EQ(SqliteUtils::STATEMENT_DETACH, SqliteUtils::GetSqlStatementType("detach database ?"));
109 EXPECT_EQ(SqliteUtils::STATEMENT_BEGIN, SqliteUtils::GetSqlStatementType("BEGIN TRANSACTION"));
110 EXPECT_EQ(SqliteUtils::STATEMENT_BEGIN, SqliteUtils::GetSqlStatementType("SAVEPOINT 1"));
111 EXPECT_EQ(SqliteUtils::STATEMENT_COMMIT, SqliteUtils::GetSqlStatementType("END TRANSACTION"));
112 EXPECT_EQ(SqliteUtils::STATEMENT_COMMIT, SqliteUtils::GetSqlStatementType("COMMIT"));
113 EXPECT_EQ(SqliteUtils::STATEMENT_ROLLBACK, SqliteUtils::GetSqlStatementType("ROLLBACK"));
114 EXPECT_EQ(SqliteUtils::STATEMENT_PRAGMA, SqliteUtils::GetSqlStatementType("PRAGMA user_version"));
115 EXPECT_EQ(SqliteUtils::STATEMENT_DDL, SqliteUtils::GetSqlStatementType("CREATE TABLE"));
116 EXPECT_EQ(SqliteUtils::STATEMENT_DDL, SqliteUtils::GetSqlStatementType("CREATE TRIGGER"));
117 EXPECT_EQ(SqliteUtils::STATEMENT_DDL, SqliteUtils::GetSqlStatementType("DROP TABLE"));
118 EXPECT_EQ(SqliteUtils::STATEMENT_DDL, SqliteUtils::GetSqlStatementType("ALTER TABLE"));
119 EXPECT_EQ(SqliteUtils::STATEMENT_INSERT, SqliteUtils::GetSqlStatementType("INSERT INTO test"));
120 EXPECT_EQ(SqliteUtils::STATEMENT_OTHER, SqliteUtils::GetSqlStatementType("EXPLAIN SELECT * FROM test"));
121 EXPECT_EQ(SqliteUtils::STATEMENT_OTHER, SqliteUtils::GetSqlStatementType("SAZZZZZZZ"));
122 EXPECT_EQ(SqliteUtils::STATEMENT_OTHER, SqliteUtils::GetSqlStatementType("SAAAAAAAA"));
123 EXPECT_EQ(SqliteUtils::STATEMENT_OTHER, SqliteUtils::GetSqlStatementType("PROCESS"));
124 }
125
126 /**
127 * @tc.name: GetSqlStatementType_002
128 * @tc.desc: Normal testCase of GetSqlStatementType
129 * 1.Spaces before the sql
130 * 2.Enter before the sql
131 * 3.Non-alphanumeric and non-numeric before the sql
132 * @tc.type: FUNC
133 */
134 HWTEST_F(RdbUtilsTest, GetSqlStatementType_002, TestSize.Level1)
135 {
136 EXPECT_EQ(SqliteUtils::STATEMENT_SELECT, SqliteUtils::GetSqlStatementType(" select * from text"));
137 EXPECT_EQ(SqliteUtils::STATEMENT_UPDATE, SqliteUtils::GetSqlStatementType("\r\nupdate test set id = ?"));
138 EXPECT_EQ(SqliteUtils::STATEMENT_OTHER, SqliteUtils::GetSqlStatementType("~!@# attach database ? as ?"));
139 }