mirror of
https://github.com/josdejong/mathjs.git
synced 2026-01-25 15:07:57 +00:00
tests - partial
This commit is contained in:
parent
a85cbee709
commit
dce3aeee5b
1
lib/type/index/prototype/Index.js
vendored
1
lib/type/index/prototype/Index.js
vendored
@ -1,7 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
var clone = require('../../../util/object').clone;
|
||||
var format = require('../../../util/number').format;
|
||||
var isInteger = require('../../../util/number').isInteger;
|
||||
|
||||
function factory (type) {
|
||||
|
||||
22
lib/type/set/function/set.js
Normal file
22
lib/type/set/function/set.js
Normal file
@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
function factory (type, config, load, typed) {
|
||||
/**
|
||||
* Create an set.
|
||||
*
|
||||
* Syntax:
|
||||
*
|
||||
* math.set([1, 2, 3])
|
||||
*
|
||||
* @param {Array | Matrix} values The set values.
|
||||
* @return {Set} Returns the created set
|
||||
*/
|
||||
return typed('set', {
|
||||
'Array | Matrix': function (values) {
|
||||
return new type.Set(values);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
exports.name = 'set';
|
||||
exports.factory = factory;
|
||||
@ -1,4 +1,7 @@
|
||||
module.exports = [
|
||||
// type
|
||||
require('./prototype/Set'),
|
||||
|
||||
// construction function
|
||||
require('./function/set')
|
||||
];
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
var assert = require('assert');
|
||||
var math = require('../../../index');
|
||||
var Index = math.type.Index;
|
||||
var Matrix = math.type.Matrix;
|
||||
var Range = math.type.Range;
|
||||
|
||||
describe('Index', function () {
|
||||
@ -19,7 +18,7 @@ describe('Index', function () {
|
||||
});
|
||||
|
||||
it('should create an Index from a Range', function () {
|
||||
assert.deepEqual(new Index(new Range(0, 10))._ranges, [{start:0, end:10, step:1}]);
|
||||
assert.deepEqual(new Index(math.range(0, 10))._ranges, [{start:0, end:10, step:1}]);
|
||||
});
|
||||
|
||||
it('should create an Index from a Matrix', function () {
|
||||
@ -27,49 +26,49 @@ describe('Index', function () {
|
||||
});
|
||||
|
||||
it('should create an Index from an array with ranges', function () {
|
||||
var index = Index.create([new Range(0, 10), 4]);
|
||||
var index = Index.create([math.range(0, 10), 4]);
|
||||
assert(index instanceof Index);
|
||||
assert.deepEqual(index._ranges, [{start:0, end:10, step:1}, {start:4, end:5, step:1}]);
|
||||
});
|
||||
|
||||
it('should calculate the size of an Index', function () {
|
||||
assert.deepEqual(new Index([0, 10]).size(), [10]);
|
||||
assert.deepEqual(new Index([0, 10, 2]).size(), [5]);
|
||||
assert.deepEqual(new Index([4, 0, -1]).size(), [4]);
|
||||
assert.deepEqual(new Index([0, 10], [4,6]).size(), [10, 2]);
|
||||
assert.deepEqual(new Index([0, 10], [4,6], [3, -1, -1]).size(), [10, 2, 4]);
|
||||
assert.deepEqual(new Index([0, 0]).size(), [0]);
|
||||
assert.deepEqual(new Index([0, -1]).size(), [0]);
|
||||
assert.deepEqual(new Index(math.range(0, 10)).size(), [10]);
|
||||
assert.deepEqual(new Index(math.range(0, 10, 2)).size(), [5]);
|
||||
assert.deepEqual(new Index(math.range(4, 0, -1)).size(), [4]);
|
||||
assert.deepEqual(new Index(math.range(0, 10), math.range(4, 6)).size(), [10, 2]);
|
||||
assert.deepEqual(new Index(math.range(0, 10), math.range(4, 6), math.range(3, -1, -1)).size(), [10, 2, 4]);
|
||||
assert.deepEqual(new Index(math.range(0, 0)).size(), [0]);
|
||||
assert.deepEqual(new Index(math.range(0, -1)).size(), [0]);
|
||||
assert.deepEqual(new Index().size(), []);
|
||||
});
|
||||
|
||||
it('should calculate the minimum values of an Index', function () {
|
||||
assert.deepEqual(new Index([2, 10]).min(), [2]);
|
||||
assert.deepEqual(new Index([4, 0, -1]).min(), [1]);
|
||||
assert.deepEqual(new Index([0, 10], [4,6]).min(), [0, 4]);
|
||||
assert.deepEqual(new Index([0, 10], [4,6], [3, -1, -1]).min(), [0, 4, 0]);
|
||||
assert.deepEqual(new Index(math.range(2, 10)).min(), [2]);
|
||||
assert.deepEqual(new Index(math.range(4, 0, -1)).min(), [1]);
|
||||
assert.deepEqual(new Index(math.range(0, 10), math.range(4, 6)).min(), [0, 4]);
|
||||
assert.deepEqual(new Index(math.range(0, 10), math.range(4, 6), math.range(3, -1, -1)).min(), [0, 4, 0]);
|
||||
assert.deepEqual(new Index().min(), []);
|
||||
});
|
||||
|
||||
it('should calculate the minimum values of an Index', function () {
|
||||
assert.deepEqual(new Index([2, 10]).max(), [9]);
|
||||
assert.deepEqual(new Index([4, 0, -1]).max(), [4]);
|
||||
assert.deepEqual(new Index([0, 10], [4,6]).max(), [9, 5]);
|
||||
assert.deepEqual(new Index([0, 10], [4,6], [3, -1, -1]).max(), [9, 5, 3]);
|
||||
assert.deepEqual(new Index(math.range(2, 10)).max(), [9]);
|
||||
assert.deepEqual(new Index(math.range(4, 0, -1)).max(), [4]);
|
||||
assert.deepEqual(new Index(math.range(0, 10), math.range(4, 6)).max(), [9, 5]);
|
||||
assert.deepEqual(new Index(math.range(0, 10), math.range(4, 6), math.range(3, -1, -1)).max(), [9, 5, 3]);
|
||||
assert.deepEqual(new Index().max(), []);
|
||||
});
|
||||
|
||||
it('should test whether an Index contains a scalar', function () {
|
||||
assert.equal(new Index(2, 5, 2).isScalar(), true);
|
||||
assert.equal(new Index(2).isScalar(), true);
|
||||
assert.equal(new Index([2, 10]).isScalar(), false);
|
||||
assert.equal(new Index(2, [0, 4], 2).isScalar(), false);
|
||||
assert.equal(new Index([0, 2], [0, 4]).isScalar(), false);
|
||||
assert.equal(new Index(math.range(2, 10)).isScalar(), false);
|
||||
assert.equal(new Index(2, math.range(0, 4), 2).isScalar(), false);
|
||||
assert.equal(new Index(math.range(0, 2), math.range(0, 4)).isScalar(), false);
|
||||
assert.equal(new Index().isScalar(), true);
|
||||
});
|
||||
|
||||
it('should clone an Index', function () {
|
||||
var index1 = new Index(2, [0, 4]);
|
||||
var index1 = new Index(2, math.range(0, 4));
|
||||
var index2 = index1.clone(0);
|
||||
|
||||
assert.deepEqual(index1, index2);
|
||||
@ -87,17 +86,17 @@ describe('Index', function () {
|
||||
});
|
||||
|
||||
it('toJSON', function () {
|
||||
assert.deepEqual(new Index([0,10], 2).toJSON(),
|
||||
assert.deepEqual(new Index(math.range(0, 10), 2).toJSON(),
|
||||
{'mathjs': 'Index', ranges: [
|
||||
new Range(0, 10, 1),
|
||||
new Range(2, 3, 1)
|
||||
math.range(0, 10, 1),
|
||||
math.range(2, 3, 1)
|
||||
]});
|
||||
});
|
||||
|
||||
it('fromJSON', function () {
|
||||
var json = {ranges: [
|
||||
new Range(0, 10, 1),
|
||||
new Range(2, 3, 1)
|
||||
math.range(0, 10, 1),
|
||||
math.range(2, 3, 1)
|
||||
]};
|
||||
var i1 = new Index([0,10], 2);
|
||||
|
||||
@ -110,18 +109,18 @@ describe('Index', function () {
|
||||
var index = new Index(2, [0, 8, 2], [3,-1,-1]);
|
||||
|
||||
assert(index.range(0) instanceof Range);
|
||||
assert.deepEqual(index.range(0), new Range(2, 3));
|
||||
assert.deepEqual(index.range(0), math.range(2, 3));
|
||||
|
||||
assert(index.range(1) instanceof Range);
|
||||
assert.deepEqual(index.range(1), new Range(0, 8, 2));
|
||||
assert.deepEqual(index.range(1), math.range(0, 8, 2));
|
||||
|
||||
assert(index.range(2) instanceof Range);
|
||||
assert.deepEqual(index.range(2), new Range(3, -1, -1));
|
||||
assert.deepEqual(index.range(2), math.range(3, -1, -1));
|
||||
assert.strictEqual(index.range(3), null);
|
||||
});
|
||||
|
||||
it('should iterate over all ranges', function () {
|
||||
var index = new Index(2, [0, 8, 2], [3,-1,-1]);
|
||||
var index = new Index(2, math.range(0, 8, 2), math.range(3,-1,-1));
|
||||
|
||||
var log = [];
|
||||
index.forEach(function (range, i, obj) {
|
||||
@ -133,9 +132,9 @@ describe('Index', function () {
|
||||
});
|
||||
|
||||
assert.deepEqual(log, [
|
||||
{range: new Range(2, 3), index: 0},
|
||||
{range: new Range(0, 8, 2), index: 1},
|
||||
{range: new Range(3, -1, -1), index: 2}
|
||||
{range: math.set([2]), index: 0},
|
||||
{range: math.range(0, 8, 2), index: 1},
|
||||
{range: math.range(3, -1, -1), index: 2}
|
||||
]);
|
||||
});
|
||||
|
||||
@ -150,16 +149,16 @@ describe('Index', function () {
|
||||
});
|
||||
|
||||
it('should expand an index into an array', function () {
|
||||
assert.deepEqual(new Index([2, 5]).toArray(), [
|
||||
assert.deepEqual(new Index(math.range(2, 5)).toArray(), [
|
||||
[2, 3, 4]
|
||||
]);
|
||||
|
||||
assert.deepEqual(new Index([2, 5], [0, 8, 2]).toArray(), [
|
||||
assert.deepEqual(new Index(math.range(2, 5), math.range(0, 8, 2)).toArray(), [
|
||||
[2, 3, 4],
|
||||
[0, 2, 4, 6]
|
||||
]);
|
||||
|
||||
assert.deepEqual(new Index(2, [0, 8, 2], [3,-1,-1], [2, 4, 0]).toArray(), [
|
||||
assert.deepEqual(new Index(2, math.range(0, 8, 2), math.range(3,-1,-1), math.range(2, 4, 0)).toArray(), [
|
||||
[2],
|
||||
[0, 2, 4, 6],
|
||||
[3, 2, 1, 0],
|
||||
@ -168,7 +167,7 @@ describe('Index', function () {
|
||||
});
|
||||
|
||||
it('valueOf should return the expanded array', function () {
|
||||
assert.deepEqual(new Index(2, [0, 8, 2], [3,-1,-1]).valueOf(), [
|
||||
assert.deepEqual(new Index(2, math.range(0, 8, 2), math.range(3,-1,-1)).valueOf(), [
|
||||
[2],
|
||||
[0, 2, 4, 6],
|
||||
[3, 2, 1, 0]
|
||||
@ -180,13 +179,13 @@ describe('Index', function () {
|
||||
});
|
||||
|
||||
it('should throw an error on non-integer ranges', function () {
|
||||
assert.throws(function () {new Index([0,4.5])});
|
||||
assert.throws(function () {new Index([0.1,4])});
|
||||
assert.throws(function () {new Index([4,2,0.1])});
|
||||
assert.throws(function () {new Index([0,4.5]);});
|
||||
assert.throws(function () {new Index([0.1,4]);});
|
||||
assert.throws(function () {new Index([4,2,0.1]);});
|
||||
});
|
||||
|
||||
it('should throw an error on unsupported type of arguments', function () {
|
||||
assert.throws(function () {new Index('string')}, TypeError);
|
||||
assert.throws(function () {new Index(new Date())}, TypeError);
|
||||
assert.throws(function () {new Index('string');}, TypeError);
|
||||
assert.throws(function () {new Index(new Date());}, TypeError);
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user