Скажем, я хочу утверждать, что две структуры эквивалентны:
// Using CGPoint here for brevity, but my question applies to any struct type
CGPoint a = CGPointMake(1, 2);
CGPoint b = CGPointMake(1, 2);
STAssertEquals(a, b, @"this works");
assertThat(a, equalTo(b));
Нет ли способа написать утверждение с использованием Hamcrest, которое работает как STAssertEquals
выше?Строка assertThat
не компилируется, так как макросы ожидают параметры id
, а это не структуры.Я пробовал варианты соответствия equalTo
, такие как sameInstance
, но все они, кажется, требуют id
типизированных параметров.Затем я подумал, что хорошим обходным путем будет утверждение, что произвольное выражение имеет значение YES
или NO
.Примерно так:
assertThat(a == b);
или вот что:
assertThat(a == b, isTrue());
Но я не вижу ничего подобного в Хэмкресте.
Я что-то упускаю из виду?Ясно, что я могу выполнить то, что хочу, используя макросы SenTest, такие как STAssertEquals
, но я ожидал, что реализовать эти утверждения с помощью Hamcrest будет просто, чтобы все мои утверждения имели согласованный стиль.
Я также знаю, что могу сделать это, внедрив специальный механизм сопоставления Hamcrest для конкретных структур, которые я сравниваю.Но я действительно искал простое утверждение / сопоставление, которое может просто сравнить любые структуры C для простого байтового равенства.
Возможно, это просто тот случай, когда ни одна из упомянутых мною возможностей невозможна из коробки с Hamcrest,Если это правда, я приму убедительное объяснение этого эффекта в качестве ответа.
Спасибо