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 #include "components/ui_abstract_clock.h"
16
17 #include <climits>
18 #include <gtest/gtest.h>
19
20 using namespace testing::ext;
21
22 namespace OHOS {
23 namespace {
24 uint8_t CURRENT_HOUR = 14;
25 uint8_t CURRENT_MINUTE = 40;
26 uint8_t CURRENT_SECOND = 30;
27 const uint8_t INIT_HOUR = 24;
28 const uint8_t INIT_MINUTE = 60;
29 const uint8_t INIT_SECOND = 60;
30 const bool CLOCK_INT = 1;
31 }
32
33 class UIAbstractClockUnitTest : public testing::Test {
34 public:
35 static void SetUpTestCase();
36 static void TearDownTestCase();
37 static UIAbstractClock* clock_;
38 };
39
40 UIAbstractClock* UIAbstractClockUnitTest::clock_ = nullptr;
41
SetUpTestCase()42 void UIAbstractClockUnitTest::SetUpTestCase()
43 {
44 if (clock_ == nullptr) {
45 clock_ = new UIAbstractClock();
46 }
47 }
48
TearDownTestCase()49 void UIAbstractClockUnitTest::TearDownTestCase()
50 {
51 if (clock_ != nullptr) {
52 delete clock_;
53 clock_ = nullptr;
54 }
55 }
56
57 /**
58 * @tc.name: UIAbstractClockIncOneSecond_001
59 * @tc.desc: Verify IncOneSecond function.
60 */
61 HWTEST_F(UIAbstractClockUnitTest, UIAbstractClockIncOneSecond_001, TestSize.Level1)
62 {
63 if (clock_ == nullptr) {
64 EXPECT_EQ(1, 0);
65 return;
66 }
67 clock_->SetTime24Hour(CURRENT_HOUR, CURRENT_MINUTE, CURRENT_SECOND);
68 clock_->IncOneSecond();
69 CURRENT_SECOND++;
70 CURRENT_MINUTE += CURRENT_SECOND / INIT_SECOND;
71 CURRENT_SECOND = CURRENT_SECOND % INIT_SECOND;
72
73 CURRENT_HOUR += CURRENT_MINUTE / INIT_MINUTE;
74 CURRENT_MINUTE = CURRENT_MINUTE % INIT_MINUTE;
75 CURRENT_HOUR = CURRENT_HOUR % INIT_HOUR;
76 EXPECT_EQ(clock_->GetCurrentHour(), CURRENT_HOUR);
77 EXPECT_EQ(clock_->GetCurrentMinute(), CURRENT_MINUTE);
78 EXPECT_EQ(clock_->GetCurrentSecond(), CURRENT_SECOND);
79 }
80
81 /**
82 * @tc.name: UIAbstractClockSetWorkMode_001
83 * @tc.desc: Verify SetWorkMode function.
84 */
85 HWTEST_F(UIAbstractClockUnitTest, UIAbstractClockSetWorkMode_001, TestSize.Level1)
86 {
87 if (clock_ == nullptr) {
88 EXPECT_EQ(1, 0);
89 return;
90 }
91 clock_->SetWorkMode(UIAbstractClock::ALWAYS_ON);
92 EXPECT_EQ(clock_->GetWorkMode(), UIAbstractClock::ALWAYS_ON);
93 }
94 }