Posts

April 22, 2010

Asserzioni in Objective C

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?