Test("Collections",()=>{ Spec("SequenceEquals",()=>{ enumerable func myenum() { yield 42; yield 69; yield 128; yield "Hello"; } Assert(SequenceEquals("MyString",['M','y','S','t','r','i','n','g']), "SequenceEquals is not functioning correctly, String MyString and array with same chars should return true"); Assert(SequenceEquals(myenum(), [42,69,128,"Hello"]), "SequenceEquals is not functioning correctly, enumerable and list should return same result"); }); Spec("Queue", ()=>{ const queue = new Queue(); queue.Enqueue("Apple"); queue.Enqueue(37); Assert(!TypeIsDefined(queue.Enqueue("My String")), "Queue.Enqueue should not return value, but it does"); Expect(queue.Dequeue()).ToBe("Apple"); Expect(queue.Peek()).LessThan(42); Expect(queue.Count).ToBe(2); queue.Dequeue(); Expect(queue.Count).ToBe(1); queue.Enqueue(4); queue.Enqueue(5); queue.Enqueue(true); Assert(SequenceEquals(queue,["My String",4,5,true]), "Queue isn't working correctly"); }); Spec("Stack", ()=>{ const stack = new Stack(); Assert(!TypeIsDefined(stack.Push(42)),"Stack.Push should not return a value, but it does"); stack.Push(59); Expect(stack.Count).ToBe(2); Expect(stack.Pop()).ToBe(59); Expect(stack.Top()).ToBe(42); Expect(stack.Pop()).ToBe(42); }); });