Skip to content

Commit

Permalink
feat: natural-number/ensure
Browse files Browse the repository at this point in the history
  • Loading branch information
medikoo committed Apr 4, 2019
1 parent d08fdd9 commit 6c24d12
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
14 changes: 13 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ Otherwise `TypeError` is thrown.
const ensureSafeInteger = require("type/safe-integer/ensure");

ensureSafeInteger(12.93); // "12"
ensureSafeInteger(9007199254740992); // Thrown TypeError: null is not a number
ensureSafeInteger(9007199254740992); // Thrown TypeError: null is not a safe integer
```

---
Expand All @@ -234,6 +234,18 @@ coerceToNaturalNumber(-120); // null
coerceToNaturalNumber(null); // null
```

##### `natural-number/ensure`

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

```javascript
const ensureNaturalNumber = require("type/natural-number/ensure");

ensureNaturalNumber(12.93); // "12"
ensureNaturalNumber(-230); // Thrown TypeError: null is not a natural number
```

---

### Array
Expand Down
10 changes: 10 additions & 0 deletions natural-number/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 natural number", arguments[1]);
};
19 changes: 19 additions & 0 deletions test/natural-number/ensure.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
"use strict";

var assert = require("chai").assert
, ensureNaturalNumber = require("../../natural-number/ensure");

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

0 comments on commit 6c24d12

Please sign in to comment.