Как я могу проверить, что целочисленное вычитание не является коммутативным?
Я хочу написать основанный на свойствах модульный тест, который доказывает, что целочисленное вычитание не является коммутативным. У меня есть это с мокко и fast-check:
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 для тестирования на основе свойств.