Skip to content
This repository was archived by the owner on Oct 20, 2021. It is now read-only.

Commit 7e3616e

Browse files
feat(rules): Added BooleanInstance rule
1 parent ed08df2 commit 7e3616e

8 files changed

Lines changed: 113 additions & 1 deletion

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ The library can be loaded either as a standalone script, or through an [AMD](htt
8484
- [ArrayInstance](docs/array-instance.md)
8585
- [ArrayType](docs/array-type.md)
8686
- [ArrayVal](docs/array-val.md)
87+
- [BooleanInstance](docs/boolean-instance.md)
8788
- [BooleanType](docs/boolean-type.md)
8889
- [BooleanVal](docs/boolean-val.md)
8990
- [Cnh](docs/cnh.md)

awesome-validator.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/boolean-instance.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Boolean Instance
2+
3+
Validates if the given input is boolean instance.
4+
5+
Valid values:
6+
7+
```js
8+
validator.booleanInstance().validate(true);
9+
validator.booleanInstance().validate(false);
10+
```
11+
12+
Invalid values:
13+
14+
```js
15+
validator.booleanInstance().validate(undefined);
16+
validator.booleanInstance().validate(null);
17+
validator.booleanInstance().validate('foo');
18+
validator.booleanInstance().validate(0);
19+
validator.booleanInstance().validate(1);
20+
validator.booleanInstance().validate(-1);
21+
validator.booleanInstance().validate(1.1);
22+
validator.booleanInstance().validate(-1.1);
23+
validator.booleanInstance().validate([]);
24+
validator.booleanInstance().validate({});
25+
validator.booleanInstance().validate(new Array());
26+
validator.booleanInstance().validate(new Object());
27+
validator.booleanInstance().validate(Object.create(null));
28+
```

src/rules/boolean-instance.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { AbstractConstructotName } from './abstract-constructor-name';
2+
3+
export class BooleanInstance extends AbstractConstructotName {
4+
5+
/**
6+
* Get constructor name.
7+
*/
8+
protected getConstructorName(): string {
9+
return 'Boolean';
10+
}
11+
}

src/rules/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export * from './any-of';
55
export * from './array-instance';
66
export * from './array-type';
77
export * from './array-val';
8+
export * from './boolean-instance';
89
export * from './boolean-type';
910
export * from './boolean-val';
1011
export * from './cnh';

src/validator.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@ export class Validator extends rules.AllOf {
5454
return this.addRule(new rules.ArrayVal());
5555
}
5656

57+
/**
58+
* Boolean Instance.
59+
*/
60+
public booleanInstance(): this {
61+
return this.addRule(new rules.BooleanInstance());
62+
}
63+
5764
/**
5865
* Boolean Type.
5966
*/

test/rules/boolean-instance.ts

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { assert } from 'chai';
2+
3+
import { AbstractRule } from '../../src/rules/abstract-rule';
4+
import { BooleanInstance } from '../../src/rules/boolean-instance';
5+
6+
describe('Boolean Instance', () => {
7+
8+
let booleanInstance: BooleanInstance;
9+
10+
beforeEach(() => {
11+
booleanInstance = new BooleanInstance();
12+
});
13+
14+
it('is rule', () => {
15+
assert.instanceOf(booleanInstance, AbstractRule);
16+
});
17+
18+
it('values is valid', () => {
19+
assert.isTrue(booleanInstance.validate(Boolean()));
20+
assert.isTrue(booleanInstance.validate(Boolean(true)));
21+
assert.isTrue(booleanInstance.validate(Boolean(false)));
22+
assert.isTrue(booleanInstance.validate(Boolean('1')));
23+
assert.isTrue(booleanInstance.validate(Boolean('0')));
24+
assert.isTrue(booleanInstance.validate(true));
25+
assert.isTrue(booleanInstance.validate(false));
26+
});
27+
28+
it('values is not valid', () => {
29+
assert.isFalse(booleanInstance.validate(String()));
30+
assert.isFalse(booleanInstance.validate(Number()));
31+
assert.isFalse(booleanInstance.validate(null));
32+
assert.isFalse(booleanInstance.validate(undefined));
33+
assert.isFalse(booleanInstance.validate('true'));
34+
assert.isFalse(booleanInstance.validate('false'));
35+
assert.isFalse(booleanInstance.validate('-1.1'));
36+
assert.isFalse(booleanInstance.validate('1.1'));
37+
assert.isFalse(booleanInstance.validate('1'));
38+
assert.isFalse(booleanInstance.validate('-1'));
39+
assert.isFalse(booleanInstance.validate('0'));
40+
assert.isFalse(booleanInstance.validate(' '));
41+
assert.isFalse(booleanInstance.validate(' '));
42+
assert.isFalse(booleanInstance.validate(0));
43+
assert.isFalse(booleanInstance.validate(-0));
44+
assert.isFalse(booleanInstance.validate(1));
45+
assert.isFalse(booleanInstance.validate(-1));
46+
assert.isFalse(booleanInstance.validate(0.0));
47+
assert.isFalse(booleanInstance.validate(-0.0));
48+
assert.isFalse(booleanInstance.validate(1.0));
49+
assert.isFalse(booleanInstance.validate(-1.0));
50+
assert.isFalse(booleanInstance.validate(0.1));
51+
assert.isFalse(booleanInstance.validate(-0.1));
52+
assert.isFalse(booleanInstance.validate(1.1));
53+
assert.isFalse(booleanInstance.validate(-1.1));
54+
assert.isFalse(booleanInstance.validate([]));
55+
assert.isFalse(booleanInstance.validate({}));
56+
assert.isFalse(booleanInstance.validate(new Array('foo')));
57+
assert.isFalse(booleanInstance.validate(new Object({foo: 'bar'})));
58+
59+
class Foo {}
60+
assert.isFalse(booleanInstance.validate(new Foo()));
61+
});
62+
63+
});

test/validator.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ describe('Validator', () => {
2121
assert.instanceOf(validator.arrayInstance(), Validator);
2222
assert.instanceOf(validator.arrayType(), Validator);
2323
assert.instanceOf(validator.arrayVal(), Validator);
24+
assert.instanceOf(validator.booleanInstance(), Validator);
2425
assert.instanceOf(validator.booleanType(), Validator);
2526
assert.instanceOf(validator.booleanVal(), Validator);
2627
assert.instanceOf(validator.cnh(), Validator);

0 commit comments

Comments
 (0)