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 }