Skip to content

Commit 5bbc879

Browse files
committed
test[isParametersOf]: add proper true/false cases
1 parent c2d9d01 commit 5bbc879

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

is/parameters_of_test.ts

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)