bool TestExtDatetime::test_strftime() { int ts = f_mktime(0, 0, 0, 8, 5, 1998); f_setlocale(2, k_LC_TIME, "C"); VS(f_strftime("%A", ts), "Wednesday"); if (f_setlocale(2, k_LC_TIME, "fi_FI")) { VS(f_strftime(" in Finnish is %A,", ts), " in Finnish is keskiviikko,"); } else { SKIP("setlocale() failed"); } if (f_setlocale(2, k_LC_TIME, "fr_FR")) { VS(f_strftime(" in French %A and", ts), " in French mercredi and"); } else { SKIP("setlocale() failed"); } if (f_setlocale(2, k_LC_TIME, "de_DE")) { VS(f_strftime(" in German %A.", ts), " in German Mittwoch."); } else { SKIP("setlocale() failed"); } f_setlocale(2, k_LC_TIME, "C"); /* December 2002 / January 2003 ISOWk M Tu W Thu F Sa Su ----- ---------------------------- 51 16 17 18 19 20 21 22 52 23 24 25 26 27 28 29 1 30 31 1 2 3 4 5 2 6 7 8 9 10 11 12 3 13 14 15 16 17 18 19 */ VS(f_strftime("%V,%G,%Y", f_strtotime("12/28/2002")), "52,2002,2002"); VS(f_strftime("%V,%G,%Y", f_strtotime("12/30/2002")), "01,2003,2002"); VS(f_strftime("%V,%G,%Y", f_strtotime("1/3/2003")), "01,2003,2003"); VS(f_strftime("%V,%G,%Y", f_strtotime("1/10/2003")), "02,2003,2003"); /* December 2004 / January 2005 ISOWk M Tu W Thu F Sa Su ----- ---------------------------- 51 13 14 15 16 17 18 19 52 20 21 22 23 24 25 26 53 27 28 29 30 31 1 2 1 3 4 5 6 7 8 9 2 10 11 12 13 14 15 16 */ VS(f_strftime("%V,%G,%Y", f_strtotime("12/23/2004")), "52,2004,2004"); VS(f_strftime("%V,%G,%Y", f_strtotime("12/31/2004")), "53,2004,2004"); VS(f_strftime("%V,%G,%Y", f_strtotime("1/2/2005")), "53,2004,2005"); VS(f_strftime("%V,%G,%Y", f_strtotime("1/3/2005")), "01,2005,2005"); return Count(true); }
bool TestExtVariable::test_var_export() { { Variant v = CREATE_MAP3("a","apple","b",2,"c",CREATE_VECTOR3(1,"y",3)); VS(f_var_export(v, true), "array (\n" " 'a' => 'apple',\n" " 'b' => 2,\n" " 'c' => \n" " array (\n" " 0 => 1,\n" " 1 => 'y',\n" " 2 => 3,\n" " ),\n" ")"); } { String current_locale = f_setlocale(2, k_LC_ALL, "0"); if (f_setlocale(2, k_LC_ALL, CREATE_VECTOR5("de","de_DE","de_DE.ISO8859-1","de_DE.ISO_8859-1","de_DE.UTF-8"))) { Variant v = CREATE_MAP3("a", -1, "b", 10.5, "c", 5.6); VS(f_var_export(v, true), "array (\n" " 'a' => -1,\n" " 'b' => 10.5,\n" " 'c' => 5.6,\n" ")"); f_setlocale(2, k_LC_ALL, current_locale); } else { SKIP("setlocale() failed"); } } { const char cs[] = "'\0\\"; const char cr[] = "'\\'' . \"\\0\" . '\\\\'"; String s(cs, sizeof(cs) - 1, CopyString); String r(cr, sizeof(cr) - 1, CopyString); VS(f_var_export(s, true), cr); } { Variant v = CREATE_MAP3(String("\0", 1, CopyString), "null", "", "empty", "0", "nul"); VS(f_var_export(v, true), "array (\n" " '' . \"\\0\" . '' => 'null',\n" " '' => 'empty',\n" " 0 => 'nul',\n" ")"); } return Count(true); }
bool TestExtDatetime::test_gmstrftime() { f_setlocale(2, k_LC_TIME, "en_US.utf8"); int d = f_mktime(20, 0, 0, 12, 31, 98); VS(f_strftime("%b %d %Y %H:%M:%S", d), "Dec 31 1998 20:00:00"); VS(f_gmstrftime("%b %d %Y %H:%M:%S", d), "Jan 01 1999 04:00:00"); int t = f_mktime(0,0,0, 6, 27, 2006); VS(f_strftime("%a %A %b %B %c %C %d %D %e %g %G %h %H %I %j %m %M %n %p " "%r %R %S %t %T %u %U %V %W %w %x %X %y %Y %Z %z %%", t), "Tue Tuesday Jun June Tue 27 Jun 2006 12:00:00 AM PDT 20 27 " "06/27/06 27 06 2006 Jun 00 12 178 06 00 \n AM 12:00:00 AM " "00:00 00 \t 00:00:00 2 26 26 26 2 06/27/2006 12:00:00 AM " "06 2006 PDT -0700 %"); return Count(true); }
bool TestExtString::test_setlocale() { VERIFY(!f_setlocale(0, k_LC_ALL, 0).toString().empty()); return Count(true); }