]> git.proxmox.com Git - rustc.git/blame - src/test/run-pass/class-poly-methods.rs
Imported Upstream version 0.7
[rustc.git] / src / test / run-pass / class-poly-methods.rs
CommitLineData
223e47cc
LB
1// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2// file at the top-level directory of this distribution and at
3// http://rust-lang.org/COPYRIGHT.
4//
5// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8// option. This file may not be copied, modified, or distributed
9// except according to those terms.
10
11struct cat<U> {
12 priv info : ~[U],
13 priv meows : uint,
14
15 how_hungry : int,
16}
17
970d7e83
LB
18impl<U> cat<U> {
19 pub fn speak<T>(&mut self, stuff: ~[T]) {
223e47cc
LB
20 self.meows += stuff.len();
21 }
970d7e83 22 pub fn meow_count(&mut self) -> uint { self.meows }
223e47cc
LB
23}
24
970d7e83 25fn cat<U>(in_x : uint, in_y : int, in_info: ~[U]) -> cat<U> {
223e47cc
LB
26 cat {
27 meows: in_x,
28 how_hungry: in_y,
29 info: in_info
30 }
31}
32
33pub fn main() {
34 let mut nyan : cat<int> = cat::<int>(52u, 99, ~[9]);
35 let mut kitty = cat(1000u, 2, ~[~"tabby"]);
970d7e83
LB
36 assert_eq!(nyan.how_hungry, 99);
37 assert_eq!(kitty.how_hungry, 2);
223e47cc 38 nyan.speak(~[1,2,3]);
970d7e83 39 assert_eq!(nyan.meow_count(), 55u);
223e47cc 40 kitty.speak(~[~"meow", ~"mew", ~"purr", ~"chirp"]);
970d7e83 41 assert_eq!(kitty.meow_count(), 1004u);
223e47cc 42}