Smalltalk и Утверждения - PullRequest
       15

Smalltalk и Утверждения

2 голосов
/ 20 марта 2009

Попробуй немного разговоров + TDD + "хорошие практики", которые я наткнулся на некрасивый блок:

Как мне сделать утверждение в GNU Smalltalk?

Я просто ищу ifFalse: [Die] такую ​​вещь

Ответы [ 4 ]

2 голосов
/ 20 марта 2009

а также самоутверждаться: [... некоторый блок]

работает для блоков и неблоков, так как отправка #value в Object возвращает self.

2 голосов
/ 20 марта 2009

Это код для assert: из Squeak (который я рекомендую использовать вместо GNU):

assert: aBlock 
    "Throw an assertion error if aBlock does not evaluates to true."
    aBlock value
        ifFalse: [AssertionFailure signal: 'Assertion failed']
0 голосов
/ 20 марта 2009

Выше было предложено добавить #assert: к Object, но я бы добавил #assert к BlockClosure (или к тому, что [] class в GNU Smalltalk).

assert
    this value ifFalse: [AssertionFailure signal: 'Assertion failed']

и, следовательно, использовать как в

[ value notNil ] assert.
[ value > 0 ] assert.
[ list isEmpty not ] assert.

и так далее.

0 голосов
/ 20 марта 2009

Это просто. В ваших тестовых методах вы пишете:

self assert: 1 + 1 = 2

Но сначала вам нужно создать тестовый класс в качестве подкласса TestCase (в Squeak), например:

TestCase subclass: #MyTest

Здесь вы пишете методы тестирования, имена которых всегда должны начинаться с 'test', например:

testBasicArithmetics

self assert: 1 + 1 = 2
...