Queue in Typescript

by Preetha Srinivasan

HTML

<link rel="stylesheet" href="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.css">
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.js"></script>
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine-html.js"></script>

TypeScript

class Queue{
  data: any[];

  constructor() {
    this.data = [];
  }

  enqueue(item:any) {
    this.data.push(item);
  }

  dequeue() {
    return this.data.shift();
  }

  size() {
   return this.data.length;
  }
  
  print() {
    this.data.forEach(item => {
      console.log(item);
    })
  }
}

describe("Queue tests", function() {
  it ("enqueue operation",function(){
   var queue = new Queue();
   queue.enqueue(10);
   queue.enqueue("string");
   expect(queue.size()).toEqual(2);
  });
  
  it ("dequeue operation",function(){
   var queue = new Queue();
   queue.enqueue(10);
   queue.enqueue("string");
   expect(queue.size()).toEqual(2);
   var value = queue.dequeue();
   expect(value).toEqual(10);
  });
  
  it ("size operation",function(){
    var queue = new Queue();
    expect(queue.size()).toEqual(0);
    var value = queue.dequeue();
    expect(value).toEqual(undefined);
  });
  
});

// load jasmine htmlReporter
(function() {
  var env = jasmine.getEnv();
  env.addReporter(new jasmine.HtmlReporter());
  env.execute();
}());