diff --git a/SpecRunner.html b/SpecRunner.html index 0e26d807..a363ce01 100644 --- a/SpecRunner.html +++ b/SpecRunner.html @@ -1,27 +1,29 @@ - - - Jasmine Spec Runner v2.8.0 - - + + + Jasmine Spec Runner v2.8.0 - - - + + - - - + + + - - + + + - - - - + + - - + + + + + + + + \ No newline at end of file diff --git a/src/queue/queue-data-structure.js b/src/queue/queue-data-structure.js index 98ac0fd0..0fc276f1 100644 --- a/src/queue/queue-data-structure.js +++ b/src/queue/queue-data-structure.js @@ -5,24 +5,52 @@ class Queue { } canEnqueue() { + if (this.queueControl.length < this.MAX_SIZE) { + return true + } + else { + return false + } // ... your code goes here } isEmpty() { - // ... your code goes here + // ... your + if (this.queueControl <= 0) { + return true + } + else { + return false + } } enqueue(item) { - // ... your code goes here + if (this.enqueue) { + this.queueControl.push(item) + return this.queueControl + } + else { + throw new Error('QUEUE_OVERFLOW') + } + } dequeue() { - // ... your code goes here + if (!this.isEmpty()) { + const emptybox = this.queueControl.shift() + return emptybox + } + else { + throw new Error('QUEUE_UNDERFLOW') + + } + } display() { + return this.queueControl // ... your code goes here - } + } } // This is required to enable the automated tests, please ignore it. diff --git a/src/queue/queue-dom.js b/src/queue/queue-dom.js index 236675b7..80579d1d 100644 --- a/src/queue/queue-dom.js +++ b/src/queue/queue-dom.js @@ -10,36 +10,61 @@ const dequeue = document.querySelector('.btn-take-dequeue'); const queue = new Queue(); const clearQueueInput = () => { - // ... your code goes here + queueInput.value = ''; }; const generateListQueue = () => { - // ... your code goes here + warningTopQueue.style.display = 'none'; + warningBottomQueue.style.display = 'none'; + queueUL.innerHTML = ''; + let length = queue.display().length; + let size = queue.MAX_SIZE - length; + + queue.display().forEach(item => { + let li = document.createElement('li'); + li.className = 'active'; + li.innerText = item; + queueUL.appendChild(li); + }); + + for (let i = 0; i < size; i++) { + let li = document.createElement('li'); + li.className = 'inactive'; + li.innerHTML = ' '; + queueUL.appendChild(li); + } }; + generateListQueue(); + const generateWarningQueue = (type) => { if (type === 'underflow') { - // ... your code goes here + warningBottomQueue.style.display = 'block'; + warningBottomQueue.innerText = type; } else if (type === 'overflow') { - // ... your code goes here + warningTopQueue.style.display = 'block'; + warningTopQueue.innerText = type; } }; const addToQueue = () => { try { - // ... your code goes here + queue.enqueue(queueInput.value) + clearQueueInput(); + generateListQueue() } catch (error) { - // there was an overflow error, handle it + generateWarningQueue('overflow∫') } }; const removeFromQueue = () => { try { - // ... your code goes here + queue.dequeue() + generateListQueue() } catch (error) { - // there was an underflow error, handle it + generateWarningQueue('underflow') } }; diff --git a/src/stack/stack-data-structure.js b/src/stack/stack-data-structure.js index 1106f6f3..8326f7d5 100644 --- a/src/stack/stack-data-structure.js +++ b/src/stack/stack-data-structure.js @@ -6,23 +6,48 @@ class Stack { canPush() { // ... your code goes here + if (this.stackControl.length < this.MAX_SIZE) { + return true + } + else { + return false + } } isEmpty() { // ... your code goes here + if (this.stackControl <= 0) { + return true + } + else { + return false + } + } push(item) { - // ... your code goes here + if (this.canPush()) { + this.stackControl.push(item) + return this.stackControl + } else { + throw new Error('STACK_OVERFLOW') + } } pop() { - // ... your code goes here + if (!this.isEmpty()) { + const emptybox = this.stackControl.pop() + return emptybox + } else { + throw new Error('STACK_UNDERFLOW') + } + } display() { - // ... your code goes here - } + return this.stackControl + + } } // This is required to enable the automated tests, please ignore it.