blob: 0b41f8535d365cb1cb459acc0c2463d9087940dc [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<script>
function testSlice() {
var m = new cr.ui.ArrayDataModel([0, 1, 2]);
assertArrayEquals([0, 1, 2], m.slice());
assertArrayEquals([1, 2], m.slice(1));
assertArrayEquals([1], m.slice(1, 2));
}
function testPush() {
var m = new cr.ui.ArrayDataModel([0, 1, 2]);
var count = 0;
m.addEventListener('splice', function(e) {
count++;
assertEquals(3, e.index);
assertArrayEquals([], e.removed);
assertArrayEquals([3, 4], e.added);
});
assertEquals(5, m.push(3, 4));
var a = m.slice();
assertArrayEquals([0, 1, 2, 3, 4], a);
assertEquals(1, count, 'The splice event should only fire once');
}
function testSplice() {
function compare(array, args) {
var m = new cr.ui.ArrayDataModel(array.slice());
var expected = array.slice();
var result = expected.splice.apply(expected, args);
assertArrayEquals(result, m.splice.apply(m, args));
assertArrayEquals(expected, m.slice());
}
compare([1, 2, 3], []);
compare([1, 2, 3], [0, 0]);
compare([1, 2, 3], [0, 1]);
compare([1, 2, 3], [1, 1]);
compare([1, 2, 3], [0, 3]);
compare([1, 2, 3], [0, 1, 5]);
compare([1, 2, 3], [0, 3, 1, 2, 3]);
compare([1, 2, 3], [5, 3, 1, 2, 3]);
}
function testPermutation() {
function doTest(sourceArray, spliceArgs) {
var m = new cr.ui.ArrayDataModel(sourceArray.slice());
var permutation;
m.addEventListener('permuted', function(event) {
permutation = event.permutation;
});
m.splice.apply(m, spliceArgs);
var deleted = 0;
for (var i = 0; i < sourceArray.length; i++) {
if (permutation[i] == -1)
deleted++;
else
assertEquals(sourceArray[i], m.item(permutation[i]));
}
assertEquals(deleted, spliceArgs[1]);
}
doTest([1, 2, 3], [0, 0]);
doTest([1, 2, 3], [0, 1]);
doTest([1, 2, 3], [1, 1]);
doTest([1, 2, 3], [0, 3]);
doTest([1, 2, 3], [0, 1, 5]);
doTest([1, 2, 3], [0, 3, 1, 2, 3]);
}
function testUpdateIndexes() {
var m = new cr.ui.ArrayDataModel([1, 2, 3]);
var changedIndexes = [];
m.addEventListener('change', function(event) {
changedIndexes.push(event.index);
});
m.updateIndexes([0, 1, 2]);
assertArrayEquals([0, 1, 2], changedIndexes);
}
function testReplaceItem() {
var m = new cr.ui.ArrayDataModel([1, 2, 3]);
var permutation = null;
var changeIndex;
m.addEventListener('permuted', function(event) {
permutation = event.permutation;
});
m.addEventListener('change', function(event) {
changeIndex = event.index;
});
m.replaceItem(2, 4);
assertEquals(null, permutation);
assertEquals(1, changeIndex);
}
</script>
</body>
</html>