100 lines
1.4 KiB
Plaintext
100 lines
1.4 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();
|
|
}
|