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

Commit 199ebe4

Browse files
feat(rules): Added Cntrl rule
1 parent 13b0800 commit 199ebe4

6 files changed

Lines changed: 118 additions & 3 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ The library can be loaded either as a standalone script, or through an [AMD](htt
9090
- [BooleanVal](docs/boolean-val.md)
9191
- [Cnh](docs/cnh.md)
9292
- [Cnpj](docs/cnpj.md)
93+
- [Cntrl](docs/cntrl.md)
9394
- [Consonant](docs/consonant.md)
9495
- [Contains](docs/contains.md)
9596
- [Cpf](docs/cpf.md)

awesome-validator.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/cntrl.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Cntrl
2+
3+
Validates if the given input is a cntrl.
4+
5+
Valid values:
6+
7+
```js
8+
validator.cntrl().validate('\n');
9+
validator.cntrl().validate('\r');
10+
validator.cntrl().validate('\t');
11+
validator.cntrl().validate('\n\r\t');
12+
```
13+
14+
Invalid values:
15+
16+
```js
17+
validator.cntrl().validate('');
18+
validator.cntrl().validate('16-50');
19+
validator.cntrl().validate('a');
20+
validator.cntrl().validate(' ');
21+
validator.cntrl().validate('Foo');
22+
validator.cntrl().validate('12.1');
23+
validator.cntrl().validate('-12');
24+
validator.cntrl().validate(-12);
25+
validator.cntrl().validate(null);
26+
validator.cntrl().validate(undefined);
27+
```

src/rules/cntrl.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { AbstractRegexFilter } from './abstract-regex-filter';
2+
3+
export class Cntrl extends AbstractRegexFilter {
4+
5+
/**
6+
* Get pattern.
7+
*/
8+
protected getPattern(): string | RegExp {
9+
return /^[\u0000-\u001F\u007F]+$/g;
10+
}
11+
}

src/rules/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export * from './boolean-type';
1111
export * from './boolean-val';
1212
export * from './cnh';
1313
export * from './cnpj';
14+
export * from './cntrl';
1415
export * from './consonant';
1516
export * from './contains';
1617
export * from './cpf';

test/rules/cntrl.ts

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import { assert } from 'chai';
2+
3+
import { AbstractRule } from '../../src/rules/abstract-rule';
4+
import { Cntrl } from '../../src/rules/cntrl';
5+
6+
describe('Cntrl', () => {
7+
8+
let cntrl: Cntrl;
9+
10+
beforeEach(() => {
11+
cntrl = new Cntrl();
12+
});
13+
14+
it('is rule', () => {
15+
assert.instanceOf(cntrl, AbstractRule);
16+
});
17+
18+
it('values is valid with additional characters', () => {
19+
assert.isTrue(new Cntrl('!@#$%^&*(){} ').validate('!@#$%^&*(){} '));
20+
assert.isTrue(new Cntrl('[]?+=/\\-_|"\',<>. ').validate('[]?+=/\\-_|\',<>. \t \n'));
21+
});
22+
23+
it('values is valid', () => {
24+
assert.isTrue(cntrl.validate('\n'));
25+
assert.isTrue(cntrl.validate('\r'));
26+
assert.isTrue(cntrl.validate('\t'));
27+
assert.isTrue(cntrl.validate('\n\r\t'));
28+
});
29+
30+
it('values is not valid', () => {
31+
assert.isFalse(cntrl.validate(''));
32+
assert.isFalse(cntrl.validate('16-50'));
33+
assert.isFalse(cntrl.validate('a'));
34+
assert.isFalse(cntrl.validate(' '));
35+
assert.isFalse(cntrl.validate('Foo'));
36+
assert.isFalse(cntrl.validate('12.1'));
37+
assert.isFalse(cntrl.validate('-12'));
38+
assert.isFalse(cntrl.validate(-12));
39+
assert.isFalse(cntrl.validate('( )_{}'));
40+
assert.isFalse(cntrl.validate(Boolean()));
41+
assert.isFalse(cntrl.validate(Number()));
42+
assert.isFalse(cntrl.validate(String()));
43+
assert.isFalse(cntrl.validate(null));
44+
assert.isFalse(cntrl.validate(undefined));
45+
assert.isFalse(cntrl.validate(true));
46+
assert.isFalse(cntrl.validate(false));
47+
assert.isFalse(cntrl.validate('true'));
48+
assert.isFalse(cntrl.validate('false'));
49+
assert.isFalse(cntrl.validate('-1.1'));
50+
assert.isFalse(cntrl.validate('1.1'));
51+
assert.isFalse(cntrl.validate('1'));
52+
assert.isFalse(cntrl.validate('-1'));
53+
assert.isFalse(cntrl.validate('0'));
54+
assert.isFalse(cntrl.validate(0));
55+
assert.isFalse(cntrl.validate(-0));
56+
assert.isFalse(cntrl.validate(1));
57+
assert.isFalse(cntrl.validate(-1));
58+
assert.isFalse(cntrl.validate(0.0));
59+
assert.isFalse(cntrl.validate(-0.0));
60+
assert.isFalse(cntrl.validate(1.0));
61+
assert.isFalse(cntrl.validate(-1.0));
62+
assert.isFalse(cntrl.validate(0.1));
63+
assert.isFalse(cntrl.validate(-0.1));
64+
assert.isFalse(cntrl.validate(1.1));
65+
assert.isFalse(cntrl.validate(-1.1));
66+
assert.isFalse(cntrl.validate([]));
67+
assert.isFalse(cntrl.validate({}));
68+
assert.isFalse(cntrl.validate(new Array('foo')));
69+
assert.isFalse(cntrl.validate(new Object({foo: 'bar'})));
70+
71+
class Foo {}
72+
assert.isFalse(cntrl.validate(new Foo()));
73+
});
74+
75+
});

0 commit comments

Comments
 (0)