Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/bin/date/tests/format_string_test.sh
39483 views
1
#
2
# Regression tests for date(1)
3
#
4
# Submitted by Edwin Groothuis <[email protected]>
5
#
6
#
7
8
#
9
# These two date/times have been chosen carefully -- they
10
# create both the single digit and double/multidigit version of
11
# the values.
12
#
13
# To create a new one, make sure you are using the UTC timezone!
14
#
15
16
TEST1=3222243 # 1970-02-07 07:04:03
17
TEST2=1005600000 # 2001-11-12 21:11:12
18
19
check()
20
{
21
local format_string exp_output_1 exp_output_2
22
23
format_string=${1}
24
exp_output_1=${2}
25
exp_output_2=${3}
26
27
atf_check -o "inline:${exp_output_1}\n" \
28
date -r ${TEST1} +%${format_string}
29
atf_check -o "inline:${exp_output_2}\n" \
30
date -r ${TEST2} +%${format_string}
31
}
32
33
atf_test_case flag_r_file_test
34
flag_r_file_test_body()
35
{
36
local file
37
38
file="./testfile"
39
touch "$file"
40
atf_check -o "inline:$(stat -f '%9Fm' "$file")\n" \
41
date -r "$file" +%s.%N
42
}
43
44
format_string_test()
45
{
46
local desc exp_output_1 exp_output_2 flag
47
48
desc=${1}
49
flag=${2}
50
exp_output_1=${3}
51
exp_output_2=${4}
52
53
atf_test_case ${desc}_test
54
eval "
55
${desc}_test_body() {
56
check ${flag} '${exp_output_1}' '${exp_output_2}';
57
}"
58
atf_add_test_case ${desc}_test
59
}
60
61
iso8601_check()
62
{
63
local arg flags exp_output_1 exp_output_2
64
65
arg="${1}"
66
flags="${2}"
67
exp_output_1="${3}"
68
exp_output_2="${4}"
69
70
atf_check -o "inline:${exp_output_1}\n" \
71
date $flags -r ${TEST1} "-I${arg}"
72
atf_check -o "inline:${exp_output_2}\n" \
73
date $flags -r ${TEST2} "-I${arg}"
74
}
75
76
iso8601_string_test()
77
{
78
local desc arg exp_output_1 exp_output_2 flags
79
80
desc="${1}"
81
arg="${2}"
82
flags="${3}"
83
exp_output_1="${4}"
84
exp_output_2="${5}"
85
86
atf_test_case iso8601_${desc}_test
87
eval "
88
iso8601_${desc}_test_body() {
89
iso8601_check '${arg}' '${flags}' '${exp_output_1}' '${exp_output_2}'
90
}"
91
atf_add_test_case iso8601_${desc}_test
92
93
if [ -z "$flags" ]; then
94
atf_test_case iso8601_${desc}_parity
95
eval "
96
iso8601_${desc}_parity_body() {
97
local exp1 exp2
98
99
atf_require_prog gdate
100
101
exp1=\"\$(gdate --date '@${TEST1}' '-I${arg}')\"
102
exp2=\"\$(gdate --date '@${TEST2}' '-I${arg}')\"
103
104
iso8601_check '${arg}' '' \"\${exp1}\" \"\${exp2}\"
105
}"
106
atf_add_test_case iso8601_${desc}_parity
107
fi
108
}
109
110
atf_init_test_cases()
111
{
112
atf_add_test_case flag_r_file_test
113
114
format_string_test A A Saturday Monday
115
format_string_test a a Sat Mon
116
format_string_test B B February November
117
format_string_test b b Feb Nov
118
format_string_test C C 19 20
119
format_string_test c c "Sat Feb 7 07:04:03 1970" "Mon Nov 12 21:20:00 2001"
120
format_string_test D D 02/07/70 11/12/01
121
format_string_test d d 07 12
122
format_string_test e e " 7" 12
123
format_string_test F F "1970-02-07" "2001-11-12"
124
format_string_test G G 1970 2001
125
format_string_test g g 70 01
126
format_string_test H H 07 21
127
format_string_test h h Feb Nov
128
format_string_test I I 07 09
129
format_string_test j j 038 316
130
format_string_test k k " 7" 21
131
format_string_test l l " 7" " 9"
132
format_string_test M M 04 20
133
format_string_test m m 02 11
134
format_string_test N N 000000000 000000000
135
format_string_test p p AM PM
136
format_string_test R R 07:04 21:20
137
format_string_test r r "07:04:03 AM" "09:20:00 PM"
138
format_string_test S S 03 00
139
format_string_test s s ${TEST1} ${TEST2}
140
format_string_test U U 05 45
141
format_string_test u u 6 1
142
format_string_test V V 06 46
143
format_string_test v v " 7-Feb-1970" "12-Nov-2001"
144
format_string_test W W 05 46
145
format_string_test w w 6 1
146
format_string_test X X "07:04:03" "21:20:00"
147
format_string_test x x "02/07/70" "11/12/01"
148
format_string_test Y Y 1970 2001
149
format_string_test y y 70 01
150
format_string_test Z Z UTC UTC
151
format_string_test z z +0000 +0000
152
format_string_test percent % % %
153
format_string_test plus + "Sat Feb 7 07:04:03 UTC 1970" "Mon Nov 12 21:20:00 UTC 2001"
154
155
iso8601_string_test default "" "" "1970-02-07" "2001-11-12"
156
iso8601_string_test date date "" "1970-02-07" "2001-11-12"
157
iso8601_string_test hours hours "" "1970-02-07T07+00:00" "2001-11-12T21+00:00"
158
iso8601_string_test minutes minutes "" "1970-02-07T07:04+00:00" "2001-11-12T21:20+00:00"
159
iso8601_string_test seconds seconds "" "1970-02-07T07:04:03+00:00" "2001-11-12T21:20:00+00:00"
160
iso8601_string_test ns ns "" "1970-02-07T07:04:03,000000000+00:00" "2001-11-12T21:20:00,000000000+00:00"
161
}
162
163