bitcore-wallet-service/bit-wallet/test/cli.js

115 lines
2.5 KiB
JavaScript

'use strict';
var _ = require('lodash');
var chai = require('chai');
var sinon = require('sinon');
var should = chai.should();
var CliUtils = require('../cli-utils');
describe('CliUtils', function() {
describe('#parseMN', function() {
it('should successfully parse m & n', function() {
var texts = {
'1-1': [1, 1],
'1-of-1': [1, 1],
'1of1': [1, 1],
'1-OF-2': [1, 2],
'1OF2': [1, 2],
' 2-2': [2, 2],
'2-3 ': [2, 3],
'10-10': [10, 10],
'10-of-10': [10, 10],
};
_.each(texts, function(expected, text) {
var result = CliUtils.parseMN(text);
result.should.deep.equal(expected);
});
});
it('should fail to parse incorrect m & n', function() {
var texts = [
'',
' ',
'1',
'x-1',
'1-x',
'of-1-1',
'2-2-of',
'1-1-1',
' 1_1 ',
'2-1',
'2-of-1',
'-1-2',
'1--2',
'x-of-2',
];
_.each(texts, function(text) {
var valid = true;
try {
CliUtils.parseMN(text);
} catch (e) {
valid = false;
}
valid.should.be.false;
});
});
});
describe('#parseAmount', function() {
it('should successfully parse amounts', function() {
var texts = {
'1': 1,
'0': 0,
'1.': 1,
'000000.0000': 0,
'123': 123,
'123sat': 123,
'123 sat': 123,
'00123 sat': 123,
'1.23bit': 123,
'1.23 bit': 123,
'0 bit': 0,
'.45bit': 45,
'1btc': 100000000,
' 1btc': 100000000,
'9999btc': 999900000000,
'0.00000001btc': 1,
'00000.00000001BTC': 1,
'0.00000001 BTC': 1,
'0.123btc': 12300000,
'0.123 bTc': 12300000,
};
_.each(texts, function(satoshi, text) {
var amount = CliUtils.parseAmount(text);
amount.should.equal(satoshi);
});
});
it('should fail to parse incorrect amounts', function() {
var texts = [
'',
' ',
'btc',
'1satoshi',
'no-number',
'-3',
'1 b t c',
'btc1',
'btc 1',
'1,234',
'0.000000001btc',
'0.1sat',
'0.123bit',
'2.000000009btc',
];
_.each(texts, function(text) {
var valid = true;
try {
CliUtils.parseAmount(text);
} catch (e) {
valid = false;
}
valid.should.be.false;
});
});
});
});