     XCTAssertEqual(nil, queue.front)
   }
   
+  func testInitialisesWithNaturalOrdering() {
+    let queue = PriorityQueue<Int>(isOrdered: <)
+    
+    XCTAssertTrue(queue.isEmpty)
+    XCTAssertEqual(0, queue.count)
+    XCTAssertEqual(nil, queue.front)
+  }
+  
+  func testInitialisesWithNonNaturalOrdering() {
+    let queue = PriorityQueue<Int>(isOrdered: >)
+    
+    XCTAssertTrue(queue.isEmpty)
+    XCTAssertEqual(0, queue.count)
+    XCTAssertEqual(nil, queue.front)
+  }
+  
   func testInitialisesFromEmptyArrayLiteral() {
     let queue: PriorityQueue<Int> = []
     

    XCTAssertEqual(nil, queue.front)
  }
  
  func testInitialisesFromSequence() {
    let queue = PriorityQueue<Int>([1, 2, 3])
    

    }
  }
  
  func testPushesElementsWithNonNaturalOrdering() {
    var queue = PriorityQueue<Int>(isOrdered: >)
    
    queue.enqueue(1)
    queue.enqueue(2)
    queue.enqueue(3)
    
    XCTAssertFalse(queue.isEmpty)
    XCTAssertEqual(3, queue.count)
    XCTAssertEqual(3, queue.front)
    
    for i in 0..<3 {
      XCTAssertEqual(3 - i, queue.dequeue())
    }
  }
  
  func testPopsElement() {
    var queue: PriorityQueue = [1]
    
