Skip to content

Commit

Permalink
Test generics
Browse files Browse the repository at this point in the history
  • Loading branch information
yishn committed Mar 22, 2023
1 parent f0167b8 commit 910dfc2
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions test/enum.test.ts
Expand Up @@ -8,14 +8,17 @@ import {
} from "../dev_deps.ts";
import { TypeExtends } from "./utils.ts";

class MessageVariants {
class MessageVariants<T> {
Quit = null;
Plaintext = Variant<string>();
Plaintext = Variant<T>();
Encrypted = Variant<number[]>();
}

type Message = Enum<MessageVariants>;
const Message = () => Enum.factory(MessageVariants);
type Message = Enum<MessageVariants<string>>;
const Message = () => Enum.factory(MessageVariants<string>);

type GenericMessage<T> = Enum<MessageVariants<T>>;
const GenericMessage = <T>() => Enum.factory(MessageVariants<T>);

Deno.test({
name: "Enums can contain one and only one variant",
Expand Down Expand Up @@ -49,13 +52,16 @@ Deno.test({

msg = Message().Encrypted([1, 2, 3]);
assertEquals(msg, { Encrypted: [1, 2, 3] });

let genMsg = GenericMessage<boolean>().Plaintext(true);
assertEquals(genMsg, { Plaintext: true });
},
});

Deno.test({
name: "Enum.match() has to be exhaustive",
fn() {
type M = Matcher<MessageVariants>;
type M = Matcher<MessageVariants<string>>;

expectType<M>({
Quit: () => -1,
Expand Down

0 comments on commit 910dfc2

Please sign in to comment.