1 /* 2 * Copyright (c) 2024 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 #define LOG_TAG "RdbQueryTest" 16 17 #include "gtest/gtest.h" 18 #include "log_print.h" 19 #include "rdb_query.h" 20 #include "utils/anonymous.h" 21 #include "value_proxy.h" 22 23 using namespace testing::ext; 24 using namespace OHOS::DistributedData; 25 using namespace OHOS::DistributedRdb; 26 27 namespace OHOS::Test { 28 namespace DistributedRDBTest { 29 class RdbQueryTest : public testing::Test { 30 public: SetUpTestCase(void)31 static void SetUpTestCase(void){}; TearDownTestCase(void)32 static void TearDownTestCase(void){}; SetUp()33 void SetUp(){}; TearDown()34 void TearDown(){}; 35 protected: 36 }; 37 38 /** 39 * @tc.name: RdbQueryTest001 40 * @tc.desc: RdbQuery function empty test. 41 * @tc.type: FUNC 42 * @tc.require: 43 * @tc.author: SQL 44 */ 45 HWTEST_F(RdbQueryTest, RdbQueryTest001, TestSize.Level1) 46 { 47 RdbQuery rdbQuery; 48 uint64_t tid = RdbQuery::TYPE_ID; 49 bool result = rdbQuery.IsEqual(tid); 50 EXPECT_TRUE(result); 51 std::vector<std::string> tables = rdbQuery.GetTables(); 52 EXPECT_TRUE(tables.empty()); 53 std::string devices = "devices1"; 54 std::string sql = "SELECT * FROM table"; 55 Values args; 56 rdbQuery.MakeRemoteQuery(devices, sql, std::move(args)); 57 EXPECT_TRUE(rdbQuery.IsRemoteQuery()); 58 EXPECT_EQ(rdbQuery.GetDevices().size(), 1); 59 EXPECT_EQ(rdbQuery.GetDevices()[0], devices); 60 DistributedRdb::PredicatesMemo predicates; 61 rdbQuery.MakeQuery(predicates); 62 rdbQuery.MakeCloudQuery(predicates); 63 EXPECT_EQ(predicates.tables_.size(), 0); 64 EXPECT_TRUE(predicates.tables_.empty()); 65 EXPECT_EQ(predicates.operations_.size(), 0); 66 } 67 68 /** 69 * @tc.name: RdbQueryTest002 70 * @tc.desc: RdbQuery function test. 71 * @tc.type: FUNC 72 * @tc.require: 73 * @tc.author: SQL 74 */ 75 HWTEST_F(RdbQueryTest, RdbQueryTest002, TestSize.Level1) 76 { 77 RdbQuery rdbQuery; 78 std::string devices = "devices1"; 79 std::string sql = "SELECT * FROM table"; 80 Values args; 81 rdbQuery.MakeRemoteQuery(devices, sql, std::move(args)); 82 DistributedRdb::PredicatesMemo predicates; 83 predicates.tables_.push_back("table1"); 84 predicates.tables_.push_back("table2"); 85 predicates.devices_.push_back("device1"); 86 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::EQUAL_TO, "name", "John Doe"); 87 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::GREATER_THAN, "age", "30"); 88 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::OPERATOR_MAX, "too", "99"); 89 rdbQuery.MakeQuery(predicates); 90 rdbQuery.MakeCloudQuery(predicates); 91 EXPECT_EQ(predicates.tables_.size(), 2); 92 EXPECT_TRUE(!predicates.tables_.empty()); 93 EXPECT_EQ(predicates.operations_.size(), 3); 94 } 95 96 /** 97 * @tc.name: RdbQueryTest003 98 * @tc.desc: RdbQuery function operation empty test. 99 * @tc.type: FUNC 100 * @tc.require: 101 * @tc.author: SQL 102 */ 103 HWTEST_F(RdbQueryTest, RdbQueryTest003, TestSize.Level1) 104 { 105 RdbQuery rdbQuery; 106 std::string devices = "devices1"; 107 std::string sql = "SELECT * FROM table"; 108 Values args; 109 rdbQuery.MakeRemoteQuery(devices, sql, std::move(args)); 110 DistributedRdb::PredicatesMemo predicates; 111 predicates.tables_.push_back("table1"); 112 predicates.tables_.push_back("table2"); 113 predicates.devices_.push_back("device1"); 114 std::vector<std::string> values; 115 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::EQUAL_TO, "test", values); 116 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::NOT_EQUAL_TO, "test", values); 117 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::ORDER_BY, "test", values); 118 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::CONTAIN, "test", values); 119 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::BEGIN_WITH, "test", values); 120 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::END_WITH, "test", values); 121 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::LIKE, "test", values); 122 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::GLOB, "test", values); 123 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::BETWEEN, "test", values); 124 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::NOT_BETWEEN, "test", values); 125 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::GREATER_THAN, "test", values); 126 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::GREATER_THAN_OR_EQUAL, "test", values); 127 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::LESS_THAN, "test", values); 128 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::LESS_THAN_OR_EQUAL, "test", values); 129 rdbQuery.MakeQuery(predicates); 130 EXPECT_TRUE(values.empty()); 131 EXPECT_TRUE(values.size() != 2); 132 } 133 134 /** 135 * @tc.name: RdbQueryTest004 136 * @tc.desc: RdbQuery function operation test. 137 * @tc.type: FUNC 138 * @tc.require: 139 * @tc.author: SQL 140 */ 141 HWTEST_F(RdbQueryTest, RdbQueryTest004, TestSize.Level1) 142 { 143 RdbQuery rdbQuery; 144 std::string devices = "devices1"; 145 std::string sql = "SELECT * FROM table"; 146 Values args; 147 rdbQuery.MakeRemoteQuery(devices, sql, std::move(args)); 148 DistributedRdb::PredicatesMemo predicates; 149 predicates.tables_.push_back("table1"); 150 predicates.tables_.push_back("table2"); 151 predicates.devices_.push_back("device1"); 152 std::vector<std::string> values = { "value1", "value2" }; 153 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::EQUAL_TO, "test", values); 154 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::NOT_EQUAL_TO, "test", values); 155 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::AND, "test", values); 156 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::OR, "test", values); 157 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::ORDER_BY, "test", values); 158 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::LIMIT, "test", values); 159 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::BEGIN_GROUP, "test", values); 160 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::END_GROUP, "test", values); 161 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::IN, "test", values); 162 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::NOT_IN, "test", values); 163 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::CONTAIN, "test", values); 164 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::BEGIN_WITH, "test", values); 165 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::END_WITH, "test", values); 166 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::IS_NULL, "test", values); 167 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::IS_NOT_NULL, "test", values); 168 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::LIKE, "test", values); 169 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::GLOB, "test", values); 170 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::BETWEEN, "test", values); 171 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::NOT_BETWEEN, "test", values); 172 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::GREATER_THAN, "test", values); 173 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::GREATER_THAN_OR_EQUAL, "test", values); 174 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::LESS_THAN, "test", values); 175 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::LESS_THAN_OR_EQUAL, "test", values); 176 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::DISTINCT, "test", values); 177 predicates.AddOperation(DistributedRdb::RdbPredicateOperator::INDEXED_BY, "test", values); 178 rdbQuery.MakeQuery(predicates); 179 EXPECT_TRUE(!values.empty()); 180 EXPECT_FALSE(values.size() != 2); 181 } 182 } // namespace DistributedRDBTest 183 } // namespace OHOS::Test