]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/ntp/tests/libntp/caljulian.c
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / ntp / tests / libntp / caljulian.c
1 #include "config.h"
2
3 #include "ntp_calendar.h"
4 #include "ntp_stdlib.h"
5 #include "unity.h"
6
7 #include "test-libntp.h"
8
9
10 #include <string.h>
11 //#include <stdlib.h>
12
13 //added struct to calendar!
14
15 char * CalendarToString(const struct calendar cal) {
16         char * ss = malloc (sizeof (char) * 100);
17         
18         char buffer[100] ="";
19         sprintf(buffer, "%u", cal.year);
20         strcat(ss,buffer);
21         strcat(ss,"-");
22         sprintf(buffer, "%u", (u_int)cal.month);
23         strcat(ss,buffer);
24         strcat(ss,"-");
25         sprintf(buffer, "%u", (u_int)cal.monthday);
26         strcat(ss,buffer);
27         strcat(ss," (");
28         sprintf(buffer, "%u", (u_int) cal.yearday);
29         strcat(ss,buffer);
30         strcat(ss,") ");
31         sprintf(buffer, "%u", (u_int)cal.hour);
32         strcat(ss,buffer);
33         strcat(ss,":");
34         sprintf(buffer, "%u", (u_int)cal.minute);
35         strcat(ss,buffer);
36         strcat(ss,":");
37         sprintf(buffer, "%u", (u_int)cal.second);
38         strcat(ss,buffer);
39         //ss << cal.year << "-" << (u_int)cal.month << "-" << (u_int)cal.monthday << " (" << cal.yearday << ") " << (u_int)cal.hour << ":" << (u_int)cal.minute << ":" << (u_int)cal.second;
40         return ss;
41 }
42
43 //tehnically boolean
44 int IsEqual(const struct calendar expected, const struct calendar actual) {
45         if (expected.year == actual.year &&
46                 (expected.yearday == actual.yearday ||
47                  (expected.month == actual.month &&
48                   expected.monthday == actual.monthday)) &&
49                 expected.hour == actual.hour &&
50                 expected.minute == actual.minute &&
51                 expected.second == actual.second) {
52                 return TRUE;
53         } else {
54                 printf("expected: %s but was %s", CalendarToString(expected) ,CalendarToString(actual));
55                 return FALSE;
56                         
57         }
58 }
59
60
61 void setUp()
62 {
63
64     ntpcal_set_timefunc(timefunc);
65     settime(1970, 1, 1, 0, 0, 0);
66 }
67
68 void tearDown()
69 {
70     ntpcal_set_timefunc(NULL);
71 }
72
73
74 void test_RegularTime() {
75         u_long testDate = 3485080800UL; // 2010-06-09 14:00:00
76         struct calendar expected = {2010,160,6,9,14,0,0};
77
78         struct calendar actual;
79
80         caljulian(testDate, &actual);
81
82         TEST_ASSERT_TRUE(IsEqual(expected, actual));
83 }
84
85 void test_LeapYear() {
86         u_long input = 3549902400UL; // 2012-06-28 20:00:00Z
87         struct calendar expected = {2012, 179, 6, 28, 20, 0, 0};
88
89         struct calendar actual;
90
91         caljulian(input, &actual);
92
93         TEST_ASSERT_TRUE(IsEqual(expected, actual));
94 }
95
96 void test_uLongBoundary() {
97         u_long time = 4294967295UL; // 2036-02-07 6:28:15
98         struct calendar expected = {2036,0,2,7,6,28,15};
99
100         struct calendar actual;
101
102         caljulian(time, &actual);
103
104         TEST_ASSERT_TRUE(IsEqual(expected, actual));
105 }
106
107 void test_uLongWrapped() {
108         u_long time = 0;
109         struct calendar expected = {2036,0,2,7,6,28,16};
110
111         struct calendar actual;
112
113         caljulian(time, &actual);
114
115         TEST_ASSERT_TRUE(IsEqual(expected, actual));
116 }