assert.sameValue([3, undefined, 1].sort(function (a, b) { return a - b; }).join(","), "1,3,", "comparator + undefined");
assert.sameValue([3, undefined, 1].sort(function (a, b) { return b - a; }).join(","), "3,1,", "desc comparator + undefined");
assert.sameValue([3, undefined, 1, undefined, 2].sort().join(","), "1,2,3,,", "default + undefined");
assert.sameValue(["zzz", undefined, "aaa"].sort().join(","), "aaa,zzz,", "default with strings");
assert.sameValue([undefined, undefined].sort(function (a, b) { return a - b; }).length, 2, "all undefined");
var sawUndefined = false;
[2, undefined, 1, undefined, 3].sort(function (a, b) {
if (a === undefined || b === undefined) sawUndefined = true;
return a - b;
});
assert.sameValue(sawUndefined, false, "comparator never receives undefined");
assert.sameValue([3, 1, 2].sort(function (a, b) { return a - b; }).join(","), "1,2,3", "numeric");
assert.sameValue([10, 1, 2].sort().join(","), "1,10,2", "default lexicographic");