Skip to main content
Module

x/rambda/xor.spec.js

Faster and smaller alternative to Ramda
Go to Latest
File
import { xor } from './xor'
test('compares two values with exclusive or', () => { expect(xor(true, true)).toEqual(false) expect(xor(true, false)).toEqual(true) expect(xor(false, true)).toEqual(true) expect(xor(false, false)).toEqual(false)})
test('when both values are truthy, it should return false', () => { expect(xor(true, 'foo')).toEqual(false) expect(xor(42, true)).toEqual(false) expect(xor('foo', 42)).toEqual(false) expect(xor({}, true)).toEqual(false) expect(xor(true, [])).toEqual(false) expect(xor([], {})).toEqual(false) expect(xor(new Date(), true)).toEqual(false) expect(xor(true, Infinity)).toEqual(false) expect(xor(Infinity, new Date())).toEqual(false)})
test('when both values are falsy, it should return false', () => { expect(xor(null, false)).toEqual(false) expect(xor(false, undefined)).toEqual(false) expect(xor(undefined, null)).toEqual(false) expect(xor(0, false)).toEqual(false) expect(xor(false, NaN)).toEqual(false) expect(xor(NaN, 0)).toEqual(false) expect(xor('', false)).toEqual(false)})
test('when one argument is truthy and the other is falsy, it should return true', () => { expect(xor('foo', null)).toEqual(true) expect(xor(null, 'foo')).toEqual(true) expect(xor(undefined, 42)).toEqual(true) expect(xor(42, undefined)).toEqual(true) expect(xor(Infinity, NaN)).toEqual(true) expect(xor(NaN, Infinity)).toEqual(true) expect(xor({}, '')).toEqual(true) expect(xor('', {})).toEqual(true) expect(xor(new Date(), 0)).toEqual(true) expect(xor(0, new Date())).toEqual(true) expect(xor([], null)).toEqual(true) expect(xor(undefined, [])).toEqual(true)})