import { describe, expect, it } from '@jest/globals'; import { toBoolean as $, False, True, fromBoolean as _, and, iif, not, or, xor } from '../src/bool'; describe('Bool', () => { describe('toBoolean', () => { it('converts True', () => { expect($(True)).toBe(true); }); it('converts False', () => { expect($(False)).toBe(false); }); }); describe('fromBoolean', () => { it('converts true', () => { expect($(_(true))).toBe(true); }); it('converts false', () => { expect($(_(false))).toBe(false); }); }); describe('iif', () => { it('returns true argument', () => { expect(iif).toDeferEvaluationOf(False, expect.skipped(True), False); expect($(iif._(True)._(True)._(False))).toBe(true); }); it('returns false argument', () => { expect(iif).toDeferEvaluationOf(True, True, expect.skipped(False)); expect($(iif._(False)._(True)._(False))).toBe(false); }); }); describe('not', () => { it('not False is True', () => { expect(not).toDeferEvaluationOf(False); expect($(not._(False))).toBe(true); }); it('not True is False', () => { expect(not).toDeferEvaluationOf(True); expect($(not._(True))).toBe(false); }); }); describe('and', () => { it('False and False is False', () => { expect(and).toDeferEvaluationOf(False, expect.skipped(False)); expect($(and._(False)._(False))).toBe(false); }); it('False and True is False', () => { expect(and).toDeferEvaluationOf(False, expect.skipped(True)); expect($(and._(False)._(True))).toBe(false); }); it('True and False is False', () => { expect(and).toDeferEvaluationOf(True, False); expect($(and._(True)._(False))).toBe(false); }); it('True and True is True', () => { expect(and).toDeferEvaluationOf(True, True); expect($(and._(True)._(True))).toBe(true); }); }); describe('or', () => { it('False or False is False', () => { expect(or).toDeferEvaluationOf(False, False); expect($(or._(False)._(False))).toBe(false); }); it('False or True is True', () => { expect(or).toDeferEvaluationOf(False, True); expect($(or._(False)._(True))).toBe(true); }); it('True or False is True', () => { expect(or).toDeferEvaluationOf(True, expect.skipped(False)); expect($(or._(True)._(False))).toBe(true); }); it('True or True is True', () => { expect(or).toDeferEvaluationOf(True, expect.skipped(True)); expect($(or._(True)._(True))).toBe(true); }); }); describe('xor', () => { it('False xor False is False', () => { expect(xor).toDeferEvaluationOf(False, False); expect($(xor._(False)._(False))).toBe(false); }); it('False xor True is True', () => { expect(xor).toDeferEvaluationOf(False, True); expect($(xor._(False)._(True))).toBe(true); }); it('True xor False is True', () => { expect(xor).toDeferEvaluationOf(True, False); expect($(xor._(True)._(False))).toBe(true); }); it('True xor True is False', () => { expect(xor).toDeferEvaluationOf(True, True); expect($(xor._(True)._(True))).toBe(false); }); }); });