diff options
| author | Oliver 'ker' Schneider <rust19446194516@oli-obk.de> | 2015-01-10 10:14:38 +0100 |
|---|---|---|
| committer | Oliver Schneider <git1984941651981@oli-obk.de> | 2015-01-19 14:22:16 +0100 |
| commit | 0478a8c1d73ab936bcfb762ce8f31ab9f642f462 (patch) | |
| tree | 5e8ce5a7166be8b47fd20ff3223b0fc54eedab31 | |
| parent | d727f9910729625039defffd4058b907ca984bb9 (diff) | |
| download | rust-0478a8c1d73ab936bcfb762ce8f31ab9f642f462.tar.gz rust-0478a8c1d73ab936bcfb762ce8f31ab9f642f462.zip | |
add unit test for non string/numeric map keys
| -rw-r--r-- | src/libserialize/json.rs | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs index 8412da3b4c5..0364d9544b1 100644 --- a/src/libserialize/json.rs +++ b/src/libserialize/json.rs @@ -2583,7 +2583,7 @@ mod tests { use super::DecoderError::*; use super::JsonEvent::*; use super::{Json, from_str, DecodeResult, DecoderError, JsonEvent, Parser, - StackElement, Stack, Decoder}; + StackElement, Stack, Decoder, Encoder, EncoderError}; use std::{i64, u64, f32, f64, io}; use std::collections::BTreeMap; use std::num::Float; @@ -3892,6 +3892,25 @@ mod tests { assert_eq!(None::<int>.to_json(), Null); } + #[test] + fn test_encode_hashmap_with_arbitrary_key() { + use std::str::from_utf8; + use std::io::Writer; + use std::collections::HashMap; + use std::fmt; + #[derive(PartialEq, Eq, Hash, RustcEncodable)] + struct ArbitraryType(uint); + let mut hm: HashMap<ArbitraryType, bool> = HashMap::new(); + hm.insert(ArbitraryType(1), true); + let mut mem_buf = Vec::new(); + let mut encoder = Encoder::new(&mut mem_buf as &mut fmt::Writer); + let result = hm.encode(&mut encoder); + match result.unwrap_err() { + EncoderError::BadHashmapKey => (), + _ => panic!("expected bad hash map key") + } + } + #[bench] fn bench_streaming_small(b: &mut Bencher) { b.iter( || { |
