mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-12-19 06:58:15 +08:00
npx standard --fix
This commit is contained in:
@@ -6,165 +6,164 @@
|
||||
The tests use javascript test-framework mocha
|
||||
*/
|
||||
|
||||
var assert = require('assert');
|
||||
var fs = require('fs');
|
||||
var assert = require('assert')
|
||||
var fs = require('fs')
|
||||
|
||||
// file is included here
|
||||
eval(fs.readFileSync('src/la_lib.js') + '');
|
||||
eval(fs.readFileSync('src/la_lib.js') + '')
|
||||
|
||||
// Tests goes here
|
||||
|
||||
// creating some vectors
|
||||
describe('Create Vectors', function () {
|
||||
describe('#toString()', function () {
|
||||
it('should return a string representation', function () {
|
||||
assert.equal((new LinearAlgebra.Vector(3, [1, 2, 3])).toString(), "(1,2,3)");
|
||||
});
|
||||
});
|
||||
describe("#unitBasisVector()", function () {
|
||||
it("should return a unit basis vector", function () {
|
||||
assert.equal(LinearAlgebra.unitBasisVector(3, 1).toString(), "(0,1,0)");
|
||||
});
|
||||
});
|
||||
});
|
||||
describe('#toString()', function () {
|
||||
it('should return a string representation', function () {
|
||||
assert.equal((new LinearAlgebra.Vector(3, [1, 2, 3])).toString(), '(1,2,3)')
|
||||
})
|
||||
})
|
||||
describe('#unitBasisVector()', function () {
|
||||
it('should return a unit basis vector', function () {
|
||||
assert.equal(LinearAlgebra.unitBasisVector(3, 1).toString(), '(0,1,0)')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
// operations on it.
|
||||
describe("Vector operations", function () {
|
||||
describe("#add()", function () {
|
||||
it("should return vector (2,4,6)", function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 3]);
|
||||
var y = new LinearAlgebra.Vector(3, [1, 2, 3]);
|
||||
assert.equal((x.add(y)).toString(), "(2,4,6)");
|
||||
});
|
||||
});
|
||||
describe("#sub()", function () {
|
||||
it("should return vector (0,0,0)", function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 3]);
|
||||
var y = new LinearAlgebra.Vector(3, [1, 2, 3]);
|
||||
assert.equal((x.sub(y)).toString(), "(0,0,0)");
|
||||
});
|
||||
});
|
||||
describe("#dot()", function () {
|
||||
it("should return the dot-product", function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 3]);
|
||||
var y = new LinearAlgebra.Vector(3, [5, 6, 7]);
|
||||
assert.equal(x.dot(y), 38);
|
||||
});
|
||||
});
|
||||
describe("#scalar()", function () {
|
||||
it("should return the scalar product", function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 3]);
|
||||
assert.equal(x.scalar(2).toString(), "(2,4,6)");
|
||||
});
|
||||
});
|
||||
describe("#norm()", function () {
|
||||
it("should return the normalizes vector", function () {
|
||||
var x = new LinearAlgebra.Vector(4, [9, 0, 3, 1]);
|
||||
var y = x.norm();
|
||||
assert.ok(Math.abs(y.component(0) - (9.0 / Math.sqrt(91))) <= 0.01);
|
||||
});
|
||||
});
|
||||
describe("#eulideanLength()", function () {
|
||||
it("should return the eulidean length of the vector", function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 2]);
|
||||
assert.ok(Math.abs(x.eulideanLength() - 3) <= 0.001);
|
||||
});
|
||||
});
|
||||
describe("#size()", function () {
|
||||
it("should return the size (not eulidean length!) of the vector", function () {
|
||||
var x = LinearAlgebra.randomVectorInt(10, 1, 5);
|
||||
assert.equal(x.size(), 10);
|
||||
});
|
||||
});
|
||||
describe("#equal()", function () {
|
||||
it("should compares two vectors", function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 2]);
|
||||
var y = new LinearAlgebra.Vector(3, [1, 2, 3]);
|
||||
assert.ok(x.equal(x));
|
||||
assert.ok(!x.equal(y));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("Methods on vectors", function () {
|
||||
describe("#component()", function () {
|
||||
it("should return the specified component", function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 2]);
|
||||
assert.equal(x.component(1), 2);
|
||||
});
|
||||
});
|
||||
describe("#changeComponent()", function () {
|
||||
it("should return the changed vector", function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 2]);
|
||||
x.changeComponent(1, 5);
|
||||
assert.equal(x.toString(), "(1,5,2)");
|
||||
});
|
||||
});
|
||||
describe("#toString()", function () {
|
||||
it("should return a string representation of the vector", function () {
|
||||
var x = new LinearAlgebra.Vector(4, [9, 0, 3, 1]);
|
||||
assert.equal(x.toString(), "(9,0,3,1)");
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
describe("class Matrix", function () {
|
||||
describe("#component()", function () {
|
||||
it("should return the specified component", function () {
|
||||
var A = new LinearAlgebra.Matrix(2, 2);
|
||||
assert.equal(A.component(0, 1), 0);
|
||||
var B = new LinearAlgebra.Matrix(2, 2, [[1, 2], [3, 4]]);
|
||||
assert.equal(B.component(1, 0), 3);
|
||||
});
|
||||
});
|
||||
describe("#toString()", function () {
|
||||
it("should return a string representation of the matrix", function () {
|
||||
var A = new LinearAlgebra.Matrix(2, 2, [[1, 2], [3, 4]]);
|
||||
assert.equal(A.toString(), "|1,2|\n|3,4|");
|
||||
});
|
||||
});
|
||||
describe("#dimension()", function () {
|
||||
it("should return the dimension of the matrix as number array", function () {
|
||||
var A = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]]);
|
||||
assert.equal(A.dimension()[0], 3);
|
||||
assert.equal(A.dimension()[1], 2);
|
||||
});
|
||||
});
|
||||
describe("#changeComponent()", function () {
|
||||
it("should change the specified component of the matrix", function () {
|
||||
var A = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]]);
|
||||
A.changeComponent(1, 0, 5);
|
||||
assert.equal(A.component(1, 0), 5);
|
||||
});
|
||||
});
|
||||
describe("#equal()", function () {
|
||||
it("should compares the matrices", function () {
|
||||
var A = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]]);
|
||||
var B = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]]);
|
||||
var C = new LinearAlgebra.Matrix(2, 2, [[1, 2], [3, 4]]);
|
||||
var D = new LinearAlgebra.Matrix(2, 2, [[1, 2], [5, 4]]);
|
||||
assert.ok(A.equal(B));
|
||||
assert.ok(!A.equal(C));
|
||||
assert.ok(!C.equal(D));
|
||||
});
|
||||
});
|
||||
describe("#add()", function () {
|
||||
it("should return the result of the matrix addition", function () {
|
||||
var A = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]]);
|
||||
var B = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]]);
|
||||
var C = A.add(B);
|
||||
assert.equal(C.component(1, 0), 6);
|
||||
assert.equal(C.component(1, 1), 8);
|
||||
assert.equal(C.component(0, 0), 2);
|
||||
});
|
||||
});
|
||||
describe("#scalar()", function () {
|
||||
it("should return the result of the matrix-scalar multiplication", function () {
|
||||
var A = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]]);
|
||||
var B = A.scalar(2);
|
||||
var C = new LinearAlgebra.Matrix(3, 2, [[2, 4], [6, 8], [10, 12]]);
|
||||
assert.ok(B.equal(C));
|
||||
});
|
||||
describe('Vector operations', function () {
|
||||
describe('#add()', function () {
|
||||
it('should return vector (2,4,6)', function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 3])
|
||||
var y = new LinearAlgebra.Vector(3, [1, 2, 3])
|
||||
assert.equal((x.add(y)).toString(), '(2,4,6)')
|
||||
})
|
||||
});
|
||||
})
|
||||
describe('#sub()', function () {
|
||||
it('should return vector (0,0,0)', function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 3])
|
||||
var y = new LinearAlgebra.Vector(3, [1, 2, 3])
|
||||
assert.equal((x.sub(y)).toString(), '(0,0,0)')
|
||||
})
|
||||
})
|
||||
describe('#dot()', function () {
|
||||
it('should return the dot-product', function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 3])
|
||||
var y = new LinearAlgebra.Vector(3, [5, 6, 7])
|
||||
assert.equal(x.dot(y), 38)
|
||||
})
|
||||
})
|
||||
describe('#scalar()', function () {
|
||||
it('should return the scalar product', function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 3])
|
||||
assert.equal(x.scalar(2).toString(), '(2,4,6)')
|
||||
})
|
||||
})
|
||||
describe('#norm()', function () {
|
||||
it('should return the normalizes vector', function () {
|
||||
var x = new LinearAlgebra.Vector(4, [9, 0, 3, 1])
|
||||
var y = x.norm()
|
||||
assert.ok(Math.abs(y.component(0) - (9.0 / Math.sqrt(91))) <= 0.01)
|
||||
})
|
||||
})
|
||||
describe('#eulideanLength()', function () {
|
||||
it('should return the eulidean length of the vector', function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 2])
|
||||
assert.ok(Math.abs(x.eulideanLength() - 3) <= 0.001)
|
||||
})
|
||||
})
|
||||
describe('#size()', function () {
|
||||
it('should return the size (not eulidean length!) of the vector', function () {
|
||||
var x = LinearAlgebra.randomVectorInt(10, 1, 5)
|
||||
assert.equal(x.size(), 10)
|
||||
})
|
||||
})
|
||||
describe('#equal()', function () {
|
||||
it('should compares two vectors', function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 2])
|
||||
var y = new LinearAlgebra.Vector(3, [1, 2, 3])
|
||||
assert.ok(x.equal(x))
|
||||
assert.ok(!x.equal(y))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('Methods on vectors', function () {
|
||||
describe('#component()', function () {
|
||||
it('should return the specified component', function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 2])
|
||||
assert.equal(x.component(1), 2)
|
||||
})
|
||||
})
|
||||
describe('#changeComponent()', function () {
|
||||
it('should return the changed vector', function () {
|
||||
var x = new LinearAlgebra.Vector(3, [1, 2, 2])
|
||||
x.changeComponent(1, 5)
|
||||
assert.equal(x.toString(), '(1,5,2)')
|
||||
})
|
||||
})
|
||||
describe('#toString()', function () {
|
||||
it('should return a string representation of the vector', function () {
|
||||
var x = new LinearAlgebra.Vector(4, [9, 0, 3, 1])
|
||||
assert.equal(x.toString(), '(9,0,3,1)')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('class Matrix', function () {
|
||||
describe('#component()', function () {
|
||||
it('should return the specified component', function () {
|
||||
var A = new LinearAlgebra.Matrix(2, 2)
|
||||
assert.equal(A.component(0, 1), 0)
|
||||
var B = new LinearAlgebra.Matrix(2, 2, [[1, 2], [3, 4]])
|
||||
assert.equal(B.component(1, 0), 3)
|
||||
})
|
||||
})
|
||||
describe('#toString()', function () {
|
||||
it('should return a string representation of the matrix', function () {
|
||||
var A = new LinearAlgebra.Matrix(2, 2, [[1, 2], [3, 4]])
|
||||
assert.equal(A.toString(), '|1,2|\n|3,4|')
|
||||
})
|
||||
})
|
||||
describe('#dimension()', function () {
|
||||
it('should return the dimension of the matrix as number array', function () {
|
||||
var A = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]])
|
||||
assert.equal(A.dimension()[0], 3)
|
||||
assert.equal(A.dimension()[1], 2)
|
||||
})
|
||||
})
|
||||
describe('#changeComponent()', function () {
|
||||
it('should change the specified component of the matrix', function () {
|
||||
var A = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]])
|
||||
A.changeComponent(1, 0, 5)
|
||||
assert.equal(A.component(1, 0), 5)
|
||||
})
|
||||
})
|
||||
describe('#equal()', function () {
|
||||
it('should compares the matrices', function () {
|
||||
var A = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]])
|
||||
var B = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]])
|
||||
var C = new LinearAlgebra.Matrix(2, 2, [[1, 2], [3, 4]])
|
||||
var D = new LinearAlgebra.Matrix(2, 2, [[1, 2], [5, 4]])
|
||||
assert.ok(A.equal(B))
|
||||
assert.ok(!A.equal(C))
|
||||
assert.ok(!C.equal(D))
|
||||
})
|
||||
})
|
||||
describe('#add()', function () {
|
||||
it('should return the result of the matrix addition', function () {
|
||||
var A = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]])
|
||||
var B = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]])
|
||||
var C = A.add(B)
|
||||
assert.equal(C.component(1, 0), 6)
|
||||
assert.equal(C.component(1, 1), 8)
|
||||
assert.equal(C.component(0, 0), 2)
|
||||
})
|
||||
})
|
||||
describe('#scalar()', function () {
|
||||
it('should return the result of the matrix-scalar multiplication', function () {
|
||||
var A = new LinearAlgebra.Matrix(3, 2, [[1, 2], [3, 4], [5, 6]])
|
||||
var B = A.scalar(2)
|
||||
var C = new LinearAlgebra.Matrix(3, 2, [[2, 4], [6, 8], [10, 12]])
|
||||
assert.ok(B.equal(C))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user