UNPKG

golos-lib-js

Version:

Golos-js the JavaScript library with API for GOLOS blockchain

260 lines (196 loc) 7.9 kB
import { assert } from 'chai'; import { importNativeLib } from '../../src/'; import { unloadNativeLib } from '../../src/core'; import { Asset, _Asset, AssetEditor, _AssetEditor } from '../../src/utils'; describe('golos.utils.AssetEditor', function() { beforeEach(function() { unloadNativeLib(); }); it('asset-like constructor', async function() { await importNativeLib() var av = AssetEditor(0, 3, 'GOLOS') assert.equal(av.asset.amount, 0) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '') assert.equal(av.hasChange, true) var av = AssetEditor(123456, 3, 'GOLOS') assert.equal(av.asset.amount, 123456) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '123.456') assert.equal(av.hasChange, true) }) it('asset-like constructor + lib loading promise', async function() { var av = await AssetEditor(123456, 3, 'GOLOS') assert.equal(av.asset.amount, 123456) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '123.456') assert.equal(av.hasChange, true) }) it('asset-based constructor', async function() { await importNativeLib() var a = Asset(0, 3, 'GOLOS') var av = AssetEditor(a) assert.equal(av.asset.amount, 0) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '') assert.equal(av.hasChange, true) a.amount = 100; assert.equal(a.amount, 100); assert.equal(av.asset.amount, 0); var a = Asset(123456, 3, 'GOLOS') var av = AssetEditor(a) assert.equal(av.asset.amount, 123456) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '123.456') assert.equal(av.hasChange, true) }) it('instanceof test', async function() { var av = AssetEditor(1000, 3, 'GOLOS') assert.equal(av instanceof AssetEditor, false) assert.equal(av instanceof _AssetEditor, false) assert.equal(av instanceof Promise, true) av = await av assert.equal(av instanceof AssetEditor, false) assert.equal(av instanceof _AssetEditor, true) var av = AssetEditor(1000, 3, 'GOLOS') assert.equal(av instanceof AssetEditor, false) assert.equal(av instanceof _AssetEditor, true) }) it('float case', async function() { await importNativeLib() var av = AssetEditor(0, 3, 'GOLOS') av = av.withChange('123') assert.equal(av.asset.amount, 123000) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '123') assert.equal(av.hasChange, true) av = av.withChange('123.') assert.equal(av.asset.amount, 123000) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '123.') assert.equal(av.hasChange, true) av = av.withChange('123.456') assert.equal(av.asset.amount, 123456) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '123.456') assert.equal(av.hasChange, true) av = av.withChange('123.456.') assert.equal(av.asset.amount, 123456) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '123.456') assert.equal(av.hasChange, false) av = av.withChange('123,456.') assert.equal(av.asset.amount, 123456) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '123.456') assert.equal(av.hasChange, false) }) it('clearing case', async function() { await importNativeLib() var av = AssetEditor(0, 3, 'GOLOS') av = av.withChange('123') assert.equal(av.asset.amount, 123000) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '123') assert.equal(av.hasChange, true) av = av.withChange('') assert.equal(av.asset.amount, 0) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '') assert.equal(av.hasChange, true) }) it('zeroing case', async function() { await importNativeLib() var av = AssetEditor(0, 3, 'GOLOS') av = av.withChange('123') assert.equal(av.asset.amount, 123000) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '123') assert.equal(av.hasChange, true) av = av.withChange('0') assert.equal(av.asset.amount, 0) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '0') assert.equal(av.hasChange, true) }) it('invalid characters + extra spaces', async function() { await importNativeLib() var av = AssetEditor(0, 3, 'GOLOS') av = av.withChange('123') assert.equal(av.asset.amount, 123000) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '123') assert.equal(av.hasChange, true) av = av.withChange('123f') assert.equal(av.asset.amount, 123000) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '123') assert.equal(av.hasChange, false) av = av.withChange(' 123.456 ') assert.equal(av.asset.amount, 123456) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '123.456') assert.equal(av.hasChange, true) }) it('NaN', async function() { await importNativeLib() var av = AssetEditor(0, 3, 'GOLOS') av = av.withChange('f') assert.equal(av.asset.amount, 0) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '') assert.equal(av.hasChange, false) }) it('negative cases', async function() { await importNativeLib() var av = AssetEditor(1, 3, 'GOLOS') av = av.withChange('-') assert.equal(av.asset.amount, 0) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '-') assert.equal(av.hasChange, true) av = av.withChange('-4') assert.equal(av.asset.amount, -4000) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '-4') assert.equal(av.hasChange, true) av = av.withChange('-45.67') assert.equal(av.asset.amount, -45670) assert.equal(av.asset.precision, 3) assert.equal(av.asset.symbol, 'GOLOS') assert.equal(av.amountStr, '-45.67') assert.equal(av.hasChange, true) }) it('toJSON + toString', async function() { await importNativeLib() var av = AssetEditor(1000, 3, 'GOLOS') av = av.withChange('1.') assert.equal(JSON.stringify({ av }), '{"av":"1.000 GOLOS"}') assert.equal(av.toString(), JSON.stringify({ asset: '1.000 GOLOS', amount_str: '1.', })) }) })