diff --git a/src/js/ripple/amount.js b/src/js/ripple/amount.js index 6e257bb1..0e4f33d7 100644 --- a/src/js/ripple/amount.js +++ b/src/js/ripple/amount.js @@ -602,14 +602,14 @@ Amount.prototype.invert = function() { * \s* // any amount of whitespace * (-)? // optional dash * (\d+) // 1 or more digits - * (\.(\d*))? // optional . character with any amount of digits + * (?:\.(\d*))? // optional . character with any amount of digits * \s* // any amount of whitespace * ([a-f0-9]{40}|[a-z0-9]{3})? // optional 40 character hex string OR 3 letters * \s* // any amount of whitespace * $ // end of string * */ -Amount.human_RE = /^\s*([a-z]{3}|[0-9]{3})?\s*(-)?(\d+)(\.(\d*))?\s*([a-f0-9]{40}|[a-z0-9]{3})?\s*$/i; +Amount.human_RE = /^\s*([a-z]{3}|[0-9]{3})?\s*(-)?(\d+)(?:\.(\d*))?\s*([a-f0-9]{40}|[a-z0-9]{3})?\s*$/i; Amount.prototype.parse_human = function(j, opts) { opts = opts || {}; diff --git a/test/amount-test.js b/test/amount-test.js index 26ec9fc7..93ab0093 100644 --- a/test/amount-test.js +++ b/test/amount-test.js @@ -16,6 +16,22 @@ describe('Amount', function() { assert(Amount.from_json('1').is_positive()); }); }); + describe('from_human', function() { + it('1 XRP', function() { + assert.strictEqual(Amount.from_human("1 XRP").to_text_full(), '1/XRP'); + }); + it('0.1 XRP', function() { + assert.strictEqual(Amount.from_human("0.1 XRP").to_text_full(), '0.1/XRP'); + }); + it('0.1 USD', function() { + assert.strictEqual(Amount.from_human("0.1 USD").to_text_full(), '0.1/USD/NaN'); + }); + }); + describe('from_json', function() { + it('1 XRP', function() { + assert.strictEqual(Amount.from_json("1/XRP").to_text_full(), "1/XRP/NaN"); + }); + }); describe('from_number', function() { it('Number 1', function() { assert.strictEqual(Amount.from_number(1).to_text_full(), '1/1/rrrrrrrrrrrrrrrrrrrrBZbvji');