You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
237 lines
5.7 KiB
237 lines
5.7 KiB
import { describe, expect, it } from '@jest/globals';
|
|
import { undef } from '../src/core';
|
|
import { toNOrd as $o, NOrd } from '../src/ord';
|
|
import { toBoolean as $, False, True, fromBoolean as _, and, cmp, eq, ge, gt, iif, le, lt, 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._(True)._(True)._(False))).toBe(true);
|
|
});
|
|
|
|
it('returns false argument', () => {
|
|
expect($(iif._(False)._(True)._(False))).toBe(false);
|
|
});
|
|
|
|
it('ignores other argument', () => {
|
|
expect($(iif._(True)._(True)._(undef))).toBe(true);
|
|
expect($(iif._(False)._(undef)._(False))).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('not', () => {
|
|
it('not False is True', () => {
|
|
expect($(not._(False))).toBe(true);
|
|
});
|
|
|
|
it('not True is False', () => {
|
|
expect($(not._(True))).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('lt', () => {
|
|
it('False lt False is False', () => {
|
|
expect($(lt._(False)._(False))).toBe(false);
|
|
});
|
|
|
|
it('False lt True is True', () => {
|
|
expect($(lt._(False)._(True))).toBe(true);
|
|
});
|
|
|
|
it('True lt False is False', () => {
|
|
expect($(lt._(True)._(False))).toBe(false);
|
|
});
|
|
|
|
it('True lt True is False', () => {
|
|
expect($(lt._(True)._(True))).toBe(false);
|
|
});
|
|
|
|
it('True lt ignores second argument', () => {
|
|
expect($(lt._(True)._(undef))).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('le', () => {
|
|
it('False le False is True', () => {
|
|
expect($(le._(False)._(False))).toBe(true);
|
|
});
|
|
|
|
it('False le True is True', () => {
|
|
expect($(le._(False)._(True))).toBe(true);
|
|
});
|
|
|
|
it('True le False is False', () => {
|
|
expect($(le._(True)._(False))).toBe(false);
|
|
});
|
|
|
|
it('True le True is True', () => {
|
|
expect($(le._(True)._(True))).toBe(true);
|
|
});
|
|
|
|
it('False le ignores second argument', () => {
|
|
expect($(le._(False)._(undef))).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe('eq', () => {
|
|
it('False eq False is True', () => {
|
|
expect($(eq._(False)._(False))).toBe(true);
|
|
});
|
|
|
|
it('False eq True is False', () => {
|
|
expect($(eq._(False)._(True))).toBe(false);
|
|
});
|
|
|
|
it('True eq False is False', () => {
|
|
expect($(eq._(True)._(False))).toBe(false);
|
|
});
|
|
|
|
it('True eq True is True', () => {
|
|
expect($(eq._(True)._(True))).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe('ge', () => {
|
|
it('False ge False is True', () => {
|
|
expect($(ge._(False)._(False))).toBe(true);
|
|
});
|
|
|
|
it('False ge True is False', () => {
|
|
expect($(ge._(False)._(True))).toBe(false);
|
|
});
|
|
|
|
it('True ge False is True', () => {
|
|
expect($(ge._(True)._(False))).toBe(true);
|
|
});
|
|
|
|
it('True ge True is True', () => {
|
|
expect($(ge._(True)._(True))).toBe(true);
|
|
});
|
|
|
|
it('True ge ignores second argument', () => {
|
|
expect($(ge._(True)._(undef))).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe('gt', () => {
|
|
it('False gt False is False', () => {
|
|
expect($(gt._(False)._(False))).toBe(false);
|
|
});
|
|
|
|
it('False gt True is False', () => {
|
|
expect($(gt._(False)._(True))).toBe(false);
|
|
});
|
|
|
|
it('True gt False is True', () => {
|
|
expect($(gt._(True)._(False))).toBe(true);
|
|
});
|
|
|
|
it('True gt True is False', () => {
|
|
expect($(gt._(True)._(True))).toBe(false);
|
|
});
|
|
|
|
it('False gt ignores second argument', () => {
|
|
expect($(gt._(False)._(undef))).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('cmp', () => {
|
|
it('False cmp False is EQ', () => {
|
|
expect($o(cmp._(False)._(False))).toBe(NOrd.EQ);
|
|
});
|
|
|
|
it('False cmp True is LT', () => {
|
|
expect($o(cmp._(False)._(True))).toBe(NOrd.LT);
|
|
});
|
|
|
|
it('True cmp False is GT', () => {
|
|
expect($o(cmp._(True)._(False))).toBe(NOrd.GT);
|
|
});
|
|
|
|
it('True cmp True is EQ', () => {
|
|
expect($o(cmp._(True)._(True))).toBe(NOrd.EQ);
|
|
});
|
|
});
|
|
|
|
describe('and', () => {
|
|
it('False and False is False', () => {
|
|
expect($(and._(False)._(False))).toBe(false);
|
|
});
|
|
|
|
it('False and True is False', () => {
|
|
expect($(and._(False)._(True))).toBe(false);
|
|
});
|
|
|
|
it('True and False is False', () => {
|
|
expect($(and._(True)._(False))).toBe(false);
|
|
});
|
|
|
|
it('True and True is True', () => {
|
|
expect($(and._(True)._(True))).toBe(true);
|
|
});
|
|
|
|
it('False and ignores other argument', () => {
|
|
expect($(and._(False)._(undef))).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('or', () => {
|
|
it('False or False is False', () => {
|
|
expect($(or._(False)._(False))).toBe(false);
|
|
});
|
|
|
|
it('False or True is True', () => {
|
|
expect($(or._(False)._(True))).toBe(true);
|
|
});
|
|
|
|
it('True or False is True', () => {
|
|
expect($(or._(True)._(False))).toBe(true);
|
|
});
|
|
|
|
it('True or True is True', () => {
|
|
expect($(or._(True)._(True))).toBe(true);
|
|
});
|
|
|
|
it('True or ignores other argument', () => {
|
|
expect($(or._(True)._(undef))).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe('xor', () => {
|
|
it('False xor False is False', () => {
|
|
expect($(xor._(False)._(False))).toBe(false);
|
|
});
|
|
|
|
it('False xor True is True', () => {
|
|
expect($(xor._(False)._(True))).toBe(true);
|
|
});
|
|
|
|
it('True xor False is True', () => {
|
|
expect($(xor._(True)._(False))).toBe(true);
|
|
});
|
|
|
|
it('True xor True is False', () => {
|
|
expect($(xor._(True)._(True))).toBe(false);
|
|
});
|
|
});
|
|
});
|
|
|