test(`#${method} throws when inserting item that is already in this list`, (assert) => { let list = new LinkedList(); let item = new LinkedItem(); list[method](item); assert.throws( () => list[method](item), /Cannot insert.*already in a list/ ); });
test(`#${method} calls adoptItem`, (assert) => { let adoptedItem; let list = new LinkedList({ adoptItem(item) { adoptedItem = item; } }); let item = new LinkedItem(); list[method](item); assert.equal(adoptedItem, item, 'item is adopted'); });
test(`#${method} initial item`, (assert) => { let list = new LinkedList(); let item = new LinkedItem(); list[method](item); assert.equal(list.length, 1, 'length is one'); assert.equal(list.isEmpty, false, 'isEmpty is false'); assert.equal(list.head, item, 'head is item'); assert.equal(list.tail, item, 'tail is item'); assert.equal(item.next, null, 'item next is null'); assert.equal(item.prev, null, 'item prev is null'); });
() => list[method](item),