bool TestExtString::test_htmlspecialchars() { VS(f_htmlspecialchars("<a href='test'>Test</a>", k_ENT_QUOTES), "<a href='test'>Test</a>"); VS(f_bin2hex(f_htmlspecialchars("\xA0", k_ENT_COMPAT)), "a0"); VS(f_bin2hex(f_htmlspecialchars("\xc2\xA0", k_ENT_COMPAT, "")), "c2a0"); VS(f_bin2hex(f_htmlspecialchars("\xc2\xA0", k_ENT_COMPAT, "UTF-8")), "c2a0"); return Count(true); }
bool TestExtString::test_htmlspecialchars() { VS(f_htmlspecialchars("<a href='test'>Test</a>", k_ENT_QUOTES), "<a href='test'>Test</a>"); VS(f_bin2hex(f_htmlspecialchars("\xA0", k_ENT_COMPAT)), "a0"); VS(f_bin2hex(f_htmlspecialchars("\xc2\xA0", k_ENT_COMPAT, "")), "c2a0"); VS(f_bin2hex(f_htmlspecialchars("\xc2\xA0", k_ENT_COMPAT, "UTF-8")), "c2a0"); String zfoo = String("\0foo", 4, AttachLiteral); VS(f_htmlspecialchars(zfoo, k_ENT_COMPAT), zfoo); VS(f_fb_htmlspecialchars(zfoo, k_ENT_COMPAT), zfoo); VS(f_fb_htmlspecialchars("abcdef'\"{}@gz", k_ENT_QUOTES, "", Array::Create("z")), "abcdef'"{}@gz"); VS(f_fb_htmlspecialchars("abcdef'\"\u00a1\uabcd", k_ENT_FB_UTF8, "", Array::Create("d")), "abcdef'"¡ꯍ"); VS(f_fb_htmlspecialchars("abcdef'\"\u00a1\uabcd", k_ENT_FB_UTF8_ONLY, "", Array::Create("d")), "abcdef'\"¡ꯍ"); String input = "\u00a1\xc2\x41" "\u0561\xd5\xe0" "\u3862\xe3\x80\xf0" "\U000218a3\xf0\xa1\xa2\x41" "hello\x80world" "\xed\xa0\x80" "\xe0\x80\xbc" "\xc2"; bool s = RuntimeOption::Utf8izeReplace; RuntimeOption::Utf8izeReplace = false; Variant tmp = input; f_fb_utf8ize(ref(tmp)); String sanitized = tmp.toString(); VS(f_fb_htmlspecialchars(input, k_ENT_QUOTES, "", Array()), sanitized.data()); VS(f_fb_htmlspecialchars(input, k_ENT_FB_UTF8, "", Array()), "¡A" "ա" "㡢" "𡢣A" "helloworld"); VS(f_fb_htmlspecialchars(sanitized, k_ENT_QUOTES, "", Array()), sanitized.data()); VS(f_fb_htmlspecialchars(zfoo, k_ENT_COMPAT, "UTF-8"), "foo"); RuntimeOption::Utf8izeReplace = true; tmp = input; f_fb_utf8ize(ref(tmp)); sanitized = tmp.toString(); VS(f_fb_htmlspecialchars(input, k_ENT_QUOTES, "UtF-8", Array()), sanitized.data()); VS(f_fb_htmlspecialchars(input, k_ENT_FB_UTF8, "utf-8", Array()), "¡�A" "ա��" "㡢��" "𡢣�A" "hello�world" "�" "�" "�"); VS(f_fb_htmlspecialchars(sanitized, k_ENT_QUOTES, "", Array()), sanitized.data()); VS(f_fb_htmlspecialchars(zfoo, k_ENT_COMPAT, "UTF-8"), "\ufffdfoo"); RuntimeOption::Utf8izeReplace = s; return Count(true); }