Skip to content

Commit c1fc359

Browse files
committed
Rebuild function
1 parent 4c371c4 commit c1fc359

File tree

4 files changed

+97
-27
lines changed

4 files changed

+97
-27
lines changed

.prettierrc

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"trailingComma": "all",
3+
"tabWidth": 4,
4+
"semi": false,
5+
"singleQuote": true,
6+
"printWidth": 200
7+
}

package.json

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "is-between-js",
3-
"version": "0.0.1",
3+
"version": "0.0.2",
44
"description": "Check if a number is between a minimum or maximum",
55
"keywords": [
66
"number",
@@ -63,7 +63,9 @@
6363
],
6464
"coveragePathIgnorePatterns": [
6565
"/node_modules/",
66-
"/test/"
66+
"/test/",
67+
"/package.json",
68+
"/package-lock.json"
6769
],
6870
"coverageThreshold": {
6971
"global": {

src/is-between-js.ts

+42-16
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,54 @@
11
// Import here Polyfills if needed. Recommended core-js (npm i -D core-js)
22
// import "core-js/fn/array.find"
33
// ...
4-
export default function isBetween(value: number, min: number, max: number): Boolean {
5-
const valueNumber = parseFloat(value.toString())
6-
const minNumber = parseFloat(min.toString())
7-
const maxNumber = parseFloat(max.toString())
84

9-
const equal = valueNumber === minNumber || minNumber === maxNumber
5+
export class Between {
6+
valueNumber: number = 0
7+
minNumber: number = 0
8+
maxNumber: number = 0
109

11-
if (isNaN(valueNumber) || isNaN(minNumber) || isNaN(maxNumber)) {
12-
throw new Error('isBetween() expects numerical input.')
10+
private toFloat(input: number) {
11+
return parseFloat(input.toString())
1312
}
1413

15-
if (minNumber > maxNumber) {
16-
throw new Error('Not a valid range: ' + maxNumber + ' < ' + minNumber + '.')
14+
value(val: number): Between {
15+
this.valueNumber = this.toFloat(val)
16+
return this
17+
}
18+
min(val: number): Between {
19+
this.minNumber = this.toFloat(val)
20+
return this
21+
}
22+
max(val: number): Between {
23+
this.maxNumber = this.toFloat(val)
24+
return this
1725
}
1826

19-
const inRange = valueNumber > minNumber && valueNumber < maxNumber
20-
return equal || inRange
21-
}
27+
private isEqual() {
28+
return this.valueNumber === this.minNumber || this.minNumber === this.maxNumber
29+
}
30+
31+
private isRange(): boolean {
32+
return this.valueNumber > this.minNumber && this.valueNumber < this.maxNumber
33+
}
2234

23-
function isFalsy(input: any): Boolean {
24-
return input === null || input === undefined || input.length === 0
35+
public calculate(): boolean {
36+
if (isNaN(this.valueNumber) || isNaN(this.minNumber) || isNaN(this.maxNumber)) {
37+
throw new Error('isBetween() expects numerical input.')
38+
}
39+
40+
if (this.minNumber > this.maxNumber) {
41+
throw new Error('Not a valid range: ' + this.maxNumber + ' < ' + this.minNumber + '.')
42+
}
43+
44+
return this.isEqual() || this.isRange()
45+
}
46+
public calc(): boolean {
47+
return this.calculate()
48+
}
2549
}
26-
function isTruthy(input: any): Boolean {
27-
return input !== null || input !== undefined || input.length !== 0
50+
51+
export function between(value: number) {
52+
const func = new Between()
53+
return func.value(value)
2854
}

test/is-between-js.test.ts

+44-9
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,59 @@
1-
import isBetween from '../src/is-between-js'
1+
import { between } from '../src/is-between-js'
22

33
/**
44
* Dummy test
55
*/
66
describe('isBetween test', () => {
77
it('works if isBetween is truthy', () => {
8-
expect(isBetween).toBeDefined()
8+
expect(between).toBeDefined()
99
})
1010

1111
it('isBetween returns true', () => {
12-
expect(isBetween(10, 0, 100)).toBe(true)
13-
expect(isBetween(1, 0, 10)).toBe(true)
14-
expect(isBetween(-5, -10, 10)).toBe(true)
15-
expect(isBetween(1.2, 0, 2)).toBe(true)
16-
expect(isBetween(3.52, 3.52, 3.53)).toBe(true)
12+
expect(
13+
between(10)
14+
.min(0)
15+
.max(100)
16+
.calc()
17+
).toBe(true)
18+
expect(
19+
between(1)
20+
.min(0)
21+
.max(10)
22+
.calc()
23+
).toBe(true)
24+
expect(
25+
between(-5)
26+
.min(-10)
27+
.max(10)
28+
.calc()
29+
).toBe(true)
30+
expect(
31+
between(1.2)
32+
.min(0)
33+
.max(2)
34+
.calc()
35+
).toBe(true)
36+
expect(
37+
between(3.52)
38+
.min(3.52)
39+
.max(3.53)
40+
.calc()
41+
).toBe(true)
1742
})
1843
it('isBetween returns false', () => {
19-
expect(isBetween(10, 0, 9)).toBe(false)
44+
expect(
45+
between(10)
46+
.min(0)
47+
.max(9)
48+
.calc()
49+
).toBe(false)
2050
})
2151
it('isBetween returns error', () => {
22-
expect(() => isBetween(10, 15, 9)).toThrow()
52+
expect(() =>
53+
between(10)
54+
.min(15)
55+
.max(9)
56+
.calc()
57+
).toThrow()
2358
})
2459
})

0 commit comments

Comments
 (0)