• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "tlv_object.h"
17 
18 #include <gtest/gtest.h>
19 
20 #include "pasteboard_client.h"
21 #include "pasteboard_hilog.h"
22 namespace OHOS::MiscServices {
23 using namespace testing::ext;
24 using namespace OHOS::AAFwk;
25 class TLVObjectTest : public testing::Test {
26 public:
27     static void SetUpTestCase(void);
28     static void TearDownTestCase(void);
29     void SetUp();
30     void TearDown();
31 
32     static std::shared_ptr<PasteDataRecord> GenRecord(std::uint32_t index);
33 };
34 
SetUpTestCase(void)35 void TLVObjectTest::SetUpTestCase(void)
36 {
37 }
38 
TearDownTestCase(void)39 void TLVObjectTest::TearDownTestCase(void)
40 {
41 }
42 
SetUp(void)43 void TLVObjectTest::SetUp(void)
44 {
45 }
46 
TearDown(void)47 void TLVObjectTest::TearDown(void)
48 {
49 }
50 
GenRecord(std::uint32_t index)51 std::shared_ptr<PasteDataRecord> TLVObjectTest::GenRecord(std::uint32_t index)
52 {
53     std::string indexStr = "";
54     auto plainText = std::make_shared<std::string>("hello" + indexStr);
55     auto htmlText = std::make_shared<std::string>("<span>hello" + indexStr + "</span>");
56     auto uri = std::make_shared<OHOS::Uri>("dataability://hello" + indexStr + ".txt");
57     std::shared_ptr<Want> want = std::make_shared<Want>();
58     std::string key = "id";
59     int32_t id = 456;
60     want->SetParam(key, id);
61 
62     PasteDataRecord::Builder builder(MIMETYPE_TEXT_HTML);
63     auto record1 = builder.SetPlainText(plainText).SetHtmlText(htmlText).SetUri(uri).SetWant(want).Build();
64     return record1;
65 }
66 
67 /**
68 * @tc.name: TLVOjbectTest001
69 * @tc.desc: test tlv coder.
70 * @tc.type: FUNC
71 * @tc.require:AR000H5I1D
72 * @tc.author: baoyayong
73 */
74 HWTEST_F(TLVObjectTest, TLVOjbectTest001, TestSize.Level0)
75 {
76     PasteData pasteData1;
77     for (uint32_t i = 0; i < 10; ++i) {
78         pasteData1.AddRecord(TLVObjectTest::GenRecord(i));
79     }
80 
81     std::vector<uint8_t> buffer;
82     auto ret = pasteData1.Encode(buffer);
83     ASSERT_TRUE(ret);
84     ASSERT_EQ(buffer.size(), pasteData1.Count());
85 
86     PasteData pasteData2;
87     ret = pasteData2.Decode(buffer);
88     EXPECT_TRUE(ret);
89     EXPECT_EQ(pasteData2.GetRecordCount(), pasteData1.GetRecordCount());
90 
91     for (uint32_t i = 0; i < 10; ++i) {
92         auto record2 = pasteData2.GetRecordAt(i);
93         auto record1 = pasteData1.GetRecordAt(i);
94         EXPECT_EQ(*(record2->GetHtmlText()), *(record1->GetHtmlText()));
95         EXPECT_EQ(*(record2->GetPlainText()), *(record1->GetPlainText()));
96         EXPECT_TRUE(record2->GetUri()->ToString() == record1->GetUri()->ToString());
97         EXPECT_EQ(record2->GetWant()->OperationEquals(*(record1->GetWant())), true);
98     }
99 }
100 
101 /**
102 * @tc.name: TLVOjbectTest002
103 * @tc.desc: test tlv coder.
104 * @tc.type: FUNC
105 * @tc.require:AR000H5I1D
106 * @tc.author: baoyayong
107 */
108 HWTEST_F(TLVObjectTest, TLVOjbectTest002, TestSize.Level0)
109 {
110     std::shared_ptr<Want> want = std::make_shared<Want>();
111     std::string key = "id";
112     int32_t id = 456;
113     Want wantIn = want->SetParam(key, id);
114     auto pasteData1 = PasteboardClient::GetInstance()->CreateWantData(std::make_shared<Want>(wantIn));
115 
116     std::vector<uint8_t> buffer;
117     auto ret = pasteData1->Encode(buffer);
118     ASSERT_TRUE(ret);
119     ASSERT_EQ(buffer.size(), pasteData1->Count());
120 
121     PasteData pasteData2;
122     ret = pasteData2.Decode(buffer);
123     EXPECT_TRUE(ret);
124     EXPECT_EQ(pasteData2.GetRecordCount(), pasteData1->GetRecordCount());
125 
126     auto record2 = pasteData2.GetRecordAt(0);
127     auto record1 = pasteData1->GetRecordAt(0);
128     EXPECT_EQ(record2->GetWant()->OperationEquals(*(record1->GetWant())), true);
129 }
130 
131 /**
132 * @tc.name: TLVOjbectTest003
133 * @tc.desc: test tlv coder map.
134 * @tc.type: FUNC
135 * @tc.require:AR000H5I1D
136 * @tc.author: baoyayong
137 */
138 HWTEST_F(TLVObjectTest, TLVOjbectTest003, TestSize.Level0)
139 {
140     std::string plainText = "plain text";
141     auto pasteData1 = PasteboardClient::GetInstance()->CreatePlainTextData(plainText);
142     std::vector<uint8_t> arrayBuffer(46);
143     arrayBuffer = { 2, 7, 6, 8, 9 };
144     std::string mimeType1 = "image/jpg";
145     std::shared_ptr<MineCustomData> customData = std::make_shared<MineCustomData>();
146     customData->AddItemData(mimeType1, arrayBuffer);
147     PasteDataRecord::Builder builder(MIMETYPE_TEXT_PLAIN);
148     std::shared_ptr<PasteDataRecord> pasteDataRecord = builder.SetCustomData(customData).Build();
149     pasteData1->AddRecord(pasteDataRecord);
150 
151     std::vector<uint8_t> buffer;
152     auto ret = pasteData1->Encode(buffer);
153     ASSERT_TRUE(ret);
154     ASSERT_EQ(buffer.size(), pasteData1->Count());
155 
156     PasteData pasteData2;
157     ret = pasteData2.Decode(buffer);
158     EXPECT_TRUE(ret);
159     EXPECT_EQ(pasteData2.GetRecordCount(), pasteData1->GetRecordCount());
160     EXPECT_EQ(pasteData2.GetRecordCount(), pasteData1->GetRecordCount());
161 
162     auto record1 = pasteData1->GetRecordAt(0);
163     auto record2 = pasteData2.GetRecordAt(0);
164     ASSERT_TRUE(record2 != nullptr);
165     auto custom2 = record2->GetCustomData();
166     auto custom1 = record1->GetCustomData();
167     ASSERT_TRUE(custom1 != nullptr && custom2 != nullptr);
168     EXPECT_EQ(custom2->GetItemData().size(), custom1->GetItemData().size());
169 }
170 } // namespace OHOS::MiscServices