Handle quotes in wxTranslateFromUnicodeFormat.
When parsing Unicode date formats text inside single quotes should not be escaped and instead treated as literal text. In addition two single quotes (either inside or outside quoted text) should be interpreted as a single quote. Fixes #16118.
This commit is contained in:
@@ -232,6 +232,7 @@ private:
|
||||
CPPUNIT_TEST( TestTimeArithmetics );
|
||||
CPPUNIT_TEST( TestDSTBug );
|
||||
CPPUNIT_TEST( TestDateOnly );
|
||||
CPPUNIT_TEST( TestTranslateFromUnicodeFormat );
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
void TestLeapYears();
|
||||
@@ -252,6 +253,7 @@ private:
|
||||
void TestTimeArithmetics();
|
||||
void TestDSTBug();
|
||||
void TestDateOnly();
|
||||
void TestTranslateFromUnicodeFormat();
|
||||
|
||||
DECLARE_NO_COPY_CLASS(DateTimeTestCase)
|
||||
};
|
||||
@@ -1447,4 +1449,37 @@ void DateTimeTestCase::TestDateOnly()
|
||||
CPPUNIT_ASSERT_EQUAL( wxDateTime::Today(), wxDateTime::Now().GetDateOnly() );
|
||||
}
|
||||
|
||||
// Forward declaration
|
||||
wxString wxTranslateFromUnicodeFormat(const wxString& fmt);
|
||||
|
||||
void DateTimeTestCase::TestTranslateFromUnicodeFormat()
|
||||
{
|
||||
// Test single quote handling...
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL("", wxTranslateFromUnicodeFormat("'"));
|
||||
CPPUNIT_ASSERT_EQUAL("%H", wxTranslateFromUnicodeFormat("H'"));
|
||||
CPPUNIT_ASSERT_EQUAL("H", wxTranslateFromUnicodeFormat("'H"));
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL("'", wxTranslateFromUnicodeFormat("''"));
|
||||
CPPUNIT_ASSERT_EQUAL("%H'", wxTranslateFromUnicodeFormat("H''"));
|
||||
CPPUNIT_ASSERT_EQUAL("H", wxTranslateFromUnicodeFormat("'H'"));
|
||||
CPPUNIT_ASSERT_EQUAL("'%H", wxTranslateFromUnicodeFormat("''H"));
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL("'", wxTranslateFromUnicodeFormat("'''"));
|
||||
CPPUNIT_ASSERT_EQUAL("%H'", wxTranslateFromUnicodeFormat("H'''"));
|
||||
CPPUNIT_ASSERT_EQUAL("H'", wxTranslateFromUnicodeFormat("'H''"));
|
||||
CPPUNIT_ASSERT_EQUAL("'%H", wxTranslateFromUnicodeFormat("''H'"));
|
||||
CPPUNIT_ASSERT_EQUAL("'H", wxTranslateFromUnicodeFormat("'''H"));
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL("''", wxTranslateFromUnicodeFormat("''''"));
|
||||
CPPUNIT_ASSERT_EQUAL("%H''", wxTranslateFromUnicodeFormat("H''''"));
|
||||
CPPUNIT_ASSERT_EQUAL("H'", wxTranslateFromUnicodeFormat("'H'''"));
|
||||
CPPUNIT_ASSERT_EQUAL("'%H'", wxTranslateFromUnicodeFormat("''H''"));
|
||||
CPPUNIT_ASSERT_EQUAL("'H", wxTranslateFromUnicodeFormat("'''H'"));
|
||||
CPPUNIT_ASSERT_EQUAL("''%H", wxTranslateFromUnicodeFormat("''''H"));
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL("'%H o'clock: It's about time'",
|
||||
wxTranslateFromUnicodeFormat("''H 'o''clock: It''s about time'''"));
|
||||
}
|
||||
|
||||
#endif // wxUSE_DATETIME
|
||||
|
Reference in New Issue
Block a user