63 lines
1.2 KiB
Plaintext
63 lines
1.2 KiB
Plaintext
pub module enum_test;
|
|
|
|
enum OptionInt {
|
|
None,
|
|
Some(i32),
|
|
}
|
|
|
|
pub void test_enum_named() {
|
|
let x = OptionInt::None;
|
|
match x {
|
|
OptionInt::None => { assert_eq!(1, 1); }
|
|
OptionInt::Some(_) => { assert_eq!(0, 1); }
|
|
}
|
|
}
|
|
|
|
pub void test_enum_tuple() {
|
|
let x = OptionInt::Some(42);
|
|
match x {
|
|
OptionInt::None => { assert_eq!(0, 1); }
|
|
OptionInt::Some(v) => { assert_eq!(v, 42); }
|
|
}
|
|
}
|
|
|
|
enum Shape {
|
|
Circle { i32 radius },
|
|
Rect { i32 w, i32 h },
|
|
}
|
|
|
|
pub void test_enum_struct() {
|
|
let c = Shape::Circle { radius: 5 };
|
|
match c {
|
|
Shape::Circle { radius } => { assert_eq!(radius, 5); }
|
|
Shape::Rect { .. } => { assert_eq!(0, 1); }
|
|
}
|
|
|
|
let r = Shape::Rect { w: 3, h: 4 };
|
|
match r {
|
|
Shape::Circle { .. } => { assert_eq!(0, 1); }
|
|
Shape::Rect { w, h } => { assert_eq!(w * h, 12); }
|
|
}
|
|
}
|
|
|
|
enum Color {
|
|
Red,
|
|
Green,
|
|
Blue,
|
|
}
|
|
|
|
pub void test_enum_eq() {
|
|
let c = Color::Red;
|
|
match c {
|
|
Color::Red => { assert_eq!(1, 1); }
|
|
_ => { assert_eq!(0, 1); }
|
|
}
|
|
}
|
|
|
|
pub void run_tests() {
|
|
test_enum_named();
|
|
test_enum_tuple();
|
|
test_enum_struct();
|
|
test_enum_eq();
|
|
}
|