blob: f9f6c1805e76a65dadd0c878e68b115a2d2d5ad6 [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
//String.prototype.toLowerCase()
//TO DO : Need to add Unicode and Upper Ascii Characters test cases and also Test cases that would throw exception(NaN and undefined Objects)
var id=0;
function verify(get_actual,get_expected,testid,testdesc)
{
if(get_actual!=get_expected)
WScript.Echo(testid+":"+testdesc+"\t"+"failed"+"\n"+"got"+get_actual+"\t for\t"+get_expected)
}
//test 1
verify("\tMICROSOFT".toLowerCase(), "\tmicrosoft", id++, "\"Testing Escape character tab\"")
//test 2
verify("\nMICROSOFT".toLowerCase(), "\nmicrosoft", id++, "\"Testing Escape character new line\"")
//test3
verify("\rMICROSOFT".toLowerCase(), "\rmicrosoft", id++, "\"Testing Escape character return \"")
//test 4
verify("\'MICROSOFT\'".toLowerCase(), "\'microsoft\'", id++, "\"Testing Escape character single quote\"")
//test 5
verify("MICROO\bSOFT".toLowerCase(), "microo\bsoft", id++, "\"Testing Escape character backspace\"")
//test 6
verify("\"MICROSOFT\"".toLowerCase(), "\"microsoft\"", id++, "\"Testing Escape character double quote\"")
//test 7
verify("microsoft".toLowerCase(), "microsoft", id++, "\"Testing passing lower case characters\"")
//test 8
verify("ABCDEFGHIJKLMNOPQRSTUVWXYZ".toLowerCase(), "abcdefghijklmnopqrstuvwxyz", id++, "\"Testing passing uppercase case characters\"")
//test 9
verify("(!@#$%^&*<,()+;:>?/)".toLowerCase(), "(!@#$%^&*<,()+;:>?/)", id++, "\" Testing passing Special Characters \"")
//test 10
verify("REDMOND@MICROSOFT.COM".toLowerCase(), "redmond@microsoft.com", id++, "\"Testing mix of characters eg email id\"");
//test 11
verify("ONEMICROSOFTWAY,156THNE31STPL,WA98054".toLowerCase(), "onemicrosoftway,156thne31stpl,wa98054", id++, "\"Testing mix of characters eg address\"");
//test 12
verify("1-800-CALL-HSBC".toLowerCase(), "1-800-call-hsbc", id++, id++, "\"Testing mix of characters eg phone number\" ");
//test 13: Coercing Other Object types : Arrays
var arr=new Array(3);
arr[0]="JSCRIPT";
arr[1]=12345;
arr[2]="123@MiCrOSOFT.com";
Array.prototype.toLowerCase=String.prototype.toLowerCase; //the prototype method of string can now be called from the array object
verify(arr.toLowerCase(), "jscript,12345,123@microsoft.com", id++, "\"Testing Coercible Objects eg Array\" ");
//test 14 Coercing Other Object types : Number
var num=new Number();
num=12345
Number.prototype.toLowerCase=String.prototype.toLowerCase;
verify(num.toLowerCase(), "12345", id++, "\"Testing Coercible Objects eg Number\" ");
//test 15 Coercing Other Object types : Boolean
var mybool=new Boolean(false);
Boolean.prototype.toLowerCase=String.prototype.toLowerCase;
verify(mybool.toLowerCase(), "false", id++, "\"Testing Coercible Objects eg Boolean\" ");
//test 16 Coercing Other Object types : Object
var obj=new Object()
Object.prototype.toLowerCase=String.prototype.toLowerCase;
verify(obj.toLowerCase(), "[object object]", id++, "\"Testing Coercible Objects eg Object\" ");
//Need to test for null and undefined but have to know the error message
//test 17 Concatenated String
verify(("CONCATENATED"+"STRING").toLowerCase(), "concatenatedstring", id++, "\" Testing Concatenated String\"");
//test 18 Indirect Call through Function
var Foo=function(){}
Foo.prototype.test=function(){return "MYSTRING";}
var fun=new Foo()
verify(fun.test().toLowerCase(), "mystring", id++, "\"Testing indirect calling eg function\"")
//test 19 Indirect call through property
var myobj=new Object();
myobj.prop="STRING";
verify(myobj.prop.toLowerCase(), "string", id++, "\"Testing indirect calling eg property\"");
WScript.Echo("done");
//test 20 implicit calls
var a = 1;
var b = 2;
var obj = {toString: function(){ a=3; return "Hello World";}};
a = b;
Object.prototype.toLowerCase = String.prototype.toLowerCase;
var f = obj.toLowerCase();
WScript.Echo (a);