auto merge of #11000 : cmr/rust/auto_encode, r=alexcrichton

Closes #6122
This commit is contained in:
bors 2013-12-16 09:06:38 -08:00
commit 35e5056b6a

View file

@ -1,6 +1,6 @@
// xfail-fast
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
@ -10,7 +10,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// xfail-test #6122
#[feature(managed_boxes)];
extern mod extra;
@ -18,6 +18,7 @@ extern mod extra;
// the common code.
use std::hashmap::{HashMap, HashSet};
use std::io::Decorator;
use EBReader = extra::ebml::reader;
use EBWriter = extra::ebml::writer;
@ -32,17 +33,14 @@ fn test_ebml<A:
Encodable<EBWriter::Encoder> +
Decodable<EBReader::Decoder>
>(a1: &A) {
let bytes = do io::with_bytes_writer |wr| {
let mut ebml_w = EBWriter::Encoder(wr);
a1.encode(&mut ebml_w)
};
let mut wr = @mut std::io::mem::MemWriter::new();
let mut ebml_w = EBWriter::Encoder(wr);
a1.encode(&mut ebml_w);
let bytes = wr.inner_ref().to_owned();
let d = EBReader::Doc(@bytes);
let mut decoder = EBReader::Decoder(d);
let a2: A = Decodable::decode(&mut decoder);
if !(*a1 == a2) {
::std::sys::FailWithCause::fail_with(~"explicit failure" + "foo",
"auto-encode.rs", 43u);
}
assert!(*a1 == a2);
}
@ -139,47 +137,41 @@ pub fn main() {
let a = &Plus(@Minus(@Val(3u), @Val(10u)), @Plus(@Val(22u), @Val(5u)));
test_ebml(a);
// let a = &Spanned {lo: 0u, hi: 5u, node: 22u};
// test_ebml(a);
let a = &Spanned {lo: 0u, hi: 5u, node: 22u};
test_ebml(a);
// let a = &Point {x: 3u, y: 5u};
// test_ebml(a);
//
// let a = &@[1u, 2u, 3u];
// test_ebml(a);
//
// let a = &Top(22u);
// test_ebml(a);
//
// let a = &Bottom(222u);
// test_ebml(a);
//
// let a = &A;
// test_ebml(a);
//
// let a = &B;
// test_ebml(a);
let a = &Point {x: 3u, y: 5u};
test_ebml(a);
let a = &@[1u, 2u, 3u];
test_ebml(a);
let a = &Top(22u);
test_ebml(a);
let a = &Bottom(222u);
test_ebml(a);
let a = &A;
test_ebml(a);
let a = &B;
test_ebml(a);
println("Hi1");
let a = &time::now();
test_ebml(a);
println("Hi2");
// test_ebml(&1.0f32);
// test_ebml(&1.0f64);
test_ebml(&1.0f);
// println("Hi3");
// test_ebml(&'a');
test_ebml(&1.0f32);
test_ebml(&1.0f64);
test_ebml(&'a');
println("Hi4");
let mut a = HashMap::new();
test_ebml(&a);
a.insert(1, 2);
println("Hi4");
test_ebml(&a);
// let mut a = HashSet::new();
// test_ebml(&a);
// a.insert(1);
// test_ebml(&a);
let mut a = HashSet::new();
test_ebml(&a);
a.insert(1);
test_ebml(&a);
}