1 /*
2 * Copyright (c) 2025 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 #include "printer_preferences.h"
18 #include "print_json_util.h"
19
20 using namespace testing::ext;
21
22 namespace OHOS {
23 namespace Print {
24 class PrinterPreferencesTest : public testing::Test {
25 public:
26 static void SetUpTestCase(void);
27 static void TearDownTestCase(void);
28 void SetUp();
29 void TearDown();
30 };
31
SetUpTestCase(void)32 void PrinterPreferencesTest::SetUpTestCase(void) {}
33
TearDownTestCase(void)34 void PrinterPreferencesTest::TearDownTestCase(void) {}
35
SetUp(void)36 void PrinterPreferencesTest::SetUp(void) {}
37
TearDown(void)38 void PrinterPreferencesTest::TearDown(void) {}
39
40 HWTEST_F(PrinterPreferencesTest, PrinterPreferencesTest_0001_NeedRename, TestSize.Level2)
41 {
42 OHOS::Print::PrinterPreferences preferences;
43 preferences.SetDefaultDuplexMode(0);
44 EXPECT_EQ(true, preferences.HasDefaultDuplexMode());
45 EXPECT_EQ(0, preferences.GetDefaultDuplexMode());
46 }
47
48 HWTEST_F(PrinterPreferencesTest, PrinterPreferencesTest_0002_NeedRename, TestSize.Level2)
49 {
50 OHOS::Print::PrinterPreferences preferences;
51 preferences.SetDefaultPrintQuality(4);
52 EXPECT_EQ(true, preferences.HasDefaultPrintQuality());
53 EXPECT_EQ(4, preferences.GetDefaultPrintQuality());
54 }
55
56 HWTEST_F(PrinterPreferencesTest, PrinterPreferencesTest_0003_NeedRename, TestSize.Level2)
57 {
58 OHOS::Print::PrinterPreferences preferences;
59 preferences.SetDefaultMediaType("stationery");
60 EXPECT_EQ(true, preferences.HasDefaultMediaType());
61 EXPECT_EQ("stationery", preferences.GetDefaultMediaType());
62 }
63
64 HWTEST_F(PrinterPreferencesTest, PrinterPreferencesTest_0004_NeedRename, TestSize.Level2)
65 {
66 OHOS::Print::PrinterPreferences preferences;
67 preferences.SetDefaultPageSizeId("ISO_A4");
68 EXPECT_EQ(true, preferences.HasDefaultPageSizeId());
69 EXPECT_EQ("ISO_A4", preferences.GetDefaultPageSizeId());
70 }
71
72 HWTEST_F(PrinterPreferencesTest, PrinterPreferencesTest_0005_NeedRename, TestSize.Level2)
73 {
74 OHOS::Print::PrinterPreferences preferences;
75 preferences.SetDefaultOrientation(0);
76 EXPECT_EQ(true, preferences.HasDefaultOrientation());
77 EXPECT_EQ(0, preferences.GetDefaultOrientation());
78 }
79
80 HWTEST_F(PrinterPreferencesTest, PrinterPreferencesTest_0006_NeedRename, TestSize.Level2)
81 {
82 OHOS::Print::PrinterPreferences preferences;
83 preferences.SetBorderless(true);
84 EXPECT_EQ(true, preferences.HasBorderless());
85 EXPECT_EQ(true, preferences.GetBorderless());
86 }
87
88 HWTEST_F(PrinterPreferencesTest, PrinterPreferencesTest_0007_NeedRename, TestSize.Level2)
89 {
90 OHOS::Print::PrinterPreferences preferences;
91 preferences.SetOption("test");
92 EXPECT_EQ(true, preferences.HasOption());
93 EXPECT_EQ("test", preferences.GetOption());
94 }
95
96 HWTEST_F(PrinterPreferencesTest, Marshalling_NoValueSet_SuccessReturnTrue, TestSize.Level2)
97 {
98 OHOS::Print::PrinterPreferences preferences;
99 preferences.Dump();
100 Parcel parcel;
101 EXPECT_EQ(true, preferences.Marshalling(parcel));
102 }
103
104 HWTEST_F(PrinterPreferencesTest, Marshalling_SetValue_SuccessReturnTrue, TestSize.Level2)
105 {
106 OHOS::Print::PrinterPreferences preferences;
107 preferences.SetDefaultDuplexMode(0);
108 preferences.SetDefaultPrintQuality(4);
109 preferences.SetDefaultMediaType("stationery");
110 preferences.SetDefaultPageSizeId("ISO_A4");
111 preferences.SetDefaultOrientation(0);
112 preferences.SetBorderless(true);
113 preferences.SetDefaultColorMode(0);
114 preferences.SetDefaultCollate(true);
115 preferences.SetDefaultReverse(true);
116 preferences.SetOption("test");
117 preferences.Dump();
118 Parcel parcel;
119 EXPECT_EQ(true, preferences.Marshalling(parcel));
120 }
121
122 HWTEST_F(PrinterPreferencesTest, Unmarshalling_SetValue_NotNull, TestSize.Level2)
123 {
124 OHOS::Print::PrinterPreferences preferences;
125 preferences.SetDefaultDuplexMode(0);
126 preferences.SetDefaultPrintQuality(4);
127 preferences.SetDefaultMediaType("stationery");
128 preferences.SetDefaultPageSizeId("ISO_A4");
129 preferences.SetDefaultOrientation(0);
130 preferences.SetBorderless(true);
131 preferences.SetDefaultColorMode(0);
132 preferences.SetDefaultCollate(true);
133 preferences.SetDefaultReverse(true);
134 preferences.SetOption("test");
135 Parcel parcel;
136 preferences.Marshalling(parcel);
137 EXPECT_NE(nullptr, OHOS::Print::PrinterPreferences::Unmarshalling(parcel));
138 }
139
140 HWTEST_F(PrinterPreferencesTest, Unmarshalling_NoValueSet_NotNull, TestSize.Level2)
141 {
142 OHOS::Print::PrinterPreferences preferences;
143 Parcel parcel;
144 preferences.Marshalling(parcel);
145 EXPECT_NE(nullptr, OHOS::Print::PrinterPreferences::Unmarshalling(parcel));
146 }
147
148 HWTEST_F(PrinterPreferencesTest, ConvertToJson_NoValueSet_IsMemberReturnFalse, TestSize.Level2)
149 {
150 OHOS::Print::PrinterPreferences preferences;
151 Json::Value preferencesJson = preferences.ConvertToJson();
152 EXPECT_EQ(false, Print::PrintJsonUtil::IsMember(preferencesJson, "options"));
153 }
154
155 HWTEST_F(PrinterPreferencesTest, ConvertToJson_SetValue_IsMemberReturnTrue, TestSize.Level2)
156 {
157 OHOS::Print::PrinterPreferences preferences;
158 preferences.SetDefaultDuplexMode(0);
159 preferences.SetDefaultPrintQuality(0);
160 preferences.SetDefaultMediaType("plain");
161 preferences.SetDefaultPageSizeId("ISO_A4");
162 preferences.SetDefaultOrientation(0);
163 preferences.SetBorderless(false);
164 preferences.SetDefaultColorMode(0);
165 preferences.SetDefaultCollate(true);
166 preferences.SetDefaultReverse(true);
167 Json::Value opsJson;
168 opsJson["testKey"] = "testValue";
169 preferences.SetOption(PrintJsonUtil::WriteString(opsJson));
170 Json::Value preferencesJson = preferences.ConvertToJson();
171 EXPECT_EQ(true, Print::PrintJsonUtil::IsMember(preferencesJson, "defaultPageSizeId"));
172 }
173
174 HWTEST_F(PrinterPreferencesTest, ConvertToJson_WrongOptionFormat_isNullReturnTrue, TestSize.Level2)
175 {
176 OHOS::Print::PrinterPreferences preferences;
177 preferences.SetOption("test");
178 Json::Value preferencesJson = preferences.ConvertToJson();
179 EXPECT_EQ(true, preferencesJson["options"].isNull());
180 }
181
182 HWTEST_F(PrinterPreferencesTest,
183 ConvertJsonToPrinterPreferences_NoMemberInJson_HasDefaultDuplexModeReturnFalse, TestSize.Level2)
184 {
185 OHOS::Print::PrinterPreferences preferences;
186 Json::Value preferencesJson;
187 preferences.ConvertJsonToPrinterPreferences(preferencesJson);
188 EXPECT_EQ(preferences.HasDefaultDuplexMode(), false);
189 }
190
191 HWTEST_F(PrinterPreferencesTest,
192 ConvertJsonToPrinterPreferences_WrongValueType_HasDefaultDuplexModeReturnFalse, TestSize.Level2)
193 {
194 OHOS::Print::PrinterPreferences preferences;
195 Json::Value preferencesJson;
196 preferencesJson["defaultPageSizeId"] = 123;
197 preferencesJson["defaultOrientation"] = "123";
198 preferencesJson["defaultDuplexMode"] = "123";
199 preferencesJson["defaultPrintQuality"] = "123";
200 preferencesJson["defaultMediaType"] = 123;
201 preferencesJson["defaultColorMode"] = "123";
202 preferencesJson["borderless"] = "123";
203 preferencesJson["defaultCollate"] = "123";
204 preferencesJson["defaultReverse"] = "123";
205 preferencesJson["options"] = "123";
206 preferences.ConvertJsonToPrinterPreferences(preferencesJson);
207 EXPECT_EQ(preferences.HasDefaultDuplexMode(), false);
208 }
209
210 HWTEST_F(PrinterPreferencesTest,
211 ConvertJsonToPrinterPreferences_CorrectValue_HasDefaultDuplexModeReturnTrue, TestSize.Level2)
212 {
213 OHOS::Print::PrinterPreferences preferences;
214 Json::Value preferencesJson;
215 preferencesJson["defaultPageSizeId"] = "123";
216 preferencesJson["defaultOrientation"] = 123;
217 preferencesJson["defaultDuplexMode"] = 123;
218 preferencesJson["defaultPrintQuality"] = 123;
219 preferencesJson["defaultMediaType"] = "123";
220 preferencesJson["defaultColorMode"] = 123;
221 preferencesJson["borderless"] = true;
222 preferencesJson["defaultCollate"] = true;
223 preferencesJson["defaultReverse"] = true;
224 Json::Value optionJson;
225 optionJson["key"] = "value";
226 preferencesJson["options"] = optionJson;
227 preferences.ConvertJsonToPrinterPreferences(preferencesJson);
228 EXPECT_EQ(preferences.HasDefaultDuplexMode(), true);
229 }
230 } // namespace Print
231 } // namespace OHOS
232