@@ -19,25 +19,31 @@ Deno.test("isRequiredOf<T>", async (t) => {
19
19
} ) ;
20
20
21
21
await t . step ( "returns true on Required<T> object" , ( ) => {
22
+ assertEquals ( isRequiredOf ( pred ) ( { a : 0 , b : "a" , c : true , d : "a" } ) , true ) ;
22
23
assertEquals (
23
- isRequiredOf ( pred ) ( { a : undefined , b : undefined , c : undefined } ) ,
24
- false ,
25
- "Object does not have required properties" ,
26
- ) ;
27
- assertEquals (
28
- isRequiredOf ( pred ) ( { } ) ,
29
- false ,
30
- "Object does not have required properties" ,
24
+ isRequiredOf ( pred ) ( { a : 0 , b : undefined , c : true , d : "a" } ) ,
25
+ true ,
26
+ "Union type contains 'undefined'" ,
31
27
) ;
32
28
} ) ;
33
29
34
30
await t . step ( "returns false on non Required<T> object" , ( ) => {
35
31
assertEquals ( isRequiredOf ( pred ) ( "a" ) , false , "Value is not an object" ) ;
36
32
assertEquals (
37
- isRequiredOf ( pred ) ( { a : 0 , b : "a" , c : " " } ) ,
33
+ isRequiredOf ( pred ) ( { a : 0 , b : "a" , c : 0 , d : "a " } ) ,
38
34
false ,
39
35
"Object have a different type property" ,
40
36
) ;
37
+ assertEquals (
38
+ isRequiredOf ( pred ) ( { a : 0 , b : "a" , d : "a" } ) ,
39
+ false ,
40
+ "Object does not have required properties" ,
41
+ ) ;
42
+ assertEquals (
43
+ isRequiredOf ( pred ) ( { a : 0 , b : "a" , c : undefined , d : "a" } ) ,
44
+ false ,
45
+ "Optional property that converted to required is 'undefined'" ,
46
+ ) ;
41
47
} ) ;
42
48
43
49
await t . step ( "predicated type is correct" , ( ) => {
@@ -69,24 +75,33 @@ Deno.test("isRequiredOf<T>", async (t) => {
69
75
70
76
await t . step ( "returns true on Required<T> object" , ( ) => {
71
77
assertEquals (
72
- isRequiredOf ( pred ) ( { a : undefined , [ b ] : undefined , [ c ] : undefined } ) ,
73
- false ,
74
- "Object does not have required properties" ,
78
+ isRequiredOf ( pred ) ( { a : 0 , [ b ] : "a" , [ c ] : true , [ d ] : "a" } ) ,
79
+ true ,
75
80
) ;
76
81
assertEquals (
77
- isRequiredOf ( pred ) ( { } ) ,
78
- false ,
79
- "Object does not have required properties " ,
82
+ isRequiredOf ( pred ) ( { a : 0 , [ b ] : undefined , [ c ] : true , [ d ] : "a" } ) ,
83
+ true ,
84
+ "Union type contains 'undefined' " ,
80
85
) ;
81
86
} ) ;
82
87
83
88
await t . step ( "returns false on non Required<T> object" , ( ) => {
84
89
assertEquals ( isRequiredOf ( pred ) ( "a" ) , false , "Value is not an object" ) ;
85
90
assertEquals (
86
- isRequiredOf ( pred ) ( { a : 0 , [ b ] : "a" , [ c ] : " " } ) ,
91
+ isRequiredOf ( pred ) ( { a : 0 , [ b ] : "a" , [ c ] : 0 , [ d ] : "a " } ) ,
87
92
false ,
88
93
"Object have a different type property" ,
89
94
) ;
95
+ assertEquals (
96
+ isRequiredOf ( pred ) ( { a : 0 , [ b ] : "a" , [ d ] : "a" } ) ,
97
+ false ,
98
+ "Object does not have required properties" ,
99
+ ) ;
100
+ assertEquals (
101
+ isRequiredOf ( pred ) ( { a : 0 , [ b ] : "a" , [ c ] : undefined , [ d ] : "a" } ) ,
102
+ false ,
103
+ "Optional property that converted to required is 'undefined'" ,
104
+ ) ;
90
105
} ) ;
91
106
92
107
await t . step ( "predicated type is correct" , ( ) => {
0 commit comments