Как я могу проверить, что целочисленное вычитание не является коммутативным?

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

0 ответов

Другие вопросы по тегам