1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 /*
5  * test_date.c
6  *
7  * Test Date Type
8  *
9  */
10 
11 #include "testutil.h"
12 #include "testutil_nss.h"
13 
14 static void *plContext = NULL;
15 
16 static void
createDates(char * goodInput,char * diffInput,PKIX_PL_Date ** goodDate,PKIX_PL_Date ** equalDate,PKIX_PL_Date ** diffDate)17 createDates(char *goodInput, char *diffInput,
18             PKIX_PL_Date **goodDate,
19             PKIX_PL_Date **equalDate,
20             PKIX_PL_Date **diffDate)
21 {
22 
23     subTest("PKIX_PL_Date_Create <goodDate>");
24     *goodDate = createDate(goodInput, plContext);
25 
26     subTest("PKIX_PL_Date_Create <equalDate>");
27     *equalDate = createDate(goodInput, plContext);
28 
29     subTest("PKIX_PL_Date_Create <diffDate>");
30     *diffDate = createDate(diffInput, plContext);
31 }
32 
33 static void
testDestroy(void * goodObject,void * equalObject,void * diffObject)34 testDestroy(void *goodObject, void *equalObject, void *diffObject)
35 {
36     PKIX_TEST_STD_VARS();
37 
38     subTest("PKIX_PL_Date_Destroy");
39 
40     PKIX_TEST_DECREF_BC(goodObject);
41     PKIX_TEST_DECREF_BC(equalObject);
42     PKIX_TEST_DECREF_BC(diffObject);
43 
44 cleanup:
45 
46     PKIX_TEST_RETURN();
47 }
48 
49 static void
testDate(char * goodInput,char * diffInput)50 testDate(char *goodInput, char *diffInput)
51 {
52 
53     PKIX_PL_Date *goodDate = NULL;
54     PKIX_PL_Date *equalDate = NULL;
55     PKIX_PL_Date *diffDate = NULL;
56 
57     /*
58          * The ASCII rep of the date will vary by platform and locale
59          * This particular string was generated on a SPARC running Solaris 9
60          * in an English locale
61          */
62     /* char *expectedAscii = "Mon Mar 29 08:48:47 2004"; */
63     char *expectedAscii = "Mon Mar 29, 2004";
64 
65     PKIX_TEST_STD_VARS();
66 
67     createDates(goodInput, diffInput,
68                 &goodDate, &equalDate, &diffDate);
69 
70     PKIX_TEST_EQ_HASH_TOSTR_DUP(goodDate, equalDate, diffDate, expectedAscii, Date, PKIX_TRUE);
71 
72     testDestroy(goodDate, equalDate, diffDate);
73 
74     PKIX_TEST_RETURN();
75 }
76 
77 int
test_date(int argc,char * argv[])78 test_date(int argc, char *argv[])
79 {
80 
81     char *goodInput = NULL;
82     char *diffInput = NULL;
83     PKIX_UInt32 actualMinorVersion;
84     PKIX_UInt32 j = 0;
85 
86     PKIX_TEST_STD_VARS();
87 
88     startTests("Date");
89 
90     PKIX_TEST_EXPECT_NO_ERROR(
91         PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));
92 
93     goodInput = "040329134847Z";
94     diffInput = "050329135847Z";
95     testDate(goodInput, diffInput);
96 
97 cleanup:
98 
99     PKIX_Shutdown(plContext);
100 
101     PKIX_TEST_RETURN();
102 
103     endTests("Date");
104 
105     return (0);
106 }
107