mathjs/test/function/string/print.test.js
greenkeeper[bot] c5971b371a Update standard to the latest version 🚀 (#1226)
* chore(package): update standard to version 12.0.0

* update to new lint version with --fix

I believe this mainly adds whitespace to `{}`'s.

* Replace assert.equal with assert.strictEqual

This breaks a lot of tests which I will endevour to fix in the next
commits.

* Fix most errors due to assert.strictEquals

Some instances of `strictEquals` are replaced by `deepEquals`.
`toString` has been used to make some string comparisions explicit.
Tests will still fail untill #1236 and #1237 are fixed.

* Fix assertion erros due to -0

With node 10, assert.strictEqual no longer considers `0 === -0`.
I missed these first time round as I was using node 8.

* Put toString correct side of bracket

I was converting the constructor to a string rather
than the result of the computation. Oops.

* Fixed #1236: quantileSeq has inconsistant return

* Update package-lock

* Fixed #1237: norm sometimes returning a complex number instead of number

* Fix cli tests

* More changes for standardjs, and fixes in unit tests
2018-09-08 16:33:58 +02:00

107 lines
4.4 KiB
JavaScript

// test print
const assert = require('assert')
const math = require('../../../src/main')
describe('print', function () {
it('should interpolate values in a template (object template)', function () {
assert.strictEqual(math.print('hello, $name!', { name: 'user' }), 'hello, user!')
})
it('should interpolate values from a nested object in a template (object template)', function () {
assert.strictEqual(math.print('hello, $name.first $name.last!', {
name: {
first: 'first',
last: 'last'
}
}), 'hello, first last!')
})
it('should interpolate values from a nested object in a template (mixed object/array template)', function () {
assert.strictEqual(math.print('hello$separator.0 $name.first $name.last!', {
name: {
first: 'first',
last: 'last'
},
separator: [',']
}), 'hello, first last!')
})
it('should round interpolate values with provided precision (object template)', function () {
assert.strictEqual(math.print('pi=$pi', { pi: math.pi }, 3), 'pi=3.14')
})
it('should leave unresolved variables untouched (object template)', function () {
assert.strictEqual(math.print('$a,$b', { b: 2 }), '$a,2')
assert.strictEqual(math.print('$a.value,$b.value', { a: {}, b: { value: 2 } }), '$a.value,2')
})
it('should leave unresolved variables untouched (mixed object/array template)', function () {
assert.strictEqual(math.print('$a.0,$b.value', { a: [], b: { value: 2 } }), '$a.0,2')
})
it('should leave trailing point intact (object template)', function () {
assert.strictEqual(math.print('Hello $name.', { name: 'user' }), 'Hello user.')
assert.strictEqual(math.print('Hello $name...', { name: 'user' }), 'Hello user...')
assert.strictEqual(math.print('Hello $user.name.', { user: { name: 'user' } }), 'Hello user.')
})
it('should interpolate values in a template (array template)', function () {
assert.strictEqual(math.print('hello, $0!', ['user']), 'hello, user!')
})
it('should interpolate values from a nested object in a template (array template)', function () {
assert.strictEqual(math.print('hello, $0.0 $0.1!', [
['first', 'last']
]), 'hello, first last!')
})
it('should interpolate values from a nested object in a template (mixed array/object template)', function () {
assert.strictEqual(math.print('hello$1.separator $0.0 $0.1!', [
['first', 'last'],
{
separator: ','
}
]), 'hello, first last!')
})
it('should round interpolate values with provided precision (array template)', function () {
assert.strictEqual(math.print('pi=$0', [math.pi], 3), 'pi=3.14')
})
it('should leave unresolved variables untouched (array template)', function () {
assert.strictEqual(math.print('$1,$0', [2]), '$1,2')
assert.strictEqual(math.print('$0.0,$1.0', [[], [2]]), '$0.0,2')
})
it('should leave unresolved variables untouched (mixed array/object template)', function () {
assert.strictEqual(math.print('$0.name,$1.0', [{}, [2]]), '$0.name,2')
})
it('should leave trailing point intact (array template)', function () {
assert.strictEqual(math.print('Hello $0.', ['user']), 'Hello user.')
assert.strictEqual(math.print('Hello $0...', ['user']), 'Hello user...')
assert.strictEqual(math.print('Hello $0.0.', [['user']]), 'Hello user.')
assert.strictEqual(math.print('Values: $0, $1', [[1, 2], [3, 4]]), 'Values: [1, 2], [3, 4]')
})
it('should leave trailing point intact (matrix)', function () {
assert.strictEqual(math.print('Hello $0.', math.matrix(['user'])), 'Hello user.')
assert.strictEqual(math.print('Values: $0, $1', math.matrix([[1, 2], [3, 4]])), 'Values: [1, 2], [3, 4]')
})
it('should throw an error on wrong number of arguments', function () {
assert.throws(function () { math.print() }, /TypeError: Too few arguments/)
assert.throws(function () { math.print('') }, /TypeError: Too few arguments/)
assert.throws(function () { math.print('', {}, 6, 2) }, /TypeError: Too many arguments/)
})
it('should throw an error on wrong type of arguments', function () {
assert.throws(function () { math.print('', 2) }, /TypeError: Unexpected type of argument/)
})
it('should LaTeX print', function () {
const expression = math.parse('print(template,values)')
assert.strictEqual(expression.toTex(), '\\mathrm{print}\\left( template, values\\right)')
})
})