+
+ wxDateTime dt;
+
+#if 0
+ // special case which was known to fail
+ CPPUNIT_ASSERT( dt.ParseFormat("02/06/1856", "%x") );
+ CPPUNIT_ASSERT_EQUAL( 1856, dt.GetYear() );
+#endif
+
+ // also test %l separately
+ CPPUNIT_ASSERT( dt.ParseFormat("12:23:45.678", "%H:%M:%S.%l") );
+ CPPUNIT_ASSERT_EQUAL( 678, dt.GetMillisecond() );
+
+ // test special case of %l matching 0 milliseconds
+ CPPUNIT_ASSERT( dt.ParseFormat("12:23:45.000", "%H:%M:%S.%l") );
+ CPPUNIT_ASSERT_EQUAL( 0, dt.GetMillisecond() );
+
+ // test partially specified dates too
+ wxDateTime dtDef(26, wxDateTime::Sep, 2008);
+ CPPUNIT_ASSERT( dt.ParseFormat("17", "%d") );
+ CPPUNIT_ASSERT_EQUAL( 17, dt.GetDay() );
+
+ // test some degenerate cases
+ CPPUNIT_ASSERT( !dt.ParseFormat("", "%z") );
+ CPPUNIT_ASSERT( !dt.ParseFormat("", "%%") );
+
+ // test compilation of some calls which should compile (and not result in
+ // ambiguity because of char*<->wxCStrData<->wxString conversions)
+ wxString s("foo");
+ CPPUNIT_ASSERT( !dt.ParseFormat("foo") );
+ CPPUNIT_ASSERT( !dt.ParseFormat(wxT("foo")) );
+ CPPUNIT_ASSERT( !dt.ParseFormat(s) );
+ dt.ParseFormat(s.c_str()); // Simply test compilation of this one.
+
+ CPPUNIT_ASSERT( !dt.ParseFormat("foo", "%c") );
+ CPPUNIT_ASSERT( !dt.ParseFormat(wxT("foo"), "%c") );
+ CPPUNIT_ASSERT( !dt.ParseFormat(s, "%c") );
+ dt.ParseFormat(s.c_str(), "%c");
+
+ CPPUNIT_ASSERT( !dt.ParseFormat("foo", wxT("%c")) );
+ CPPUNIT_ASSERT( !dt.ParseFormat(wxT("foo"), wxT("%c")) );
+ CPPUNIT_ASSERT( !dt.ParseFormat(s, "%c") );
+ dt.ParseFormat(s.c_str(), wxT("%c"));
+
+ wxString spec("%c");
+ CPPUNIT_ASSERT( !dt.ParseFormat("foo", spec) );
+ CPPUNIT_ASSERT( !dt.ParseFormat(wxT("foo"), spec) );
+ CPPUNIT_ASSERT( !dt.ParseFormat(s, spec) );
+ dt.ParseFormat(s.c_str(), spec);