From 3ae6614738723983c669474b26bc586a3e35ca5a Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Fri, 23 Feb 2018 17:44:48 +0100 Subject: [PATCH] Add test for custom values in enums --- tests/enums.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tests/enums.rs b/tests/enums.rs index a1d02188..26b3646c 100644 --- a/tests/enums.rs +++ b/tests/enums.rs @@ -42,3 +42,46 @@ fn c_style_enum() { "#) .test(); } + +#[test] +fn c_style_enum_with_custom_values() { + test_support::project() + .file("src/lib.rs", r#" + #![feature(proc_macro)] + + extern crate wasm_bindgen; + + use wasm_bindgen::prelude::*; + + #[wasm_bindgen] + pub enum Color { + Green = 21, + Yellow = 34, + Red, + } + + #[no_mangle] + #[wasm_bindgen] + pub extern fn cycle(color: Color) -> Color { + match color { + Color::Green => Color::Yellow, + Color::Yellow => Color::Red, + Color::Red => Color::Green, + } + } + "#) + .file("test.ts", r#" + import * as assert from "assert"; + import * as wasm from "./out"; + + export function test() { + assert.strictEqual(wasm.Color.Green, 21); + assert.strictEqual(wasm.Color.Yellow, 34); + assert.strictEqual(wasm.Color.Red, 2); + assert.strictEqual(Object.keys(wasm.Color).length, 3); + + assert.strictEqual(wasm.cycle(wasm.Color.Green), wasm.Color.Yellow); + } + "#) + .test(); +}