Параметризованные тесты Spock и использование труб

У меня проблемы с написанием параметризованного теста с помощью Spock, когда одному параметру нужен символ вертикальной черты, например, потому что это вычисление флага.

def "verify inferInputType()"() {
        expect:
        inputType == mPresenter.inferInputType(opt)

        where:
        opt                        | inputType
        0                          | 0
        EDITTEXT_TYPE_ALPHANUM     | InputType.TYPE_CLASS_TEXT
        EDITTEXT_TYPE_NUM          | InputType.TYPE_CLASS_NUMBER
        EDITTEXT_TYPE_FLOAT        | (InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL)
}

Тест не проходит со следующим сообщением об ошибке:

Row in data table has wrong number of elements (3 instead of 2) @ line 25, column 9.
           EDITTEXT_TYPE_FLOAT        | InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL
           ^

Единственный способ заставить его работать - это заключить параметр в закрытие, например

        EDITTEXT_TYPE_FLOAT        | {InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL}()

Но это некрасиво, если у кого-то есть решение получше, подскажите пожалуйста.


person tbruyelle    schedule 14.11.2013    source источник


Ответы (1)


Вы должны уметь:

InputType.TYPE_CLASS_NUMBER.or( InputType.TYPE_NUMBER_FLAG_DECIMAL )

Не уверен, что так лучше ;-)

person tim_yates    schedule 14.11.2013