Skip to content

Commit

Permalink
feat: finite/ensure
Browse files Browse the repository at this point in the history
  • Loading branch information
medikoo committed Apr 3, 2019
1 parent 4638a39 commit 51e4174
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 0 deletions.
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,18 @@ coerceToFinite(Infinity); // null
coerceToFinite(null); // null
```

##### `finite/ensure`

If given argument is a finite number coercible value (via [`finite/coerce`](#finitecoerce)) returns result number.
Otherwise `TypeError` is thrown.

```javascript
const ensureFinite = require("type/finite/ensure");

ensureFinite(12); // "12"
ensureFinite(null); // Thrown TypeError: null is not a number
```

#### Object

_Object_ is assumed to be any non-primitive JavaScript value
Expand Down
10 changes: 10 additions & 0 deletions finite/ensure.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
"use strict";

var resolveException = require("../lib/resolve-exception")
, coerce = require("./coerce");

module.exports = function (value/*, options*/) {
var coerced = coerce(value);
if (coerced !== null) return coerced;
return resolveException(value, "%v is not a finite number", arguments[1]);
};
17 changes: 17 additions & 0 deletions test/finite/ensure.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
"use strict";

var assert = require("chai").assert
, ensureFinite = require("../../finite/ensure");

describe("finite/ensure", function () {
it("Should return coerced value", function () { assert.equal(ensureFinite("12.23"), 12.23); });
it("Should crash on no value", function () {
try {
ensureFinite(null);
throw new Error("Unexpected");
} catch (error) {
assert.equal(error.name, "TypeError");
assert.equal(error.message, "null is not a finite number");
}
});
});

0 comments on commit 51e4174

Please sign in to comment.