Index: mojo/public/rust/tests/regression.rs |
diff --git a/mojo/public/rust/tests/regression.rs b/mojo/public/rust/tests/regression.rs |
deleted file mode 100644 |
index 8417b7d302f8d0d94cdb0c0f4ebaf6b8308cba33..0000000000000000000000000000000000000000 |
--- a/mojo/public/rust/tests/regression.rs |
+++ /dev/null |
@@ -1,107 +0,0 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-//! Tests validation functionality in the bindings package |
-//! |
-//! Test failure is defined as the function returning via panicking |
-//! and the result being caught in the test! macro. If a test function |
-//! returns without panicking, it is assumed to pass. |
- |
-#[macro_use] |
-extern crate mojo; |
- |
-use mojo::bindings::decoding::{Decoder, ValidationError}; |
-use mojo::bindings::encoding; |
-use mojo::bindings::encoding::{Encoder, DataHeaderValue, Context}; |
-use mojo::bindings::mojom::{MojomEncodable, MojomPointer, MojomStruct}; |
-use mojo::system; |
-use mojo::system::UntypedHandle; |
- |
-#[macro_use] |
-mod util; |
- |
-const STRUCT_A_VERSIONS: [(u32, u32); 1] = [(0, 16)]; |
- |
-struct StructA<T: MojomEncodable> { |
- param0: [T; 3], |
-} |
- |
-impl<T: MojomEncodable> MojomPointer for StructA<T> { |
- fn header_data(&self) -> DataHeaderValue { |
- DataHeaderValue::Version(0) |
- } |
- fn serialized_size(&self, _context: &Context) -> usize { |
- 16 |
- } |
- fn encode_value(self, encoder: &mut Encoder, context: Context) { |
- MojomEncodable::encode(self.param0, encoder, context.clone()); |
- } |
- fn decode_value(decoder: &mut Decoder, context: Context) -> Result<Self, ValidationError> { |
- let _version = { |
- let mut state = decoder.get_mut(&context); |
- match state.decode_struct_header(&STRUCT_A_VERSIONS) { |
- Ok(header) => header.data(), |
- Err(err) => return Err(err), |
- } |
- }; |
- let param0 = match <[T; 3]>::decode(decoder, context.clone()) { |
- Ok(value) => value, |
- Err(err) => return Err(err), |
- }; |
- Ok(StructA { param0: param0 }) |
- } |
-} |
- |
-impl<T: MojomEncodable> MojomEncodable for StructA<T> { |
- impl_encodable_for_pointer!(); |
- fn compute_size(&self, context: Context) -> usize { |
- encoding::align_default(self.serialized_size(&context)) + |
- self.param0.compute_size(context.clone()) |
- } |
-} |
- |
-impl<T: MojomEncodable> MojomStruct for StructA<T> {} |
- |
-tests! { |
- // Fixed size arrays have complex and unsafe semantics to ensure |
- // there are no memory leaks. We test this behavior here to make |
- // sure memory isn't becoming corrupted. |
- fn regression_fixed_size_array_error_propagates_safely() { |
- let handle1 = unsafe { system::acquire(0) }; |
- let handle2 = unsafe { system::acquire(0) }; |
- let handle3 = unsafe { system::acquire(0) }; |
- let val = StructA { |
- param0: [handle1, handle2, handle3], |
- }; |
- let (mut buffer, mut handles) = val.auto_serialize(); |
- handles.truncate(1); |
- let new_val = <StructA<UntypedHandle>>::deserialize(&mut buffer[..], handles); |
- match new_val { |
- Ok(_) => panic!("Value should not be okay!"), |
- Err(err) => assert_eq!(err, ValidationError::IllegalHandle), |
- } |
- } |
- |
- // Same as the above test, but verifies that drop() is called. |
- // For the only handle that should drop, we make the handle some |
- // random number which is potentially a valid handle. When on |
- // drop() we try to close it, we should panic. |
- #[should_panic] |
- fn regression_fixed_size_array_verify_drop() { |
- let handle1 = unsafe { system::acquire(42) }; |
- let handle2 = unsafe { system::acquire(0) }; |
- let handle3 = unsafe { system::acquire(0) }; |
- let val = StructA { |
- param0: [handle1, handle2, handle3], |
- }; |
- let (mut buffer, mut handles) = val.auto_serialize(); |
- handles.truncate(1); |
- let new_val = <StructA<UntypedHandle>>::deserialize(&mut buffer[..], handles); |
- match new_val { |
- Ok(_) => panic!("Value should not be okay!"), |
- Err(err) => assert_eq!(err, ValidationError::IllegalHandle), |
- } |
- } |
-} |
- |