UNPKG

e-structures

Version:

Extended data structures library for JavaScript

412 lines (369 loc) 13.7 kB
"use strict"; /** * Test cases for eLinkedList data structure */ describe("eLinkedList - getType query", function() { it("should return type of eList", function() { var linkedList = new eLinkedList(); expect(linkedList.getType()).toBe('eLinkedList'); }); }); describe("eLinkedList - test add and size methods of linkedList", function() { it("should return size of linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); expect(linkedList.size()).toBe(3); }); }); describe("eLinkedList - test add and size methods of linkedList", function() { it("should return size of linkedList after successfully adding item", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); expect(linkedList.add({name: 'JavaScript'})).toBe(4); }); }); describe("eLinkedList - test add method of linkedList", function() { it("should return -1 if no parameter is passed into the add method", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); expect(linkedList.add()).toBe(-1); }); }); describe("eLinkedList - test getFirst method of linkedList", function() { it("should return first item added to linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.getFirst().data).toBe('eStructures'); }); }); describe("eLinkedList - test getLast method of linkedList", function() { it("should return last item added to linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.getLast().data).toBe(57); }); }); describe("eLinkedList - test iterate method of linkedList", function() { it("should iterate through the linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); var array = []; linkedList.iterate(function(element) { array.push(element); }); expect(array.length).toBe(4); }); }); describe("eLinkedList - test iterate method of linkedList", function() { it("should iterate through the linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); var array = []; linkedList.iterate(function(element) { array.push(element); }); expect(array[2]).toBe('JavaScript'); }); }); describe("eLinkedList - test insertAsFirst method of linkedList", function() { it("should return the new item as the first item added to linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); linkedList.insertAsFirst('Babatunde') expect(linkedList.getFirst().data).toBe('Babatunde'); }); }); describe("eLinkedList - test insertAsFirst method of linkedList", function() { it("should return new size of linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.insertAsFirst('Babatunde')).toBe(5); }); }); describe("eLinkedList - test nodeAtPosition method of linkedList", function() { it("should return element at specified position", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.nodeAtPosition('Babatunde')).toBe(undefined); }); }); describe("eLinkedList - test nodeAtPosition method of linkedList", function() { it("should return element at specified position", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.nodeAtPosition()).toBe(undefined); }); }); describe("eLinkedList - test nodeAtPosition method of linkedList", function() { it("should return element at specified position", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); var node = linkedList.nodeAtPosition(2); expect(node.data).toBe('linkedList'); }); }); describe("eLinkedList - test clear method of linkedList", function() { it("should return null as first element in linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); linkedList.clear(); expect(linkedList.getFirst()).toBe(null); }); }); describe("eLinkedList - test clear method of linkedList", function() { it("should return null as last element in linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); linkedList.clear(); expect(linkedList.getLast()).toBe(null); }); }); describe("eLinkedList - test clear method of linkedList", function() { it("should return 0 as the size of linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); linkedList.clear(); expect(linkedList.size()).toBe(0); }); }); describe("eLinkedList - test toArray method of linkedList", function() { it("should return array version of linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.toArray() instanceof Array).toBe(true); }); }); describe("eLinkedList - test toArray method of linkedList", function() { it("should return array version of linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.toArray().length).toBe(4); }); }); describe("eLinkedList - test set method of linkedList", function() { it("should return false due to parameter errors", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.set(2)).toBe(false); }); }); describe("eLinkedList - test set method of linkedList", function() { it("should return false due to parameter errors", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.set()).toBe(false); }); }); describe("eLinkedList - test set method of linkedList", function() { it("should return false due to parameter errors", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.set('name', 25)).toBe(false); }); }); describe("eLinkedList - test set method of linkedList", function() { it("should return true if data is successfully replaced", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.set(1, 25)).toBe(true); }); }); describe("eLinkedList - test set method of linkedList", function() { it("should replace element in specified position", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); linkedList.set(2, 100); expect(linkedList.nodeAtPosition(2).data).toBe(100); }); }); describe("eLinkedList - test removeFirst method of linkedList", function() { it("should return true if head is successfully removed", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.removeFirst()).toBe(true); }); }); describe("eLinkedList - test removeFirst method of linkedList", function() { it("should return new item shifted to head of linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); linkedList.removeFirst(); expect(linkedList.getFirst().data).toBe('linkedList'); }); }); describe("eLinkedList - test remove method of linkedList", function() { it("should return item removed from linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.remove(2).data).toBe('linkedList'); }); }); describe("eLinkedList - test remove method of linkedList", function() { it("should return item removed from linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.remove(1).data).toBe('eStructures'); }); }); describe("eLinkedList - test remove method of linkedList", function() { it("should return item removed from linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('eStructures'); linkedList.add('linkedList'); linkedList.add('JavaScript'); linkedList.add(57); expect(linkedList.remove(4).data).toBe(57); expect(linkedList.size()).toBe(3); }); }); describe("eLinkedList - test remove method of linkedList", function() { it("should return item removed from linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('nodeJS'); expect(linkedList.remove(1).data).toBe('nodeJS'); expect(linkedList.size()).toBe(0); }); }); describe("eLinkedList - test isEmpty method of linkedList", function() { it("should return empty status of linkedList", function() { var linkedList = new eLinkedList(); linkedList.add('nodeJS'); expect(linkedList.isEmpty()).toBeFalsy(); }); }); describe("eLinkedList - test isEmpty method of linkedList", function() { it("should return empty status of linkedList", function() { var linkedList = new eLinkedList(); expect(linkedList.isEmpty()).toBeTruthy(); }); }); describe("eLinkedList - test equal method of linkedList", function() { it("should return equal status of linkedList", function() { var linkedList = new eLinkedList(); linkedList.add(5); linkedList.add(10); var otherLinkedList = new eLinkedList(); otherLinkedList.add(5); otherLinkedList.add(10); expect(linkedList.equal(otherLinkedList)).toBeTruthy(); }); }); describe("eLinkedList - test equal method of linkedList", function() { it("should return equal status of linkedList", function() { var linkedList = new eLinkedList(); linkedList.add(5); linkedList.add(10); var otherLinkedList = new eLinkedList(); otherLinkedList.add(5); otherLinkedList.add("Equal Test"); expect(linkedList.equal(otherLinkedList)).toBeFalsy(); }); }); describe("eLinkedList - test equal method of linkedList using user defined comparator", function() { it("should return equal status of linkedList", function() { var linkedList = new eLinkedList(); linkedList.add({ name: 'c2g', status: true}); linkedList.add({ name: 'andela', status: false }); var otherLinkedList = new eLinkedList(); otherLinkedList.add({ name: 'c2g', status: true}); otherLinkedList.add({ name: 'andela', status: false }); expect(linkedList.equal(otherLinkedList)).toBeTruthy(); }); }); describe("eLinkedList - test equal method of linkedList using user defined comparator", function() { it("should return equal status of linkedList", function() { var linkedList = new eLinkedList(); linkedList.add({ name: 'c2g', status: true}); linkedList.add({ name: 'andela', status: false }); var otherLinkedList = new eLinkedList(); otherLinkedList.add({ name: 'c2g', status: true}); otherLinkedList.add({ name: 'andela', status: true }); expect(linkedList.equal(otherLinkedList)).toBeFalsy(); }); }); describe("eLinkedList - test equal method of linkedList", function() { it("should return equal status of linkedList", function() { var linkedList = new eLinkedList(); linkedList.add(10); linkedList.add(20); var list = new eList(); list.add(10); list.add(20); expect(linkedList.equal(list)).toBeFalsy(); }); });