File indexing completed on 2024-04-28 15:28:39
0001 //references to trim(), trimLeft() and trimRight() functions for testing Function's *.call() and *.apply() methods 0002 var trim = String.prototype.trim; 0003 var trimLeft = String.prototype.trimLeft; 0004 var trimRight = String.prototype.trimRight; 0005 0006 // length property 0007 shouldBe("trim.length", "0"); 0008 shouldBe("trimLeft.length", "0"); 0009 shouldBe("trimRight.length", "0"); 0010 0011 var testString = 'foo bar'; 0012 var trimString = ''; 0013 var leftTrimString = ''; 0014 var rightTrimString = ''; 0015 var wsString = ''; 0016 0017 var whitespace = [ 0018 {s : '\u0009', t : 'HORIZONTAL TAB'}, 0019 {s : '\u000A', t : 'LINE FEED OR NEW LINE'}, 0020 {s : '\u000B', t : 'VERTICAL TAB'}, 0021 {s : '\u000C', t : 'FORMFEED'}, 0022 {s : '\u000D', t : 'CARRIAGE RETURN'}, 0023 {s : '\u0020', t : 'SPACE'}, 0024 {s : '\u00A0', t : 'NO-BREAK SPACE'}, 0025 {s : '\u2000', t : 'EN QUAD'}, 0026 {s : '\u2001', t : 'EM QUAD'}, 0027 {s : '\u2002', t : 'EN SPACE'}, 0028 {s : '\u2003', t : 'EM SPACE'}, 0029 {s : '\u2004', t : 'THREE-PER-EM SPACE'}, 0030 {s : '\u2005', t : 'FOUR-PER-EM SPACE'}, 0031 {s : '\u2006', t : 'SIX-PER-EM SPACE'}, 0032 {s : '\u2007', t : 'FIGURE SPACE'}, 0033 {s : '\u2008', t : 'PUNCTUATION SPACE'}, 0034 {s : '\u2009', t : 'THIN SPACE'}, 0035 {s : '\u200A', t : 'HAIR SPACE'}, 0036 {s : '\u3000', t : 'IDEOGRAPHIC SPACE'}, 0037 {s : '\u2028', t : 'LINE SEPARATOR'}, 0038 {s : '\u2029', t : 'PARAGRAPH SEPARATOR'}, 0039 ]; 0040 0041 for (var i = 0; i < whitespace.length; i++) { 0042 shouldBe("whitespace["+i+"].s.trim()", "''"); 0043 shouldBe("whitespace["+i+"].s.trimLeft()", "''"); 0044 shouldBe("whitespace["+i+"].s.trimRight()", "''"); 0045 wsString += whitespace[i].s; 0046 } 0047 0048 trimString = wsString + testString + wsString; 0049 leftTrimString = testString + wsString; //trimmed from the left 0050 rightTrimString = wsString + testString; //trimmed from the right 0051 0052 shouldBe("wsString.trim()", "''"); 0053 shouldBe("wsString.trimLeft()", "''"); 0054 shouldBe("wsString.trimRight()", "''"); 0055 0056 shouldBe("trimString.trim()", "testString"); 0057 shouldBe("trimString.trimLeft()", "leftTrimString"); 0058 shouldBe("trimString.trimRight()", "rightTrimString"); 0059 0060 shouldBe("leftTrimString.trim()", "testString"); 0061 shouldBe("leftTrimString.trimLeft()", "leftTrimString"); 0062 shouldBe("leftTrimString.trimRight()", "testString"); 0063 0064 shouldBe("rightTrimString.trim()", "testString"); 0065 shouldBe("rightTrimString.trimLeft()", "testString"); 0066 shouldBe("rightTrimString.trimRight()", "rightTrimString"); 0067 0068 var testValues = ["0", "Infinity", "NaN", "true", "false", "({})", "({toString:function(){return 'wibble'}})", "['an','array']", "'\u200b'"]; 0069 for (var i = 0; i < testValues.length; i++) { 0070 shouldBe("trim.call("+testValues[i]+")", "'"+eval(testValues[i])+"'"); 0071 shouldBe("trimLeft.call("+testValues[i]+")", "'"+eval(testValues[i])+"'"); 0072 shouldBe("trimRight.call("+testValues[i]+")", "'"+eval(testValues[i])+"'"); 0073 } 0074 0075 function main() { }