11import { expectError , expectType } from 'tsd' ;
22
3- import { propEq } from '../es' ;
3+ import { __ , propEq } from '../es' ;
44
55type Obj = {
66 union : 'foo' | 'bar' ;
@@ -12,28 +12,41 @@ type Obj = {
1212
1313// propEq(val, name, obj)
1414expectType < boolean > ( propEq ( 'foo' , 'union' , { } as Obj ) ) ;
15- // non-union string fails
16- expectError ( propEq ( 'nope' , 'union' , { } as Obj ) ) ;
17- // completely different type fails
18- expectError ( propEq ( 2 , 'union ' , { } as Obj ) ) ;
15+ // propEq doesn't create unnecessary values constraint for object
16+ expectType < boolean > ( propEq ( 1 , 'union' , { } as Obj ) ) ;
17+ // unknown field names fails
18+ expectError ( propEq ( 'foo' , 'unknown ' , { } as Obj ) ) ;
1919
2020// propEq(val)(name)(obj)
2121expectType < boolean > ( propEq ( 'foo' ) ( 'union' ) ( { } as Obj ) ) ;
2222// 'nope' is inferred as 'string' here.
2323expectType < boolean > ( propEq ( 'nope' ) ( 'union' ) ( { } as Obj ) ) ;
24- // completely different type fails
25- expectError ( propEq ( 2 ) ( 'union ' ) ( { } as Obj ) ) ;
24+ // unknown field names fails
25+ expectError ( propEq ( 'foo' ) ( 'unknown ' ) ( { } as Obj ) ) ;
2626
2727// propEq(val)(name), obj)
2828expectType < boolean > ( propEq ( 'foo' ) ( 'union' , { } as Obj ) ) ;
2929// 'nope' is inferred as 'string' here.
3030expectType < boolean > ( propEq ( 'nope' ) ( 'union' , { } as Obj ) ) ;
31- // completely different type fails
32- expectError ( propEq ( 2 ) ( 'union ' , { } as Obj ) ) ;
31+ // unknown field names fails
32+ expectError ( propEq ( 'foo' ) ( 'unknown ' , { } as Obj ) ) ;
3333
3434// propEq(val, name)(obj)
3535expectType < boolean > ( propEq ( 'foo' , 'union' ) ( { } as Obj ) ) ;
3636// 'nope' is inferred as 'string' here.
3737expectType < boolean > ( propEq ( 'nope' , 'union' ) ( { } as Obj ) ) ;
38- // completely different type fails
39- expectError ( propEq ( 2 , 'union' ) ( { } as Obj ) ) ;
38+ // unknown field names fails
39+ expectError ( propEq ( 'foo' , 'unknown' ) ( { } as Obj ) ) ;
40+
41+ // propEq(__, name, obj)(val)
42+ expectType < boolean > ( propEq ( __ , 'union' , { } as Obj ) ( 'foo' ) ) ;
43+ // propEq(val, __, obj)(val)
44+ expectType < boolean > ( propEq ( 'foo' , __ , { } as Obj ) ( 'union' ) ) ;
45+ // propEq(__, __, obj)(val, name)
46+ expectType < boolean > ( propEq ( __ , __ , { } as Obj ) ( 'foo' , 'union' ) ) ;
47+ // propEq(__, __, obj)(val)(name)
48+ expectType < boolean > ( propEq ( __ , __ , { } as Obj ) ( 'foo' ) ( 'union' ) ) ;
49+
50+ expectError ( propEq ( 'foo' , __ , { } as Obj ) ( 'unknown' ) ) ;
51+ expectError ( propEq ( __ , __ , { } as Obj ) ( 'foo' , 'unknown' ) ) ;
52+ expectError ( propEq ( __ , __ , { } as Obj ) ( 'foo' ) ( 'unknown' ) ) ;
0 commit comments