• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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