algebra
Version:
means completeness and balancing, from the Arabic word الجبر
114 lines (80 loc) • 2.87 kB
JavaScript
/* eslint-env mocha */
const algebra = require('algebra')
const assert = require('assert')
const realField = require('../src/realField')
const R = algebra.Real
const methodBinaryOperator = require('./features/methodBinaryOperator')
const methodUnaryOperator = require('./features/methodUnaryOperator')
const staticBinaryOperator = require('./features/staticBinaryOperator')
const staticUnaryOperator = require('./features/staticUnaryOperator')
describe('Real', () => {
describe('zero', () => {
it('is static', () => {
R.zero.should.eql(0)
})
})
describe('one', () => {
it('is static', () => {
R.one.should.eql(1)
})
})
describe('addition', () => {
const operator = 'addition'
it('is a static method', staticBinaryOperator(R, operator, 2, 3, 5))
it('is a class method', methodBinaryOperator(R, operator, 1, 2, 3))
})
describe('subtraction', () => {
const operator = 'subtraction'
it('is a static method', staticBinaryOperator(R, operator, 2, 3, -1))
it('is a class method', methodBinaryOperator(R, operator, -1, -4, 3))
})
describe('multiplication', () => {
const operator = 'multiplication'
it('is a static method', staticBinaryOperator(R, operator, 8, -2, -16))
it('is a class method', methodBinaryOperator(R, operator, 2, 2, 4))
})
describe('division', () => {
const operator = 'division'
it('is a static method', staticBinaryOperator(R, operator, 8, 2, 4))
it('is a class method', methodBinaryOperator(R, operator, -2, 4, -0.5))
})
describe('equality', () => {
const operator = 'equality'
it('is a static method', staticBinaryOperator(R, operator, 10, 10, true))
it('is a class method', () => {
const x = new R(10)
x.equality(10).should.be.ok()
})
})
describe('disequality', () => {
const operator = 'disequality'
it('is a static method', staticBinaryOperator(R, operator, 10, 20, true))
it('is a class method', () => {
const x = new R(10)
x.disequality(20).should.be.ok()
})
})
describe('negation', () => {
const operator = 'negation'
it('is a static method', staticUnaryOperator(R, operator, -2, 2))
it('is a class method', methodUnaryOperator(R, operator, 8, -8))
it('is an involution', () => {
const x = new R(10)
x.negation().negation().data.should.be.eql(10)
})
})
describe('inversion', () => {
const operator = 'inversion'
it('is a static method', staticUnaryOperator(R, operator, 2, 0.5))
it('is a class method', methodUnaryOperator(R, operator, -4, -0.25))
it('is an involution', () => {
const x = new R(10)
x.inversion().inversion().data.should.be.eql(10)
})
})
describe('realField', () => {
it('epsilon', () => {
assert(realField.equality(0.2 + 0.1, 0.3))
})
})
})