@@ -29,6 +29,29 @@ Deno.test("isRecordOf<T>", async (t) => {
29
29
assertType < Equal < typeof a , Record < PropertyKey , number > > > ( true ) ;
30
30
}
31
31
} ) ;
32
+
33
+ await t . step ( "checks only object's own properties" , async ( t ) => {
34
+ await t . step ( "returns true on T record" , ( ) => {
35
+ assertEquals (
36
+ isRecordOf ( is . Number ) (
37
+ Object . assign ( Object . create ( { p : "ignore" } ) , { a : 0 } ) ,
38
+ ) ,
39
+ true ,
40
+ ) ;
41
+ assertEquals (
42
+ isRecordOf ( is . String ) (
43
+ Object . assign ( Object . create ( { p : 0 /* ignore */ } ) , { a : "a" } ) ,
44
+ ) ,
45
+ true ,
46
+ ) ;
47
+ assertEquals (
48
+ isRecordOf ( is . Boolean ) (
49
+ Object . assign ( Object . create ( { p : "ignore" } ) , { a : true } ) ,
50
+ ) ,
51
+ true ,
52
+ ) ;
53
+ } ) ;
54
+ } ) ;
32
55
} ) ;
33
56
34
57
Deno . test ( "isRecordOf<T, K>" , async ( t ) => {
@@ -64,4 +87,34 @@ Deno.test("isRecordOf<T, K>", async (t) => {
64
87
assertType < Equal < typeof a , Record < string , number > > > ( true ) ;
65
88
}
66
89
} ) ;
90
+
91
+ await t . step ( "checks only object's own properties" , async ( t ) => {
92
+ await t . step ( "returns true on T record" , ( ) => {
93
+ assertEquals (
94
+ isRecordOf ( is . Number , is . String ) (
95
+ Object . assign ( Object . create ( { p : "ignore" } ) , { a : 0 } ) ,
96
+ ) ,
97
+ true ,
98
+ ) ;
99
+ assertEquals (
100
+ isRecordOf ( is . String , is . String ) (
101
+ Object . assign ( Object . create ( { p : 0 /* ignore */ } ) , { a : "a" } ) ,
102
+ ) ,
103
+ true ,
104
+ ) ;
105
+ assertEquals (
106
+ isRecordOf ( is . Boolean , is . String ) (
107
+ Object . assign ( Object . create ( { p : "ignore" } ) , { a : true } ) ,
108
+ ) ,
109
+ true ,
110
+ ) ;
111
+ assertEquals (
112
+ isRecordOf ( is . String , is . Number ) (
113
+ Object . assign ( Object . create ( { p : "ignore" } ) , { /* empty */ } ) ,
114
+ ) ,
115
+ true ,
116
+ "No own properties" ,
117
+ ) ;
118
+ } ) ;
119
+ } ) ;
67
120
} ) ;
0 commit comments