2011-03-27 23:46:16 -05:00
|
|
|
// -*- rust -*-
|
|
|
|
|
|
|
|
// Tests for using alt as an expression
|
|
|
|
|
2011-04-02 18:32:34 -05:00
|
|
|
fn test_basic() {
|
2011-03-27 23:46:16 -05:00
|
|
|
let bool res = alt (true) {
|
|
|
|
case (true) {
|
|
|
|
true
|
|
|
|
}
|
|
|
|
case (false) {
|
|
|
|
false
|
|
|
|
}
|
|
|
|
};
|
2011-05-02 19:47:24 -05:00
|
|
|
assert (res);
|
2011-03-27 23:46:16 -05:00
|
|
|
|
|
|
|
res = alt(false) {
|
|
|
|
case (true) {
|
|
|
|
false
|
|
|
|
}
|
|
|
|
case (false) {
|
|
|
|
true
|
|
|
|
}
|
|
|
|
};
|
2011-05-02 19:47:24 -05:00
|
|
|
assert (res);
|
2011-03-27 23:46:16 -05:00
|
|
|
}
|
|
|
|
|
2011-04-02 18:32:34 -05:00
|
|
|
fn test_inferrence() {
|
|
|
|
auto res = alt (true) {
|
|
|
|
case (true) {
|
|
|
|
true
|
|
|
|
}
|
|
|
|
case (false) {
|
|
|
|
false
|
|
|
|
}
|
|
|
|
};
|
2011-05-02 19:47:24 -05:00
|
|
|
assert (res);
|
2011-04-02 18:32:34 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
fn test_alt_as_alt_head() {
|
|
|
|
// Yeah, this is kind of confusing ...
|
|
|
|
auto res = alt(alt (false) { case (true) { true } case (false) {false} }) {
|
|
|
|
case (true) {
|
|
|
|
false
|
|
|
|
}
|
|
|
|
case (false) {
|
|
|
|
true
|
|
|
|
}
|
|
|
|
};
|
2011-05-02 19:47:24 -05:00
|
|
|
assert (res);
|
2011-04-02 18:32:34 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
fn test_alt_as_block_result() {
|
|
|
|
auto res = alt (false) {
|
|
|
|
case (true) {
|
|
|
|
false
|
|
|
|
}
|
|
|
|
case (false) {
|
|
|
|
alt (true) {
|
|
|
|
case (true) {
|
|
|
|
true
|
|
|
|
}
|
|
|
|
case (false) {
|
|
|
|
false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
2011-05-02 19:47:24 -05:00
|
|
|
assert (res);
|
2011-04-02 18:32:34 -05:00
|
|
|
}
|
|
|
|
|
2011-03-27 23:46:16 -05:00
|
|
|
fn main() {
|
2011-04-02 18:32:34 -05:00
|
|
|
test_basic();
|
|
|
|
test_inferrence();
|
|
|
|
test_alt_as_alt_head();
|
|
|
|
test_alt_as_block_result();
|
2011-03-31 23:00:20 -05:00
|
|
|
}
|