2015-01-23 3 views
0

Я пытаюсь реализовать очередь приоритетов в Swift, и она все еще находится на начальной стадии. Сначала я хотел бы написать тесты для структуры данных.Swift: Необязательный тип кортежа в утверждении Assert

В настоящее время у меня есть этот метод, extractMin, который возвращает первый элемент в очереди приоритетов. Он реализуется следующим образом (T - общий тип значения).

// Remove and return the element with minimum priority. 
// If the pq is empty, return nil. 
func extractMin() -> (T, Double)? { 
    return nil // Implementation goes here 
} 

Я хотел бы написать тесты для этой функции. Первое, что я проверю, это то, что он возвращает nil, когда pq пуст. И я хочу, чтобы иметь что-то вроде этого:

XCTAssertNil(priorityQueue.extractMin(), "A nil value should be returned when the priority queue is empty"); 

Однако это предлагающее мне ошибки, что читает «(String, Double) не идентичен AnyObject».

Есть ли способ исправить это? Как мне приступить к написанию тестов для такого рода необязательных типов кортежей?

ответ

0

Возможно, вы могли бы рассмотреть возможность возврата кортежа из двух необязательных значений и проверить оба? Или необязательный класс, в котором есть эти два члена.

Эта ссылка также обсуждает возможность отсутствующего «Фонд импорта» является причиной этого: http://www.scottlogic.com/blog/2014/09/24/swift-anyobject.html

Также смотрите: How can one use XCTAssertNil with optional structs?