1f34af54bcab917eb5943d1918f32d26364f45578Jason Monk// Try calling the browser-side bound functions with varying (invalid) 2f34af54bcab917eb5943d1918f32d26364f45578Jason Monk// inputs. There is no notion of "success" for this test, other than 3f34af54bcab917eb5943d1918f32d26364f45578Jason Monk// verifying the correct C++ bindings were reached with expected values. 4f34af54bcab917eb5943d1918f32d26364f45578Jason Monk 5f34af54bcab917eb5943d1918f32d26364f45578Jason Monkfunction MyObject() { 6f34af54bcab917eb5943d1918f32d26364f45578Jason Monk this.x = "3"; 7f34af54bcab917eb5943d1918f32d26364f45578Jason Monk} 8f34af54bcab917eb5943d1918f32d26364f45578Jason Monk 9f34af54bcab917eb5943d1918f32d26364f45578Jason MonkMyObject.prototype.toString = function() { 10f34af54bcab917eb5943d1918f32d26364f45578Jason Monk throw "exception from calling toString()"; 11f34af54bcab917eb5943d1918f32d26364f45578Jason Monk} 12f34af54bcab917eb5943d1918f32d26364f45578Jason Monk 13f34af54bcab917eb5943d1918f32d26364f45578Jason Monkfunction expectEquals(expectation, actual) { 14f34af54bcab917eb5943d1918f32d26364f45578Jason Monk if (!(expectation === actual)) { 15f34af54bcab917eb5943d1918f32d26364f45578Jason Monk throw "FAIL: expected: " + expectation + ", actual: " + actual; 16f34af54bcab917eb5943d1918f32d26364f45578Jason Monk } 17f34af54bcab917eb5943d1918f32d26364f45578Jason Monk} 18f34af54bcab917eb5943d1918f32d26364f45578Jason Monk 19f34af54bcab917eb5943d1918f32d26364f45578Jason Monkfunction FindProxyForURL(url, host) { 20f34af54bcab917eb5943d1918f32d26364f45578Jason Monk // Call dnsResolve with some wonky arguments. 21f34af54bcab917eb5943d1918f32d26364f45578Jason Monk // Those expected to fail (because we have passed a non-string parameter) 22f34af54bcab917eb5943d1918f32d26364f45578Jason Monk // will return |null|, whereas those that have called through to the C++ 23f34af54bcab917eb5943d1918f32d26364f45578Jason Monk // bindings will return '127.0.0.1'. 24f34af54bcab917eb5943d1918f32d26364f45578Jason Monk expectEquals(null, dnsResolve()); 25f34af54bcab917eb5943d1918f32d26364f45578Jason Monk expectEquals(null, dnsResolve(null)); 26f34af54bcab917eb5943d1918f32d26364f45578Jason Monk expectEquals(null, dnsResolve(undefined)); 27f34af54bcab917eb5943d1918f32d26364f45578Jason Monk expectEquals('127.0.0.1', dnsResolve("")); 28f34af54bcab917eb5943d1918f32d26364f45578Jason Monk expectEquals(null, dnsResolve({foo: 'bar'})); 29f34af54bcab917eb5943d1918f32d26364f45578Jason Monk expectEquals(null, dnsResolve(fn)); 30f34af54bcab917eb5943d1918f32d26364f45578Jason Monk expectEquals(null, dnsResolve(['3'])); 31f34af54bcab917eb5943d1918f32d26364f45578Jason Monk expectEquals('127.0.0.1', dnsResolve("arg1", "arg2", "arg3", "arg4")); 32f34af54bcab917eb5943d1918f32d26364f45578Jason Monk 33f34af54bcab917eb5943d1918f32d26364f45578Jason Monk // Call alert with some wonky arguments. 34f34af54bcab917eb5943d1918f32d26364f45578Jason Monk alert(); 35f34af54bcab917eb5943d1918f32d26364f45578Jason Monk alert(null); 36f34af54bcab917eb5943d1918f32d26364f45578Jason Monk alert(undefined); 37f34af54bcab917eb5943d1918f32d26364f45578Jason Monk alert({foo:'bar'}); 38f34af54bcab917eb5943d1918f32d26364f45578Jason Monk 39f34af54bcab917eb5943d1918f32d26364f45578Jason Monk // This should throw an exception when we toString() the argument 40f34af54bcab917eb5943d1918f32d26364f45578Jason Monk // to alert in the bindings. 41f34af54bcab917eb5943d1918f32d26364f45578Jason Monk try { 42f34af54bcab917eb5943d1918f32d26364f45578Jason Monk alert(new MyObject()); 43f34af54bcab917eb5943d1918f32d26364f45578Jason Monk } catch (e) { 44f34af54bcab917eb5943d1918f32d26364f45578Jason Monk alert(e); 45f34af54bcab917eb5943d1918f32d26364f45578Jason Monk } 46f34af54bcab917eb5943d1918f32d26364f45578Jason Monk 47f34af54bcab917eb5943d1918f32d26364f45578Jason Monk // Call myIpAddress() with wonky arguments 48f34af54bcab917eb5943d1918f32d26364f45578Jason Monk myIpAddress(null); 49f34af54bcab917eb5943d1918f32d26364f45578Jason Monk myIpAddress(null, null); 50f34af54bcab917eb5943d1918f32d26364f45578Jason Monk 51f34af54bcab917eb5943d1918f32d26364f45578Jason Monk // Call myIpAddressEx() correctly (no arguments). 52f34af54bcab917eb5943d1918f32d26364f45578Jason Monk myIpAddressEx(); 53f34af54bcab917eb5943d1918f32d26364f45578Jason Monk 54f34af54bcab917eb5943d1918f32d26364f45578Jason Monk // Call dnsResolveEx() (note that isResolvableEx() implicity calls it.) 55f34af54bcab917eb5943d1918f32d26364f45578Jason Monk isResolvableEx("is_resolvable"); 56f34af54bcab917eb5943d1918f32d26364f45578Jason Monk dnsResolveEx("foobar"); 57f34af54bcab917eb5943d1918f32d26364f45578Jason Monk 58f34af54bcab917eb5943d1918f32d26364f45578Jason Monk return "DIRECT"; 59f34af54bcab917eb5943d1918f32d26364f45578Jason Monk} 60f34af54bcab917eb5943d1918f32d26364f45578Jason Monk 61f34af54bcab917eb5943d1918f32d26364f45578Jason Monkfunction fn() {} 62f34af54bcab917eb5943d1918f32d26364f45578Jason Monk 63