tests - partial

This commit is contained in:
rjbaucells 2015-05-12 20:51:43 -04:00
parent a85cbee709
commit dce3aeee5b
4 changed files with 67 additions and 44 deletions

View File

@ -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) {

View 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;

View File

@ -1,4 +1,7 @@
module.exports = [
// type
require('./prototype/Set'),
// construction function
require('./function/set')
];

View File

@ -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);
});
});