/* * Most of these test cases are adapted from: * http://johnjbarton.github.com/nonymous/index.html */ function assertName(fn, name) { assertEq(displayName(fn), name) } /* simple names */ var a = function b() {}; function c() {}; assertName(a, 'b'); assertName(c, 'c'); var a = function(){}, b = function(){}; assertName(a, 'a'); assertName(b, 'b'); /* nested names */ var main = function() { function Foo(a) { assertName(a, 'main/foo<') } var foo = new Foo(function() {}); }; assertName(main, 'main') main(); /* duplicated */ var Baz = Bar = function(){} assertName(Baz, 'Bar'); assertName(Bar, 'Bar'); /* returned from an immediate function */ var Foo = function (){ assertName(arguments.callee, 'Foo<') return function(){}; }(); assertName(Foo, 'Foo