@@ -35,11 +35,13 @@ Deno.test("isParametersOf<T>", async (t) => {
3535 const predTup = [ is . Number , is . String , as . Optional ( is . Boolean ) ] as const ;
3636 assertEquals ( isParametersOf ( predTup ) ( [ 0 , "a" , true ] ) , true ) ;
3737 assertEquals ( isParametersOf ( predTup ) ( [ 0 , "a" ] ) , true ) ;
38+ assertEquals ( isParametersOf ( predTup ) ( [ 0 , "a" , undefined ] ) , true ) ;
3839 } ) ;
3940
4041 await t . step ( "returns false on non T tuple" , ( ) => {
4142 const predTup = [ is . Number , is . String , as . Optional ( is . Boolean ) ] as const ;
4243 assertEquals ( isParametersOf ( predTup ) ( [ 0 , 1 , 2 ] ) , false ) ;
44+ assertEquals ( isParametersOf ( predTup ) ( [ 0 ] ) , false ) ;
4345 assertEquals ( isParametersOf ( predTup ) ( [ 0 , "a" , true , 0 ] ) , false ) ;
4446 } ) ;
4547
@@ -107,17 +109,42 @@ Deno.test("isParametersOf<T, R>", async (t) => {
107109 await t . step ( "returns false on non T tuple" , ( ) => {
108110 const predTup = [ is . Number , is . String , as . Optional ( is . Boolean ) ] as const ;
109111 const predRest = is . ArrayOf ( is . String ) ;
110- assertEquals ( isParametersOf ( predTup , predRest ) ( [ 0 , 1 , 2 , 0 , 1 , 2 ] ) , false ) ;
111- assertEquals ( isParametersOf ( predTup , predRest ) ( [ 0 , "a" , 0 , 1 , 2 ] ) , false ) ;
112+ assertEquals ( isParametersOf ( predTup , predRest ) ( "a" ) , false , "Not an array" ) ;
113+ assertEquals (
114+ isParametersOf ( predTup , predRest ) ( [ 0 ] ) ,
115+ false ,
116+ "Less than `predTup.length` - optional-count" ,
117+ ) ;
118+ assertEquals (
119+ isParametersOf ( predTup , predRest ) ( [ 0 , 1 , 2 ] ) ,
120+ false ,
121+ "Not match `predTup` and no rest elements" ,
122+ ) ;
123+ assertEquals (
124+ isParametersOf ( predTup , predRest ) ( [ 0 , 1 , 2 , 0 , 1 , 2 ] ) ,
125+ false ,
126+ "Not match `predTup` and `predRest`" ,
127+ ) ;
112128 assertEquals (
113129 isParametersOf ( predTup , predRest ) ( [ 0 , "a" , true , 0 , 1 , 2 ] ) ,
114130 false ,
131+ "Match `predTup` but not match `predRest`" ,
115132 ) ;
116133 assertEquals (
117134 isParametersOf ( predTup , predRest ) ( [ 0 , "a" , undefined , 0 , 1 , 2 ] ) ,
118135 false ,
136+ "Match `predTup` but not match `predRest`" ,
137+ ) ;
138+ assertEquals (
139+ isParametersOf ( predTup , predRest ) ( [ 0 , "a" , "b" , "a" , "b" , "c" ] ) ,
140+ false ,
141+ "Match `predRest` but not match `predTup`" ,
142+ ) ;
143+ assertEquals (
144+ isParametersOf ( predTup , predRest ) ( [ 0 , "a" , "a" , "b" , "c" ] ) ,
145+ false ,
146+ "Match `predRest` but no optional parameters" ,
119147 ) ;
120- assertEquals ( isParametersOf ( predTup , predRest ) ( [ 0 , "a" , "b" ] ) , false ) ;
121148 } ) ;
122149
123150 await t . step ( "predicated type is correct" , ( ) => {
0 commit comments