• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "RdbBigIntTest"
16 #include "raw_data_parser.h"
17 
18 #include <gtest/gtest.h>
19 
20 #include "value_object.h"
21 using namespace testing::ext;
22 using namespace OHOS::NativeRdb;
23 namespace Test {
24 class RawDataParserTest : public testing::Test {
25 public:
26     static void SetUpTestCase(void);
27     static void TearDownTestCase(void);
28     void SetUp();
29     void TearDown();
30 };
SetUpTestCase(void)31 void RawDataParserTest::SetUpTestCase(void)
32 {
33 }
34 
TearDownTestCase(void)35 void RawDataParserTest::TearDownTestCase(void)
36 {
37 }
38 
SetUp(void)39 void RawDataParserTest::SetUp(void)
40 {
41 }
42 
TearDown(void)43 void RawDataParserTest::TearDown(void)
44 {
45 }
46 
47 /**
48  * @tc.name: BigInt_Parser
49  * @tc.desc: test insert bigint to rdb store
50  * @tc.type: FUNC
51  */
52 HWTEST_F(RawDataParserTest, BigInt_Parser, TestSize.Level1)
53 {
54     std::vector<uint64_t> u64Val(2 + rand() % 100, 0);
55     for (int i = 0; i < u64Val.size(); ++i) {
56         uint64_t high = uint64_t(rand());
57         uint64_t low = uint64_t(rand());
58         u64Val[i] = (high << 32) | low;
59     }
60     BigInteger value1 = BigInteger(0, std::vector<uint64_t>(u64Val));
61     auto rawData = RawDataParser::PackageRawData(value1);
62     for (size_t i = 0; i < sizeof(uintptr_t); ++i) {
63         std::vector<uint8_t> noAlign(rawData.size() + i, 0);
64         noAlign.insert(noAlign.begin() + i, rawData.begin(), rawData.end());
65         BigInteger parsedValue1;
66         RawDataParser::ParserRawData(noAlign.data() + i, noAlign.size() - i, parsedValue1);
67         ASSERT_TRUE(value1 == parsedValue1);
68     }
69 }
70 /**
71  * @tc.name: Float32_Parser
72  * @tc.desc: test insert bigint to rdb store
73  * @tc.type: FUNC
74  */
75 HWTEST_F(RawDataParserTest, Float32_Parser, TestSize.Level1)
76 {
77     std::vector<float> floats(15, 9.65);
78     auto rawData = RawDataParser::PackageRawData(floats);
79     for (size_t i = 0; i < sizeof(uintptr_t); ++i) {
80         std::vector<uint8_t> noAlign(rawData.size() + i, 0);
81         noAlign.insert(noAlign.begin() + i, rawData.begin(), rawData.end());
82         std::vector<float> parsedFloats;
83         RawDataParser::ParserRawData(noAlign.data() + i, noAlign.size() - i, parsedFloats);
84         ASSERT_TRUE(floats.size() == parsedFloats.size());
85     }
86 }
87 /**
88  * @tc.name: Asset_Parser
89  * @tc.desc: test insert bigint to rdb store
90  * @tc.type: FUNC
91  */
92 HWTEST_F(RawDataParserTest, Asset_Parser, TestSize.Level1)
93 {
94     ValueObject::Asset asset;
95     asset.id = "100";
96     asset.name = "IMG_1690.png";
97     asset.uri = "file://data/args/header/IMG_1690.png";
98     asset.createTime = "2024-07-05 20:37.982158265 +8:00";
99     asset.modifyTime = "2024-07-05 20:37.982158265 +8:00";
100     asset.size = "4194304";
101     asset.hash = "2024-07-05 20:37.982158265 +8:00_4194304";
102     asset.path = "photos/header/IMG_1690.png";
103     auto rawData = RawDataParser::PackageRawData(asset);
104     for (size_t i = 0; i < sizeof(uintptr_t); ++i) {
105         std::vector<uint8_t> noAlign(rawData.size() + i, 0);
106         noAlign.insert(noAlign.begin() + i, rawData.begin(), rawData.end());
107         ValueObject::Asset parsedAsset;
108         RawDataParser::ParserRawData(noAlign.data() + i, noAlign.size() - i, parsedAsset);
109         ASSERT_TRUE(parsedAsset.id == asset.id);
110         ASSERT_TRUE(parsedAsset.name == asset.name);
111         ASSERT_TRUE(parsedAsset.uri == asset.uri);
112         ASSERT_TRUE(parsedAsset.createTime == asset.createTime);
113         ASSERT_TRUE(parsedAsset.modifyTime == asset.modifyTime);
114         ASSERT_TRUE(parsedAsset.size == asset.size);
115         ASSERT_TRUE(parsedAsset.hash == asset.hash);
116         ASSERT_TRUE(parsedAsset.path == asset.path);
117     }
118 }
119 /**
120  * @tc.name: Assets_Parser
121  * @tc.desc: test insert bigint to rdb store
122  * @tc.type: FUNC
123  */
124 HWTEST_F(RawDataParserTest, Assets_Parser, TestSize.Level1)
125 {
126     ValueObject::Assets assets(1);
127     assets[0].id = "100";
128     assets[0].name = "IMG_1690.png";
129     assets[0].uri = "file://data/args/header/IMG_1690.png";
130     assets[0].createTime = "2024-07-05 20:37.982158265 +8:00";
131     assets[0].modifyTime = "2024-07-05 20:37.982158265 +8:00";
132     assets[0].size = "4194304";
133     assets[0].hash = "2024-07-05 20:37.982158265 +8:00_4194304";
134     assets[0].path = "photos/header/IMG_1690.png";
135     auto rawData = RawDataParser::PackageRawData(assets);
136     for (size_t i = 0; i < sizeof(uintptr_t); ++i) {
137         std::vector<uint8_t> noAlign(rawData.size() + i, 0);
138         noAlign.insert(noAlign.begin() + i, rawData.begin(), rawData.end());
139         ValueObject::Assets parsedAssets;
140         RawDataParser::ParserRawData(noAlign.data() + i, noAlign.size() - i, parsedAssets);
141         ASSERT_TRUE(parsedAssets[0].id == assets[0].id);
142         ASSERT_TRUE(parsedAssets[0].name == assets[0].name);
143         ASSERT_TRUE(parsedAssets[0].uri == assets[0].uri);
144         ASSERT_TRUE(parsedAssets[0].createTime == assets[0].createTime);
145         ASSERT_TRUE(parsedAssets[0].modifyTime == assets[0].modifyTime);
146         ASSERT_TRUE(parsedAssets[0].size == assets[0].size);
147         ASSERT_TRUE(parsedAssets[0].hash == assets[0].hash);
148         ASSERT_TRUE(parsedAssets[0].path == assets[0].path);
149     }
150 }
151 } // namespace Test
152