From 1130886138f1dc6285ac2011c6bcabefd564bb7d Mon Sep 17 00:00:00 2001 From: Carl-Anton Ingmarsson Date: Sun, 12 Jan 2014 12:50:01 +0100 Subject: [PATCH] extra::ebml: Add unit test for vuint_at() --- src/libextra/ebml.rs | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/libextra/ebml.rs b/src/libextra/ebml.rs index e3a05ae0960c..4449de342d72 100644 --- a/src/libextra/ebml.rs +++ b/src/libextra/ebml.rs @@ -938,6 +938,54 @@ mod tests { use std::io::mem::MemWriter; use std::option::{None, Option, Some}; + #[test] + fn test_vuint_at() { + let data = [ + 0x80, + 0xff, + 0x40, 0x00, + 0x7f, 0xff, + 0x20, 0x00, 0x00, + 0x3f, 0xff, 0xff, + 0x10, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0xff, 0xff + ]; + + let mut res: reader::Res; + + // Class A + res = reader::vuint_at(data, 0); + assert_eq!(res.val, 0); + assert_eq!(res.next, 1); + res = reader::vuint_at(data, res.next); + assert_eq!(res.val, (1 << 7) - 1); + assert_eq!(res.next, 2); + + // Class B + res = reader::vuint_at(data, res.next); + assert_eq!(res.val, 0); + assert_eq!(res.next, 4); + res = reader::vuint_at(data, res.next); + assert_eq!(res.val, (1 << 14) - 1); + assert_eq!(res.next, 6); + + // Class C + res = reader::vuint_at(data, res.next); + assert_eq!(res.val, 0); + assert_eq!(res.next, 9); + res = reader::vuint_at(data, res.next); + assert_eq!(res.val, (1 << 21) - 1); + assert_eq!(res.next, 12); + + // Class D + res = reader::vuint_at(data, res.next); + assert_eq!(res.val, 0); + assert_eq!(res.next, 16); + res = reader::vuint_at(data, res.next); + assert_eq!(res.val, (1 << 28) - 1); + assert_eq!(res.next, 20); + } + #[test] fn test_option_int() { fn test_v(v: Option) {