1 /*
2  * Copyright (c) 2020-2021 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 "components/ui_digital_clock.h"
17 #include <climits>
18 #include <gtest/gtest.h>
19 
20 using namespace testing::ext;
21 
22 namespace OHOS {
23 namespace {
24     const uint8_t CURRENT_HOUR = 14;
25     const uint8_t CURRENT_MINUTE = 40;
26     const uint8_t CURRENT_SECOND = 30;
27     const uint8_t HALF_DAY_IN_HOUR = 12;
28 }
29 
30 class UIDigitalClockTest : public testing::Test {
31 public:
32     static void SetUpTestCase(void);
33     static void TearDownTestCase(void);
34     static UIDigitalClock* digitalClock_;
35 };
36 
37 UIDigitalClock* UIDigitalClockTest::digitalClock_ = nullptr;
38 
SetUpTestCase(void)39 void UIDigitalClockTest::SetUpTestCase(void)
40 {
41     if (digitalClock_ == nullptr) {
42         digitalClock_ = new UIDigitalClock();
43     }
44 }
45 
TearDownTestCase(void)46 void UIDigitalClockTest::TearDownTestCase(void)
47 {
48     if (digitalClock_ != nullptr) {
49         delete digitalClock_;
50         digitalClock_ = nullptr;
51     }
52 }
53 
54 /**
55  * @tc.name: UIDigitalClockGetViewType_001
56  * @tc.desc: Verify GetViewType function, equal.
57  * @tc.type: FUNC
58  * @tc.require: AR000EEMQ4
59  */
60 HWTEST_F(UIDigitalClockTest, UIDigitalClockGetViewType_001, TestSize.Level1)
61 {
62     if (digitalClock_ == nullptr) {
63         EXPECT_EQ(1, 0);
64         return;
65     }
66     EXPECT_EQ(digitalClock_->GetViewType(), UI_DIGITAL_CLOCK);
67 }
68 
69 /**
70  * @tc.name: UIDigitalClockSetFontId_001
71  * @tc.desc: Verify SetFontId function, equal.
72  * @tc.type: FUNC
73  * @tc.require: AR000EEMQ4
74  */
75 HWTEST_F(UIDigitalClockTest, UIDigitalClockSetFontId_001, TestSize.Level1)
76 {
77     if (digitalClock_ == nullptr) {
78         EXPECT_EQ(1, 0);
79         return;
80     }
81     const uint16_t fontId = 10;
82     digitalClock_->SetFontId(fontId);
83     EXPECT_EQ(digitalClock_->GetStyle(STYLE_TEXT_FONT), fontId);
84 }
85 
86 /**
87  * @tc.name: UIDigitalClockSetDisplayMode_001
88  * @tc.desc: Verify SetDisplayMode function, equal.
89  * @tc.type: FUNC
90  * @tc.require: AR000EEMQ4
91  */
92 HWTEST_F(UIDigitalClockTest, UIDigitalClockSetDisplayMode_001, TestSize.Level0)
93 {
94     if (digitalClock_ == nullptr) {
95         EXPECT_EQ(1, 0);
96         return;
97     }
98     digitalClock_->SetDisplayMode(UIDigitalClock::DisplayMode::DISPLAY_12_HOUR_NO_SECONDS);
99     EXPECT_EQ(digitalClock_->GetDisplayMode(), UIDigitalClock::DisplayMode::DISPLAY_12_HOUR_NO_SECONDS);
100     digitalClock_->SetDisplayMode(UIDigitalClock::DisplayMode::DISPLAY_24_HOUR_NO_SECONDS);
101     EXPECT_EQ(digitalClock_->GetDisplayMode(), UIDigitalClock::DisplayMode::DISPLAY_24_HOUR_NO_SECONDS);
102     digitalClock_->SetDisplayMode(UIDigitalClock::DisplayMode::DISPLAY_12_HOUR);
103     EXPECT_EQ(digitalClock_->GetDisplayMode(), UIDigitalClock::DisplayMode::DISPLAY_12_HOUR);
104     digitalClock_->SetDisplayMode(UIDigitalClock::DisplayMode::DISPLAY_24_HOUR);
105     EXPECT_EQ(digitalClock_->GetDisplayMode(), UIDigitalClock::DisplayMode::DISPLAY_24_HOUR);
106 }
107 
108 /**
109  * @tc.name: UIDigitalClockSetOpacity_001
110  * @tc.desc: Verify SetOpacity function, equal.
111  * @tc.type: FUNC
112  * @tc.require: AR000EEMQ4
113  */
114 HWTEST_F(UIDigitalClockTest, UIDigitalClockSetOpacity_001, TestSize.Level1)
115 {
116     if (digitalClock_ == nullptr) {
117         EXPECT_EQ(1, 0);
118         return;
119     }
120     digitalClock_->SetOpacity(OPA_OPAQUE);
121     EXPECT_EQ(digitalClock_->GetOpacity(), OPA_OPAQUE);
122 }
123 
124 /**
125  * @tc.name: UIDigitalClockSetTime24Hour_001
126  * @tc.desc: Verify SetTime24Hour function, equal.
127  * @tc.type: FUNC
128  * @tc.require: AR000EEMQ4
129  */
130 HWTEST_F(UIDigitalClockTest, UIDigitalClockSetTime24Hour_001, TestSize.Level1)
131 {
132     if (digitalClock_ == nullptr) {
133         EXPECT_EQ(1, 0);
134         return;
135     }
136     digitalClock_->SetTime24Hour(CURRENT_HOUR, CURRENT_MINUTE, CURRENT_SECOND);
137     EXPECT_EQ(digitalClock_->GetCurrentHour(), CURRENT_HOUR);
138     EXPECT_EQ(digitalClock_->GetCurrentMinute(), CURRENT_MINUTE);
139     EXPECT_EQ(digitalClock_->GetCurrentSecond(), CURRENT_SECOND);
140 }
141 
142 /**
143  * @tc.name: UIDigitalClockSetTime12Hour_001
144  * @tc.desc: Verify SetTime12Hour function, equal.
145  * @tc.type: FUNC
146  * @tc.require: AR000EEMQ4
147  */
148 HWTEST_F(UIDigitalClockTest, UIDigitalClockSetTime12Hour_001, TestSize.Level1)
149 {
150     if (digitalClock_ == nullptr) {
151         EXPECT_EQ(1, 0);
152         return;
153     }
154     digitalClock_->SetTime12Hour(CURRENT_HOUR, CURRENT_MINUTE, CURRENT_SECOND, true);
155     EXPECT_EQ(digitalClock_->GetCurrentHour(), CURRENT_HOUR - HALF_DAY_IN_HOUR);
156     EXPECT_EQ(digitalClock_->GetCurrentMinute(), CURRENT_MINUTE);
157     EXPECT_EQ(digitalClock_->GetCurrentSecond(), CURRENT_SECOND);
158 }
159 
160 /**
161  * @tc.name: UIDigitalClockSetTime12Hour_002
162  * @tc.desc: Verify SetTime12Hour function, equal.
163  * @tc.type: FUNC
164  * @tc.require: AR000EEMQ4
165  */
166 HWTEST_F(UIDigitalClockTest, UIDigitalClockSetTime12Hour_002, TestSize.Level1)
167 {
168     if (digitalClock_ == nullptr) {
169         EXPECT_EQ(1, 0);
170         return;
171     }
172     digitalClock_->SetTime12Hour(CURRENT_HOUR, CURRENT_MINUTE, CURRENT_SECOND, false);
173     EXPECT_EQ(digitalClock_->GetCurrentHour(), CURRENT_HOUR);
174     EXPECT_EQ(digitalClock_->GetCurrentMinute(), CURRENT_MINUTE);
175     EXPECT_EQ(digitalClock_->GetCurrentSecond(), CURRENT_SECOND);
176 }
177 
178 /**
179  * @tc.name: UIDigitalClockSetFont_001
180  * @tc.desc: Verify SetFont function, equal.
181  */
182 HWTEST_F(UIDigitalClockTest, UIDigitalClockSetFont_001, TestSize.Level1)
183 {
184     if (digitalClock_ == nullptr) {
185         EXPECT_EQ(1, 0);
186         return;
187     }
188     uint8_t size = 10;
189     const char* name = "xxx";
190     digitalClock_->SetFont(name, size);
191     digitalClock_->UpdateClock(false);
192     Text* text = new Text();
193     EXPECT_EQ(text->GetFontId(), 0);
194     delete text;
195     text = nullptr;
196 }
197 
198 /**
199  * @tc.name: UIDigitalClockSetColor_001
200  * @tc.desc: Verify SetColor function, equal.
201  */
202 HWTEST_F(UIDigitalClockTest, UIDigitalClockSetColor_001, TestSize.Level1)
203 {
204     if (digitalClock_ == nullptr) {
205         EXPECT_EQ(1, 0);
206         return;
207     }
208     ColorType color = Color::Red();
209     digitalClock_->SetColor(color);
210     EXPECT_EQ(digitalClock_->GetColor().full, color.full);
211 }
212 
213 /**
214  * @tc.name: UIDigitalClockDisplayLeadingZero_001
215  * @tc.desc: Verify DisplayLeadingZero function, equal.
216  */
217 HWTEST_F(UIDigitalClockTest, UIDigitalClockDisplayLeadingZero_001, TestSize.Level1)
218 {
219     if (digitalClock_ == nullptr) {
220         EXPECT_EQ(1, 0);
221         return;
222     }
223     bool flag = false;
224     digitalClock_->DisplayLeadingZero(flag);
225     EXPECT_EQ(digitalClock_->GetLeadingZero(), flag);
226 }
227 }
228