Skip to content

Commit 41245dd

Browse files
jwisenikomatsakis
authored andcommitted
---
yaml --- r: 6475 b: refs/heads/master c: 90d27af h: refs/heads/master i: 6473: 8fb1a69 6471: c89358b v: v3
1 parent 17ab7ce commit 41245dd

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 45dc5356dfa37b80a3e5ed37783a38060fdb8c1f
2+
refs/heads/master: 90d27af42a7af82608363ad95456c88363a9c3da

trunk/src/test/stdtest/c_vec.rs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// -*- rust -*-
2+
use std;
3+
import std::c_vec::*;
4+
import std::ctypes::*;
5+
6+
#[link_name = ""]
7+
#[abi = "cdecl"]
8+
native mod libc {
9+
fn malloc(n: size_t) -> *mutable u8;
10+
fn free(m: *mutable u8);
11+
}
12+
13+
fn malloc(n: size_t) -> t<u8> {
14+
let mem = libc::malloc(n);
15+
16+
assert mem as int != 0;
17+
18+
ret unsafe { create_with_dtor(mem, n, bind libc::free(mem)) };
19+
}
20+
21+
#[test]
22+
fn test_basic() {
23+
let cv = malloc(16u);
24+
25+
set(cv, 3u, 8u8);
26+
set(cv, 4u, 9u8);
27+
assert get(cv, 3u) == 8u8;
28+
assert get(cv, 4u) == 9u8;
29+
assert size(cv) == 16u;
30+
}
31+
32+
#[test]
33+
#[should_fail]
34+
fn test_overrun_get() {
35+
let cv = malloc(16u);
36+
37+
get(cv, 17u);
38+
}
39+
40+
#[test]
41+
#[should_fail]
42+
fn test_overrun_set() {
43+
let cv = malloc(16u);
44+
45+
set(cv, 17u, 0u8);
46+
}
47+
48+
#[test]
49+
fn test_and_I_mean_it() {
50+
let cv = malloc(16u);
51+
let p = unsafe { ptr(cv) };
52+
53+
set(cv, 0u, 32u8);
54+
set(cv, 1u, 33u8);
55+
assert unsafe { *p } == 32u8;
56+
set(cv, 2u, 34u8); /* safety */
57+
}

trunk/src/test/stdtest/stdtest.rc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std;
33
mod bitv;
44
mod bool;
55
mod box;
6+
mod c_vec;
67
mod char;
78
mod comm;
89
mod deque;

0 commit comments

Comments
 (0)