From be405536741d8ba5a97dd2f62aea9a6dcfdbc1b7 Mon Sep 17 00:00:00 2001 From: NikVolf Date: Wed, 30 Mar 2016 02:20:01 +0300 Subject: [PATCH] extra test and method encode fix --- ipc/tests/examples.rs | 12 ++++++++++++ ipc/tests/service.rs.in | 7 ++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ipc/tests/examples.rs b/ipc/tests/examples.rs index a285e4c52..2f50f13db 100644 --- a/ipc/tests/examples.rs +++ b/ipc/tests/examples.rs @@ -45,4 +45,16 @@ mod tests { assert_eq!(vec![0, 0, 0, 0, 0, 5], service_proxy.socket().borrow().write_buffer.clone()); assert_eq!(10, result); } + + #[test] + fn call_service_proxy_optional() { + let mut socket = TestSocket::new(); + socket.read_buffer = vec![0, 0, 0, 10]; + let service_proxy = ServiceProxy::new(socket); + + let result = service_proxy.rollback(Some(5), 10); + + assert_eq!(vec![0, 1, 1, 0, 0, 0, 5, 0, 0, 0, 10], service_proxy.socket().borrow().write_buffer.clone()); + assert_eq!(10, result); + } } diff --git a/ipc/tests/service.rs.in b/ipc/tests/service.rs.in index 7cb47cda6..2b529534a 100644 --- a/ipc/tests/service.rs.in +++ b/ipc/tests/service.rs.in @@ -29,10 +29,11 @@ impl Service { *lock = *lock + f as usize; f } - pub fn rollback(&self, a: u32, b: u32) -> i32 { + pub fn rollback(&self, a: Option, b: u32) -> i32 { + let a_0 = a.unwrap_or_else(|| 0); let mut lock = self.rollbacks.write().unwrap(); - *lock = *lock + a as usize - b as usize; - (a - b) as i32 + *lock = *lock + a_0 as usize - b as usize; + (a_0 - b) as i32 } }