Da una discussione in un post di Antonio, mi sono accorto che i matcher usati in Objective C non sfruttano l’espressività del linguagggio.
Le assert di OCUnit sono cose del tipo:
STAssertNotNil (object, @"messsage");
La libreria Hamcrest addolcisce un po’ la sintassi:
AssertThat (object, isNot(nil));
Hamcrest, però, non è altro che un porting di una libreria Java, per cui utilizza la sintassi che ti permette di usare Java.
In virtù della sua parentela con Smalltalk, Objective C è molto più espressivo di così, e permette di fare cose del tipo:
[Assert that:object isNot:nil];
Non è meglio?
Per l’implementazione, si tratta di creare il metodo that:IsNot:
sulla classe Assert
, nulla di più.
Ho intenzione di usare qualcosa del genere nei miei progetti.
Voi cosa ne pensate?