YugabyteDB (2.13.0.0-b42, bfc6a6643e7399ac8a0e81d06a3ee6d6571b33ab)

Coverage Report

Created: 2022-03-09 17:30

/Users/deen/code/yugabyte-db/src/yb/util/date_time-test.cc
Line
Count
Source
1
// Copyright (c) YugaByte, Inc.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
4
// in compliance with the License.  You may obtain a copy of the License at
5
//
6
// http://www.apache.org/licenses/LICENSE-2.0
7
//
8
// Unless required by applicable law or agreed to in writing, software distributed under the License
9
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
10
// or implied.  See the License for the specific language governing permissions and limitations
11
// under the License.
12
//
13
14
#include "yb/util/date_time.h"
15
16
#include "yb/util/result.h"
17
#include "yb/util/test_macros.h"
18
#include "yb/util/test_util.h"
19
20
namespace yb {
21
namespace util {
22
23
class DateTimeTest : public YBTest {
24
 protected:
25
};
26
27
1
TEST_F(DateTimeTest, TestIntervalFromString) {
28
    // Basic format comparison.
29
1
    auto baseline = ASSERT_RESULT(DateTime::IntervalFromString("3d 4h 5m 6s"));
30
31
1
    auto baseline_from_string1 =
32
1
        ASSERT_RESULT(DateTime::IntervalFromString("3 d 4 hrs 5 mins 6 secs"));
33
1
    EXPECT_EQ(baseline, baseline_from_string1);
34
35
1
    auto baseline_from_string2 =
36
1
        ASSERT_RESULT(DateTime::IntervalFromString("3 days 4 hours 5 minutes 6 seconds"));
37
1
    EXPECT_EQ(baseline, baseline_from_string2);
38
39
1
    auto baseline_from_string3 = ASSERT_RESULT(DateTime::IntervalFromString("3 4:05:06"));
40
1
    EXPECT_EQ(baseline, baseline_from_string3);
41
42
    // Basic Addition / Subtraction.
43
1
    auto four_hr_six_sec_from_str = ASSERT_RESULT(DateTime::IntervalFromString("4h 6s"));
44
1
    auto three_days_8_hr_5_min_12_sec = ASSERT_RESULT(DateTime::IntervalFromString("3d 8h 5m 12s"));
45
1
    EXPECT_EQ(baseline + four_hr_six_sec_from_str, three_days_8_hr_5_min_12_sec);
46
47
1
    auto four_hr_six_sec_from_str2 = ASSERT_RESULT(DateTime::IntervalFromString("4h6s"));
48
1
    auto three_days_5_min = ASSERT_RESULT(DateTime::IntervalFromString("3d5m"));
49
1
    EXPECT_EQ(baseline - four_hr_six_sec_from_str2, three_days_5_min);
50
51
    // Verify that basic unit conversions hold.
52
1
    auto seconds_7680 = ASSERT_RESULT(DateTime::IntervalFromString("7680 sec"));
53
1
    auto minutes_128 = ASSERT_RESULT(DateTime::IntervalFromString("128 min"));
54
1
    EXPECT_EQ(seconds_7680, minutes_128);
55
56
1
    auto minutes_7680 = ASSERT_RESULT(DateTime::IntervalFromString("7680 mins"));
57
1
    auto hours_128 = ASSERT_RESULT(DateTime::IntervalFromString("128 hrs"));
58
1
    EXPECT_EQ(minutes_7680, hours_128);
59
60
1
    auto hours_3072 = ASSERT_RESULT(DateTime::IntervalFromString("3072 hours"));
61
1
    auto days_128 = ASSERT_RESULT(DateTime::IntervalFromString("128 d"));
62
1
    EXPECT_EQ(hours_3072, days_128);
63
64
1
    auto seconds_7200 = ASSERT_RESULT(DateTime::IntervalFromString("7200 seconds"));
65
1
    auto two_hours = ASSERT_RESULT(DateTime::IntervalFromString("2 hours"));
66
1
    EXPECT_EQ(seconds_7200, two_hours);
67
68
1
    auto seconds_86400 = ASSERT_RESULT(DateTime::IntervalFromString("86400 seconds"));
69
1
    auto one_day = ASSERT_RESULT(DateTime::IntervalFromString("1 day"));
70
1
    EXPECT_EQ(seconds_86400, one_day);
71
72
    // Edge case formatting.
73
1
    auto empty_interval_from_string = ASSERT_RESULT(DateTime::IntervalFromString(""));
74
1
    auto zero_sec = ASSERT_RESULT(DateTime::IntervalFromString("0 sec"));
75
1
    EXPECT_EQ(empty_interval_from_string, zero_sec);
76
1
}
77
78
} // namespace util
79
} // namespace yb