// ========================================================================== // Project: SproutCore
- JavaScript Application Framework // Copyright: ©2006-2011 Apple Inc. and contributors. // License: Licensed under MIT license (see license.js) // ==========================================================================
/*global module test equals context ok same notest */ var set, ret ; module(“SC.IndexSet#without”, {
setup: function() { set = SC.IndexSet.create(1,9); }
});
function iter(s) {
var ret = []; s.forEach(function(k) { ret.push(k); }); return ret ;
}
test(“should return empty set when removing self”, function() {
ret = set.without(set); ok(ret !== set, 'is not same instance'); same(iter(ret), []);
});
test(“should return set with range removed from middle”, function() {
ret = SC.IndexSet.create(2,6); ret = set.without(ret); ok(ret !== set, 'is not same instance'); same(iter(ret), [1,8,9]);
});
test(“should return set with range removed overlapping end”, function() {
ret = set.without(SC.IndexSet.create(6,6)); ok(ret !== set, 'is not same instance'); same(iter(ret), [1,2,3,4,5]);
});
test(“should return set with range removed overlapping beginning”, function() {
ret = set.without(SC.IndexSet.create(0,6)); ok(ret !== set, 'is not same instance'); same(iter(ret), [6,7,8,9]);
});
test(“should return set with multiple ranges removed”, function() {
ret = set.without(SC.IndexSet.create(2,2).add(6,2)); ok(ret !== set, 'is not same instance'); same(iter(ret), [1,4,5,8,9]);
});
test(“using without should properly hint returned index set”, function() {
var set = SC.IndexSet.create(10000,5), set2 = SC.IndexSet.create(10000), actual = set.without(set2), loc = SC.IndexSet.HINT_SIZE; while(loc<2000) { // spot check equals(actual._content[loc], 0, 'index set should have hint at loc %@ - set: %@'.fmt(loc, actual.inspect())); loc += SC.IndexSet.HINT_SIZE; }
});
// .….….….….….….….….….….….….….….. // NORMALIZED PARAMETER CASES //
test(“passing no params should return clone”, function() {
ret = set.without(); ok(ret !== set, 'is not same instance'); ok(ret.isEqual(set), 'has same content');
});
test(“passing single number should remove just that index”, function() {
ret = set.without(5); same(iter(ret), [1,2,3,4,6,7,8,9]);
});
test(“passing two numbers should remove range”, function() {
ret = set.without(2,6); same(iter(ret), [1,8,9]);
});
test(“passing range object should remove range”, function() {
ret = set.without({ start: 2, length: 6 }); same(iter(ret), [1,8,9]);
});