about summary refs log tree commit diff
path: root/src/test/stdtest
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/stdtest')
-rw-r--r--src/test/stdtest/char.rs12
-rw-r--r--src/test/stdtest/int.rs24
-rw-r--r--src/test/stdtest/test.rs27
-rw-r--r--src/test/stdtest/uint.rs24
4 files changed, 82 insertions, 5 deletions
diff --git a/src/test/stdtest/char.rs b/src/test/stdtest/char.rs
index b2724ca325d..79b803dc6c8 100644
--- a/src/test/stdtest/char.rs
+++ b/src/test/stdtest/char.rs
@@ -26,3 +26,15 @@ fn test_to_digit() {
     assert (char::to_digit('z') == 35u8);
     assert (char::to_digit('Z') == 35u8);
 }
+
+#[test]
+#[should_fail]
+fn test_to_digit_fail_1() {
+    char::to_digit(' ');
+}
+
+#[test]
+#[should_fail]
+fn test_to_digit_fail_2() {
+    char::to_digit('$');
+}
diff --git a/src/test/stdtest/int.rs b/src/test/stdtest/int.rs
index 1bd67d5c45e..28b9b94c2ff 100644
--- a/src/test/stdtest/int.rs
+++ b/src/test/stdtest/int.rs
@@ -20,6 +20,18 @@ fn test_from_str() {
 }
 
 #[test]
+#[should_fail]
+fn test_from_str_fail_1() {
+    int::from_str(" ");
+}
+
+#[test]
+#[should_fail]
+fn test_from_str_fail_2() {
+    int::from_str("x");
+}
+
+#[test]
 fn test_parse_buf() {
     assert (int::parse_buf(bytes("123"), 10u) == 123);
     assert (int::parse_buf(bytes("1001"), 2u) == 9);
@@ -41,6 +53,18 @@ fn test_parse_buf() {
 }
 
 #[test]
+#[should_fail]
+fn test_parse_buf_fail_1() {
+    int::parse_buf(bytes("Z"), 35u);
+}
+
+#[test]
+#[should_fail]
+fn test_parse_buf_fail_2() {
+    int::parse_buf(bytes("-9"), 2u);
+}
+
+#[test]
 fn test_to_str() {
     assert (eq(int::to_str(0, 10u), "0"));
     assert (eq(int::to_str(1, 10u), "1"));
diff --git a/src/test/stdtest/test.rs b/src/test/stdtest/test.rs
index ad833949ee7..48c28243c92 100644
--- a/src/test/stdtest/test.rs
+++ b/src/test/stdtest/test.rs
@@ -7,7 +7,7 @@ import std::vec;
 #[test]
 fn do_not_run_ignored_tests() {
     fn f() { fail; }
-    let desc = {name: "whatever", fn: f, ignore: true};
+    let desc = {name: "whatever", fn: f, ignore: true, should_fail: false};
     let future = test::run_test(desc, test::default_test_to_task);
     let result = future.wait();
     assert result != test::tr_ok;
@@ -16,12 +16,28 @@ fn do_not_run_ignored_tests() {
 #[test]
 fn ignored_tests_result_in_ignored() {
     fn f() { }
-    let desc = {name: "whatever", fn: f, ignore: true};
+    let desc = {name: "whatever", fn: f, ignore: true, should_fail: false};
     let res = test::run_test(desc, test::default_test_to_task).wait();
     assert (res == test::tr_ignored);
 }
 
 #[test]
+fn test_should_fail() {
+    fn f() { fail; }
+    let desc = {name: "whatever", fn: f, ignore: false, should_fail: true};
+    let res = test::run_test(desc, test::default_test_to_task).wait();
+    assert res == test::tr_ok;
+}
+
+#[test]
+fn test_should_fail_but_succeeds() {
+    fn f() { }
+    let desc = {name: "whatever", fn: f, ignore: false, should_fail: true};
+    let res = test::run_test(desc, test::default_test_to_task).wait();
+    assert res == test::tr_failed;
+}
+
+#[test]
 fn first_free_arg_should_be_a_filter() {
     let args = ["progname", "filter"];
     check (vec::is_not_empty(args));
@@ -44,8 +60,8 @@ fn filter_for_ignored_option() {
 
     let opts = {filter: option::none, run_ignored: true};
     let tests =
-        [{name: "1", fn: fn () { }, ignore: true},
-         {name: "2", fn: fn () { }, ignore: false}];
+        [{name: "1", fn: fn () { }, ignore: true, should_fail: false},
+         {name: "2", fn: fn () { }, ignore: false, should_fail: false}];
     let filtered = test::filter_tests(opts, tests);
 
     assert (vec::len(filtered) == 1u);
@@ -69,7 +85,8 @@ fn sort_tests() {
             let testfn = fn () { };
             let tests = [];
             for name: str in names {
-                let test = {name: name, fn: testfn, ignore: false};
+                let test = {name: name, fn: testfn, ignore: false,
+                  should_fail: false};
                 tests += [test];
             }
             tests
diff --git a/src/test/stdtest/uint.rs b/src/test/stdtest/uint.rs
index 35bd65c0c05..6a2b5bdbd3a 100644
--- a/src/test/stdtest/uint.rs
+++ b/src/test/stdtest/uint.rs
@@ -15,6 +15,18 @@ fn test_from_str() {
 }
 
 #[test]
+#[should_fail]
+fn test_from_str_fail_1() {
+    uint::from_str(" ");
+}
+
+#[test]
+#[should_fail]
+fn test_from_str_fail_2() {
+    uint::from_str("x");
+}
+
+#[test]
 fn test_parse_buf() {
     assert (uint::parse_buf(bytes("123"), 10u) == 123u);
     assert (uint::parse_buf(bytes("1001"), 2u) == 9u);
@@ -25,6 +37,18 @@ fn test_parse_buf() {
 }
 
 #[test]
+#[should_fail]
+fn test_parse_buf_fail_1() {
+    uint::parse_buf(bytes("Z"), 10u);
+}
+
+#[test]
+#[should_fail]
+fn test_parse_buf_fail_2() {
+    uint::parse_buf(bytes("_"), 2u);
+}
+
+#[test]
 fn test_next_power_of_two() {
     assert (uint::next_power_of_two(0u) == 0u);
     assert (uint::next_power_of_two(1u) == 1u);