UNPKG

1.74 kBJavaScriptView Raw
1import { Predicate } from './predicate.js';
2export class DataViewPredicate extends Predicate {
3 /**
4 @hidden
5 */
6 constructor(options) {
7 super('DataView', options);
8 }
9 /**
10 Test a DataView to have a specific byte length.
11
12 @param byteLength - The byte length of the DataView.
13 */
14 byteLength(byteLength) {
15 return this.addValidator({
16 message: (value, label) => `Expected ${label} to have byte length of \`${byteLength}\`, got \`${value.byteLength}\``,
17 validator: value => value.byteLength === byteLength,
18 });
19 }
20 /**
21 Test a DataView to have a minimum byte length.
22
23 @param byteLength - The minimum byte length of the DataView.
24 */
25 minByteLength(byteLength) {
26 return this.addValidator({
27 message: (value, label) => `Expected ${label} to have a minimum byte length of \`${byteLength}\`, got \`${value.byteLength}\``,
28 validator: value => value.byteLength >= byteLength,
29 negatedMessage: (value, label) => `Expected ${label} to have a maximum byte length of \`${byteLength - 1}\`, got \`${value.byteLength}\``,
30 });
31 }
32 /**
33 Test a DataView to have a minimum byte length.
34
35 @param length - The minimum byte length of the DataView.
36 */
37 maxByteLength(byteLength) {
38 return this.addValidator({
39 message: (value, label) => `Expected ${label} to have a maximum byte length of \`${byteLength}\`, got \`${value.byteLength}\``,
40 validator: value => value.byteLength <= byteLength,
41 negatedMessage: (value, label) => `Expected ${label} to have a minimum byte length of \`${byteLength + 1}\`, got \`${value.byteLength}\``,
42 });
43 }
44}