2019-04-16 15:20:34 -04:00
|
|
|
import {assert, _} from "spec.ts"
|
2019-12-19 17:44:18 +00:00
|
|
|
import {Immutable} from "../src/index"
|
|
|
|
|
|
|
|
|
|
test("types are ok", () => {
|
|
|
|
|
// array in tuple
|
|
|
|
|
{
|
|
|
|
|
let val = _ as Immutable<[string[], 1]>
|
|
|
|
|
assert(val, _ as readonly [ReadonlyArray<string>, 1])
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// tuple in array
|
|
|
|
|
{
|
|
|
|
|
let val = _ as Immutable<[string, 1][]>
|
|
|
|
|
assert(val, _ as ReadonlyArray<readonly [string, 1]>)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// tuple in tuple
|
|
|
|
|
{
|
|
|
|
|
let val = _ as Immutable<[[string, 1], 1]>
|
|
|
|
|
assert(val, _ as readonly [readonly [string, 1], 1])
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// array in array
|
|
|
|
|
{
|
|
|
|
|
let val = _ as Immutable<string[][]>
|
|
|
|
|
assert(val, _ as ReadonlyArray<ReadonlyArray<string>>)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// tuple in object
|
|
|
|
|
{
|
|
|
|
|
let val = _ as Immutable<{a: [string, 1]}>
|
|
|
|
|
assert(val, _ as {readonly a: readonly [string, 1]})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// object in tuple
|
|
|
|
|
{
|
|
|
|
|
let val = _ as Immutable<[{a: string}, 1]>
|
|
|
|
|
assert(val, _ as readonly [{readonly a: string}, 1])
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// array in object
|
|
|
|
|
{
|
|
|
|
|
let val = _ as Immutable<{a: string[]}>
|
|
|
|
|
assert(val, _ as {readonly a: ReadonlyArray<string>})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// object in array
|
|
|
|
|
{
|
|
|
|
|
let val = _ as Immutable<Array<{a: string}>>
|
|
|
|
|
assert(val, _ as ReadonlyArray<{readonly a: string}>)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// object in object
|
|
|
|
|
{
|
|
|
|
|
let val = _ as Immutable<{a: {b: string}}>
|
|
|
|
|
assert(val, _ as {readonly a: {readonly b: string}})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
expect(true).toBe(true)
|
|
|
|
|
})
|