Add a basic Queue data structure

Implemented as a linked list.
This commit is contained in:
Eryn Wells 2018-11-10 17:40:37 -05:00
parent 4e4b6b9bca
commit 47df42c8e5
4 changed files with 117 additions and 4 deletions

View file

@ -0,0 +1,51 @@
//
// QueueTests.swift
// Terrain2Tests
//
// Created by Eryn Wells on 11/10/18.
// Copyright © 2018 Eryn Wells. All rights reserved.
//
import XCTest
@testable import Terrain2
class QueueTests: XCTestCase {
func testEnqueue() {
var queue = Queue<Int>()
queue.enqueue(item: 1)
queue.enqueue(item: 2)
queue.enqueue(item: 3)
XCTAssertEqual(queue.count, 3)
XCTAssertEqual(queue.head?.item, 1)
XCTAssertEqual(queue.head?.next?.item, 2)
XCTAssertEqual(queue.head?.next?.next?.item, 3)
}
func testDequeue() {
var queue = Queue<Int>()
queue.enqueue(item: 1)
queue.enqueue(item: 2)
queue.enqueue(item: 3)
XCTAssertEqual(queue.count, 3)
XCTAssertEqual(queue.head?.item, 1)
XCTAssertEqual(queue.tail?.item, 3)
XCTAssertEqual(queue.dequeue(), 1)
XCTAssertEqual(queue.count, 2)
XCTAssertEqual(queue.head?.item, 2)
XCTAssertEqual(queue.tail?.item, 3)
XCTAssertEqual(queue.dequeue(), 2)
XCTAssertEqual(queue.count, 1)
XCTAssertEqual(queue.head?.item, 3)
XCTAssertEqual(queue.tail?.item, 3)
XCTAssertEqual(queue.dequeue(), 3)
XCTAssertEqual(queue.count, 0)
XCTAssertNil(queue.head)
XCTAssertNil(queue.tail)
}
}