From dce3aeee5bba9c8afbf3a6b590f2cd17a952b272 Mon Sep 17 00:00:00 2001 From: rjbaucells Date: Tue, 12 May 2015 20:51:43 -0400 Subject: [PATCH] tests - partial --- lib/type/index/prototype/Index.js | 1 - lib/type/set/function/set.js | 22 ++++++++ lib/type/set/index.js | 3 ++ test/type/index/Index.test.js | 85 +++++++++++++++---------------- 4 files changed, 67 insertions(+), 44 deletions(-) create mode 100644 lib/type/set/function/set.js diff --git a/lib/type/index/prototype/Index.js b/lib/type/index/prototype/Index.js index 62c6fd73f..6eb2d595c 100644 --- a/lib/type/index/prototype/Index.js +++ b/lib/type/index/prototype/Index.js @@ -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) { diff --git a/lib/type/set/function/set.js b/lib/type/set/function/set.js new file mode 100644 index 000000000..8d8568d2d --- /dev/null +++ b/lib/type/set/function/set.js @@ -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; diff --git a/lib/type/set/index.js b/lib/type/set/index.js index e1b7d2417..77908ce58 100644 --- a/lib/type/set/index.js +++ b/lib/type/set/index.js @@ -1,4 +1,7 @@ module.exports = [ // type require('./prototype/Set'), + + // construction function + require('./function/set') ]; diff --git a/test/type/index/Index.test.js b/test/type/index/Index.test.js index d2ac55f4f..a27b00cd6 100644 --- a/test/type/index/Index.test.js +++ b/test/type/index/Index.test.js @@ -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); }); });