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() { }