mirror of
https://github.com/josdejong/mathjs.git
synced 2025-12-08 19:46:04 +00:00
* Add `.js` extension to source file imports * Specify package `exports` in `package.json` Specify package type as `commonjs` (It's good to be specific) * Move all compiled scripts into `lib` directory Remove ./number.js (You can use the compiled ones in `./lib/*`) Tell node that the `esm` directory is type `module` and enable tree shaking. Remove unused files from packages `files` property * Allow importing of package.json * Make library ESM first * - Fix merge conflicts - Refactor `bundleAny` into `defaultInstance.js` and `browserBundle.cjs` - Refactor unit tests to be able to run with plain nodejs (no transpiling) - Fix browser examples * Fix browser and browserstack tests * Fix running unit tests on Node 10 (which has no support for modules) * Fix node.js examples (those are still commonjs) * Remove the need for `browserBundle.cjs` * Generate minified bundle only * [Security] Bump node-fetch from 2.6.0 to 2.6.1 (#1963) Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1. **This update includes a security fix.** - [Release notes](https://github.com/bitinn/node-fetch/releases) - [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> * Cleanup console.log * Add integration tests to test the entry points (commonjs/esm, full/number only) * Create backward compatibility error messages in the files moved/removed since v8 * Describe breaking changes in HISTORY.md * Bump karma from 5.2.1 to 5.2.2 (#1965) Bumps [karma](https://github.com/karma-runner/karma) from 5.2.1 to 5.2.2. - [Release notes](https://github.com/karma-runner/karma/releases) - [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md) - [Commits](https://github.com/karma-runner/karma/compare/v5.2.1...v5.2.2) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Lee Langley-Rees <lee@greenimp.co.uk> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
108 lines
4.4 KiB
JavaScript
108 lines
4.4 KiB
JavaScript
// test print
|
|
import assert from 'assert'
|
|
|
|
import math from '../../../../src/defaultInstance.js'
|
|
|
|
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)')
|
|
})
|
|
})
|