xref: /freebsd/bin/date/tests/format_string_test.sh (revision 9f31240773ae369c8285b700840a35e6bfa9f762)
1*9f312407SEnji Cooper#
2*9f312407SEnji Cooper# Regression tests for date(1)
3*9f312407SEnji Cooper#
4*9f312407SEnji Cooper# Submitted by Edwin Groothuis <edwin@FreeBSD.org>
5*9f312407SEnji Cooper#
6*9f312407SEnji Cooper# $FreeBSD$
7*9f312407SEnji Cooper#
8*9f312407SEnji Cooper
9*9f312407SEnji Cooper#
10*9f312407SEnji Cooper# These two date/times have been chosen carefully -- they
11*9f312407SEnji Cooper# create both the single digit and double/multidigit version of
12*9f312407SEnji Cooper# the values.
13*9f312407SEnji Cooper#
14*9f312407SEnji Cooper# To create a new one, make sure you are using the UTC timezone!
15*9f312407SEnji Cooper#
16*9f312407SEnji Cooper
17*9f312407SEnji CooperTEST1=3222243		# 1970-02-07 07:04:03
18*9f312407SEnji CooperTEST2=1005600000	# 2001-11-12 21:11:12
19*9f312407SEnji Cooper
20*9f312407SEnji Coopercheck()
21*9f312407SEnji Cooper{
22*9f312407SEnji Cooper	local format_string exp_output_1 exp_output_2
23*9f312407SEnji Cooper
24*9f312407SEnji Cooper	format_string=${1}
25*9f312407SEnji Cooper	exp_output_1=${2}
26*9f312407SEnji Cooper	exp_output_2=${3}
27*9f312407SEnji Cooper
28*9f312407SEnji Cooper	atf_check -o "inline:${exp_output_1}\n" \
29*9f312407SEnji Cooper	    date -r ${TEST1} +%${format_string}
30*9f312407SEnji Cooper	atf_check -o "inline:${exp_output_2}\n" \
31*9f312407SEnji Cooper	    date -r ${TEST2} +%${format_string}
32*9f312407SEnji Cooper}
33*9f312407SEnji Cooper
34*9f312407SEnji Cooperformat_string_test()
35*9f312407SEnji Cooper{
36*9f312407SEnji Cooper	local desc exp_output_1 exp_output_2 flag
37*9f312407SEnji Cooper
38*9f312407SEnji Cooper	desc=${1}
39*9f312407SEnji Cooper	flag=${2}
40*9f312407SEnji Cooper	exp_output_1=${3}
41*9f312407SEnji Cooper	exp_output_2=${4}
42*9f312407SEnji Cooper
43*9f312407SEnji Cooper	atf_test_case ${desc}_test
44*9f312407SEnji Cooper	eval "
45*9f312407SEnji Cooper${desc}_test_body() {
46*9f312407SEnji Cooper	check ${flag} '${exp_output_1}' '${exp_output_2}';
47*9f312407SEnji Cooper}"
48*9f312407SEnji Cooper	atf_add_test_case ${desc}_test
49*9f312407SEnji Cooper}
50*9f312407SEnji Cooper
51*9f312407SEnji Cooperatf_init_test_cases()
52*9f312407SEnji Cooper{
53*9f312407SEnji Cooper	format_string_test A A Saturday Monday
54*9f312407SEnji Cooper	format_string_test a a Sat Mon
55*9f312407SEnji Cooper	format_string_test B B February November
56*9f312407SEnji Cooper	format_string_test b b Feb Nov
57*9f312407SEnji Cooper	format_string_test C C 19 20
58*9f312407SEnji Cooper	format_string_test c c "Sat Feb  7 07:04:03 1970" "Mon Nov 12 21:20:00 2001"
59*9f312407SEnji Cooper	format_string_test D D 02/07/70 11/12/01
60*9f312407SEnji Cooper	format_string_test d d 07 12
61*9f312407SEnji Cooper	format_string_test e e " 7" 12
62*9f312407SEnji Cooper	format_string_test F F "1970-02-07" "2001-11-12"
63*9f312407SEnji Cooper	format_string_test G G 1970 2001
64*9f312407SEnji Cooper	format_string_test g g 70 01
65*9f312407SEnji Cooper	format_string_test H H 07 21
66*9f312407SEnji Cooper	format_string_test h h Feb Nov
67*9f312407SEnji Cooper	format_string_test I I 07 09
68*9f312407SEnji Cooper	format_string_test j j 038 316
69*9f312407SEnji Cooper	format_string_test k k " 7" 21
70*9f312407SEnji Cooper	format_string_test l l " 7" " 9"
71*9f312407SEnji Cooper	format_string_test M M 04 20
72*9f312407SEnji Cooper	format_string_test m m 02 11
73*9f312407SEnji Cooper	format_string_test p p AM PM
74*9f312407SEnji Cooper	format_string_test R R 07:04 21:20
75*9f312407SEnji Cooper	format_string_test r r "07:04:03 AM" "09:20:00 PM"
76*9f312407SEnji Cooper	format_string_test S S 03 00
77*9f312407SEnji Cooper	format_string_test s s ${TEST1} ${TEST2}
78*9f312407SEnji Cooper	format_string_test U U 05 45
79*9f312407SEnji Cooper	format_string_test u u 6 1
80*9f312407SEnji Cooper	format_string_test V V 06 46
81*9f312407SEnji Cooper	format_string_test v v " 7-Feb-1970" "12-Nov-2001"
82*9f312407SEnji Cooper	format_string_test W W 05 46
83*9f312407SEnji Cooper	format_string_test w w 6 1
84*9f312407SEnji Cooper	format_string_test X X "07:04:03" "21:20:00"
85*9f312407SEnji Cooper	format_string_test x x "02/07/70" "11/12/01"
86*9f312407SEnji Cooper	format_string_test Y Y 1970 2001
87*9f312407SEnji Cooper	format_string_test y y 70 01
88*9f312407SEnji Cooper	format_string_test Z Z UTC UTC
89*9f312407SEnji Cooper	format_string_test z z +0000 +0000
90*9f312407SEnji Cooper	format_string_test percent % % %
91*9f312407SEnji Cooper	format_string_test plus + "Sat Feb  7 07:04:03 UTC 1970" "Mon Nov 12 21:20:00 UTC 2001"
92*9f312407SEnji Cooper}
93