1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/tests/mochitest/localstorage/test_brokenUTF-16.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,100 @@ 1.4 +<html xmlns="http://www.w3.org/1999/xhtml"> 1.5 +<head> 1.6 +<title>incomplete UTF-16 test</title> 1.7 +<meta http-equiv="Content-type" content="text/html; charset=UTF-8" /> 1.8 + 1.9 +<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.10 +<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 1.11 + 1.12 +<script type="text/javascript"> 1.13 + 1.14 +function startTest() 1.15 +{ 1.16 + // Check this works for a diacritics 1.17 + var k = "valid UTF-16 key"; 1.18 + var v = "ěščřžýáíéúůĚŠČŘŽÝÁÍÉÚŮ"; 1.19 + 1.20 + localStorage.setItem(k, v); 1.21 + is(localStorage.getItem(k), v, "UTF-16 value results from getItem"); 1.22 + 1.23 + localStorage.setItem(v, "a value"); 1.24 + is(localStorage.getItem(v), "a value", "value result using UTF-16 key from getItem"); 1.25 + 1.26 + localStorage.clear(); 1.27 + 1.28 + localStorage[k] = v; 1.29 + is(localStorage[k], v, "UTF-16 value results from []"); 1.30 + 1.31 + localStorage[v] = "a value"; 1.32 + is(localStorage[v], "a value", "value result using UTF-16 key from []"); 1.33 + 1.34 + localStorage.clear(); 1.35 + 1.36 + localStorage.aKey = v; 1.37 + is(localStorage.aKey, v, "UTF-16 value results from a dynamic property"); 1.38 + 1.39 + localStorage.clear(); 1.40 + 1.41 + // Broken UTF-16 1.42 + k = "broken UTF-16 key"; 1.43 + v = "\uD800"; // broken UTF-16 1.44 + 1.45 + localStorage.setItem(k, v); 1.46 + is(localStorage.getItem(k), v, "broken value results from getItem"); 1.47 + 1.48 + localStorage.setItem(v, "a value"); 1.49 + is(localStorage.getItem(v), "a value", "value result using broken key from getItem"); 1.50 + 1.51 + localStorage.clear(); 1.52 + 1.53 + localStorage[k] = v; 1.54 + is(localStorage[k], v, "broken value results from []"); 1.55 + 1.56 + localStorage[v] = "a value"; 1.57 + is(localStorage[v], "a value", "value result using broken key from []"); 1.58 + 1.59 + localStorage.clear(); 1.60 + 1.61 + localStorage.aKey = v; 1.62 + is(localStorage.aKey, v, "broken value results from a dynamic property"); 1.63 + 1.64 + localStorage.clear(); 1.65 + 1.66 + // Another variant 1.67 + v = "FcK" 1.68 + + String.fromCharCode(0x8a) 1.69 + + ".jp"; 1.70 + 1.71 + localStorage.setItem(k, v); 1.72 + is(localStorage.getItem(k), v); 1.73 + 1.74 + localStorage.setItem(v, "a value"); 1.75 + is(localStorage.getItem(v), "a value"); 1.76 + 1.77 + localStorage.clear(); 1.78 + 1.79 + // And yet another variant 1.80 + v = "something" 1.81 + + String.fromCharCode(355, 277, 349, 357, 533, 537, 101, 345); 1.82 + 1.83 + localStorage.setItem(k, v); 1.84 + is(localStorage.getItem(k), v); 1.85 + 1.86 + localStorage.setItem(v, "a value"); 1.87 + is(localStorage.getItem(v), "a value"); 1.88 + 1.89 + localStorage.clear(); 1.90 + 1.91 + SimpleTest.finish(); 1.92 +} 1.93 + 1.94 +SimpleTest.waitForExplicitFinish(); 1.95 + 1.96 +</script> 1.97 + 1.98 +</head> 1.99 + 1.100 +<body onload="startTest();"> 1.101 + 1.102 +</body> 1.103 +</html>