Как я могу проверить, что целочисленное вычитание не является коммутативным? - PullRequest
0 голосов
/ 15 января 2019

Я хочу написать основанный на свойствах модульный тест, который доказывает, что целочисленное вычитание не является коммутативным. У меня это с мокко и быстрая проверка :

const fc = require('fast-check')

describe('The subtraction', () => {
    it('is not commutative', () => {
        fc.assert(
            fc.property(
                fc.integer(), fc.integer(), (a, b) => a - b !== b - a
            )
        )
    })
})

После нескольких запусков я заметил, что он не работает, когда условие a === b && a <= 0 выполняется. Однако я не уверен, есть ли какие-либо другие условия, которые не соответствуют a - b !== b - a, поэтому я не уверен, правильно ли исключать это конкретное условие.

Как мне написать тест? Должен ли я исключить конкретное условие? Или я должен проверить, что на a - b !== b - a верно хотя бы для двух заданных значений? Или есть другой способ проверить это?

Также приветствуются примеры использования любых других видов библиотек javascript для тестирования на основе свойств.

...