@qaflag/core
Version:
Base requirements for the QA Flag library
49 lines (42 loc) • 1.36 kB
text/typescript
import { NumberMust } from './number.interface';
import { Must } from './must.interface';
import { TestResult } from './result';
import { ArrayValue } from '../value/values';
import { ValueInterface } from '../value/value.interface';
export interface ArrayMust<T extends ValueInterface>
extends Assertions_ArrayMust {
be: ArrayMustBe;
not: ArrayMust<T>;
all: Must<any>;
have: Assertions_ArrayMustHave<T>;
}
interface ArrayMustBe extends Assertions_ArrayMustBe {
an: Assertions_ArrayMustBeAn;
}
export interface Assertions_ArrayMustBeAn {
arrayOf(
typeName: 'string' | 'number' | 'boolean' | 'object',
): TestResult<ArrayValue>;
array(): TestResult<ArrayValue>;
}
export interface Assertions_ArrayMustHave<T extends ValueInterface> {
length: NumberMust;
some: Must<T>;
any: Must<T>;
none: Must<T>;
atLeast(n: number): Must<T>;
atMost(n: number): Must<T>;
only(n: number): Must<T>;
}
export interface Assertions_ArrayMust {
equal(thatArray: unknown[]): TestResult<ArrayValue>;
include(value: any): TestResult<ArrayValue>;
contain(value: string | string[]): TestResult<ArrayValue>;
}
export interface Assertions_ArrayMustBe {
empty(): TestResult<ArrayValue>;
equalTo(thatArray: unknown[]): TestResult<ArrayValue>;
arrayOf(
typeName: 'string' | 'number' | 'boolean' | 'object',
): TestResult<ArrayValue>;
}