Tests that we do ToString conversions correctly when String.prototype.valueOf is not what we wanted. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" hello PASS "" + foo({toString:function() { debug("hello"); return 42; }}) is "42" PASS successfullyParsed is true TEST COMPLETE