* fix: migrate remaining eslint-config-edx * refactor: updated eslint rules according to eslint-config-edx-es5 * refactor: add custom rules to suppress unnecessary eslint issues * refactor: add custom rules to internal eslint configs * fix: fix all indentation issues * chore: update lock file
106 lines
4.5 KiB
JavaScript
106 lines
4.5 KiB
JavaScript
(function(require) {
|
|
'use strict';
|
|
|
|
require(
|
|
['video/00_iterator.js'],
|
|
function(Iterator) {
|
|
describe('Iterator', function() {
|
|
var list = ['a', 'b', 'c', 'd', 'e'],
|
|
iterator;
|
|
|
|
beforeEach(function() {
|
|
iterator = new Iterator(list);
|
|
});
|
|
|
|
it('size contains correct list length', function() {
|
|
expect(iterator.size).toBe(list.length);
|
|
expect(iterator.lastIndex).toBe(list.length - 1);
|
|
});
|
|
|
|
describe('next', function() {
|
|
describe('with passed `index`', function() {
|
|
it('returns next item in the list', function() {
|
|
expect(iterator.next(2)).toBe('d');
|
|
expect(iterator.next(0)).toBe('b');
|
|
});
|
|
|
|
it('returns first item if index equal last item', function() {
|
|
expect(iterator.next(4)).toBe('a');
|
|
});
|
|
|
|
it('returns next item if index is not valid', function() {
|
|
expect(iterator.next(-4)).toBe('b'); // index < 0
|
|
expect(iterator.next(100)).toBe('c'); // index > size
|
|
expect(iterator.next('99')).toBe('d'); // incorrect Type
|
|
});
|
|
});
|
|
|
|
describe('without passed `index`', function() {
|
|
it('returns next item in the list', function() {
|
|
expect(iterator.next()).toBe('b');
|
|
expect(iterator.next()).toBe('c');
|
|
});
|
|
|
|
it('returns first item if index equal last item', function() {
|
|
expect(iterator.next()).toBe('b');
|
|
expect(iterator.next()).toBe('c');
|
|
expect(iterator.next()).toBe('d');
|
|
expect(iterator.next()).toBe('e');
|
|
expect(iterator.next()).toBe('a');
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('prev', function() {
|
|
describe('with passed `index`', function() {
|
|
it('returns previous item in the list', function() {
|
|
expect(iterator.prev(3)).toBe('c');
|
|
expect(iterator.prev(1)).toBe('a');
|
|
});
|
|
|
|
it('returns last item if index equal first item', function() {
|
|
expect(iterator.prev(0)).toBe('e');
|
|
});
|
|
|
|
it('returns previous item if index is not valid', function() {
|
|
expect(iterator.prev(-4)).toBe('e'); // index < 0
|
|
expect(iterator.prev(100)).toBe('d'); // index > size
|
|
expect(iterator.prev('99')).toBe('c'); // incorrect Type
|
|
});
|
|
});
|
|
|
|
describe('without passed `index`', function() {
|
|
it('returns previous item in the list', function() {
|
|
expect(iterator.prev()).toBe('e');
|
|
expect(iterator.prev()).toBe('d');
|
|
});
|
|
|
|
it('returns last item if index equal first item', function() {
|
|
expect(iterator.prev()).toBe('e');
|
|
});
|
|
});
|
|
});
|
|
|
|
it('returns last item in the list', function() {
|
|
expect(iterator.last()).toBe('e');
|
|
});
|
|
|
|
it('returns first item in the list', function() {
|
|
expect(iterator.first()).toBe('a');
|
|
});
|
|
|
|
it('isEnd works correctly', function() {
|
|
expect(iterator.isEnd()).toBeFalsy();
|
|
iterator.next(); // => index 1
|
|
expect(iterator.isEnd()).toBeFalsy();
|
|
iterator.next(); // => index 2
|
|
expect(iterator.isEnd()).toBeFalsy();
|
|
iterator.next(); // => index 3
|
|
expect(iterator.isEnd()).toBeFalsy();
|
|
iterator.next(); // => index 4 == last
|
|
expect(iterator.isEnd()).toBeTruthy();
|
|
});
|
|
});
|
|
});
|
|
}(require));
|