Imported Upstream version 58.1
[platform/upstream/icu.git] / source / test / compat / tzone.pl
1 #!/usr/bin/perl
2 #
3 # Copyright (C) 2016 and later: Unicode, Inc. and others.
4 # License & terms of use: http://www.unicode.org/copyright.html
5 #   Copyright (C) 2007-2007, International Business Machines
6 #   Corporation and others.  All Rights Reserved.
7 #
8
9 if ($ARGV[0] eq '-h' || $ARGV[0] eq '--help') {
10         print "Usage: tzone [year month day hour minute]\n";
11         exit(0);
12 }
13
14 my $LIBRARY = '../../lib';
15
16 my @TZONE_RAW = `locate zoneinfo | grep '^/usr/share/zoneinfo/' | grep -v 'tab\$' | grep -v '/right/' | grep -v '/posix/' | grep -v '/posixrules\$' | grep -v '/Factory\$'`;
17 my @TZONE;
18 my $index = 0;
19 my $USECURRENT = 0;
20 my $year = 0;
21 my $month = 0;
22 my $day = 0;
23 my $hour = 0;
24 my $minute = 0;
25
26
27 if (scalar(@ARGV) == 5) {
28         ($year, $month, $day, $hour, $minute) = @ARGV;
29         print "The date we are using is:  $month-$day-$year $hour:$minute.\n";
30 } else {
31         print "We are using the current date.\n";
32         $USECURRENT = 1;
33 }
34
35 #filter out the time zones
36 foreach my $tzone (@TZONE_RAW) {
37         chomp($tzone);
38     if (-e $tzone) {
39         $TZONE[$index] = substr($tzone, 20);
40         $index++;
41     }
42 }
43
44 #go through each timezone and test 
45 $count = 0;
46 $ENV{'LD_LIBRARY_PATH'} = $LIBRARY;
47
48 print "The following time zones had wrong results.\n";
49
50 foreach my $tzone (@TZONE) {
51         #set system time zone
52         $ENV{'TZ'} = "$tzone";  
53         
54         my @result = `./tzdate $year $month $day $hour $minute $USECURRENT`;
55         
56         #if the result is wrong print the time zone information to a log file
57         if (scalar(@result) > 0) {
58                 print "\nTIME ZONE: $tzone\n";
59                 print "@result\n";
60                 $count++;
61         }
62 }
63
64 print "\nThe number of time zones with wrong results:  $count out of $index\n";
65
66 print("\n\nGood Bye!\n");
67 exit(0);