Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(512)

Side by Side Diff: mojo/public/rust/tests/validation.rs

Issue 2220183003: Rust: Add validation to decode (Closed) Base URL: git@github.com:domokit/mojo.git@coder-testing
Patch Set: Pass all tests Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 //! Tests encoding and decoding functionality in the bindings package
6 //!
7 //! Test failure is defined as the function returning via panicking
8 //! and the result being caught in the test! macro. If a test function
9 //! returns without panicking, it is assumed to pass.
10
11 #[macro_use]
12 extern crate mojo;
13
14 use mojo::bindings::mojom::MojomMessageOption;
15 use mojo::system;
16
17 #[macro_use]
18 mod util;
19
20 use util::mojom_validation::*;
21
22 /// This macro is a wrapper for the tests! macro as it takes advantage of the
23 /// shared code between tests.
24 ///
25 /// Given a test name, it will generate a test function. In this test function
26 /// we perform the following steps:
27 /// 1. Decode the header of the validation input.
28 /// 3. Decode the payload of the validation input.
29 ///
30 macro_rules! validation_tests {
31 ($($name:ident => $req_type:ident;)*) => {
32 tests! {
33 $(
34 fn $name() {
35 let data = include_str!(concat!("../../interfaces/bindings/tests /data/validation/",
36 stringify!($name),
37 ".data"));
38 let expected = include_str!(concat!("../../interfaces/bindings/t ests/data/validation/",
39 stringify!($name),
40 ".expected")).trim();
41 match util::parse_validation_test(data) {
42 Ok((data, num_handles)) => {
43 let mut mock_handles = Vec::with_capacity(num_handles);
44 for _ in 0..num_handles {
45 mock_handles.push(unsafe { system::acquire(0) });
46 }
47 match $req_type::decode_message(data, mock_handles) {
48 Ok(_) => panic!("Should not be valid!"),
49 Err(err) => assert_eq!(err.as_str(), expected),
50 }
51 },
52 Err(msg) => panic!("Error: {}", msg),
53 }
54 }
55 )*
56 }
57 }
58 }
59
60 validation_tests! {
61 conformance_empty => ConformanceTestInterfaceRequestOption;
62 conformance_mthd0_incomplete_struct => ConformanceTestInterfaceRequestOption ;
63 conformance_mthd0_incomplete_struct_header => ConformanceTestInterfaceReques tOption;
64 conformance_mthd0_invalid_request_flags => ConformanceTestInterfaceRequestOp tion;
65 conformance_mthd0_invalid_request_flags2 => ConformanceTestInterfaceRequestO ption;
66 conformance_mthd0_struct_num_bytes_huge => ConformanceTestInterfaceRequestOp tion;
67 conformance_mthd0_struct_num_bytes_less_than_min_requirement => ConformanceT estInterfaceRequestOption;
68 conformance_mthd0_struct_num_bytes_less_than_struct_header => ConformanceTes tInterfaceRequestOption;
69 conformance_mthd10_null_keys => ConformanceTestInterfaceRequestOption;
70 conformance_mthd10_null_values => ConformanceTestInterfaceRequestOption;
71 conformance_mthd10_one_null_key => ConformanceTestInterfaceRequestOption;
72 conformance_mthd10_unequal_array_size => ConformanceTestInterfaceRequestOpti on;
73 conformance_mthd11_num_bytes_version_mismatch_1 => ConformanceTestInterfaceR equestOption;
74 conformance_mthd11_num_bytes_version_mismatch_2 => ConformanceTestInterfaceR equestOption;
75 conformance_mthd12_invalid_request_flags => ConformanceTestInterfaceRequestO ption;
76 conformance_mthd14_unexpected_null_array_in_union => ConformanceTestInterfac eRequestOption;
77 conformance_mthd14_unexpected_null_map_in_union => ConformanceTestInterfaceR equestOption;
78 conformance_mthd14_unexpected_null_struct_in_union => ConformanceTestInterfa ceRequestOption;
79 conformance_mthd14_unexpected_null_union_in_union => ConformanceTestInterfac eRequestOption;
80 conformance_mthd15_unexpected_null_union_in_array => ConformanceTestInterfac eRequestOption;
81 conformance_mthd1_misaligned_struct => ConformanceTestInterfaceRequestOption ;
82 conformance_mthd1_struct_pointer_overflow => ConformanceTestInterfaceRequest Option;
83 conformance_mthd1_unexpected_null_struct => ConformanceTestInterfaceRequestO ption;
84 conformance_mthd2_multiple_pointers_to_same_struct => ConformanceTestInterfa ceRequestOption;
85 conformance_mthd2_overlapped_objects => ConformanceTestInterfaceRequestOptio n;
86 conformance_mthd2_wrong_layout_order => ConformanceTestInterfaceRequestOptio n;
87 conformance_mthd3_array_num_bytes_huge => ConformanceTestInterfaceRequestOpt ion;
88 conformance_mthd3_array_num_bytes_less_than_array_header => ConformanceTestI nterfaceRequestOption;
89 conformance_mthd3_array_num_bytes_less_than_necessary_size => ConformanceTes tInterfaceRequestOption;
90 conformance_mthd3_array_pointer_overflow => ConformanceTestInterfaceRequestO ption;
91 conformance_mthd3_incomplete_array => ConformanceTestInterfaceRequestOption;
92 conformance_mthd3_incomplete_array_header => ConformanceTestInterfaceRequest Option;
93 conformance_mthd3_misaligned_array => ConformanceTestInterfaceRequestOption;
94 conformance_mthd3_unexpected_null_array => ConformanceTestInterfaceRequestOp tion;
95 conformance_mthd4_multiple_pointers_to_same_array => ConformanceTestInterfac eRequestOption;
96 conformance_mthd4_overlapped_objects => ConformanceTestInterfaceRequestOptio n;
97 conformance_mthd4_wrong_layout_order => ConformanceTestInterfaceRequestOptio n;
98 conformance_mthd5_handle_out_of_range => ConformanceTestInterfaceRequestOpti on;
99 conformance_mthd5_multiple_handles_with_same_value_1 => ConformanceTestInter faceRequestOption;
100 conformance_mthd5_multiple_handles_with_same_value_2 => ConformanceTestInter faceRequestOption;
101 conformance_mthd5_unexpected_invalid_handle => ConformanceTestInterfaceReque stOption;
102 conformance_mthd5_wrong_handle_order => ConformanceTestInterfaceRequestOptio n;
103 conformance_mthd6_nested_array_num_bytes_less_than_necessary_size => Conform anceTestInterfaceRequestOption;
104 conformance_mthd7_unexpected_null_fixed_array => ConformanceTestInterfaceReq uestOption;
105 conformance_mthd7_unmatched_array_elements => ConformanceTestInterfaceReques tOption;
106 conformance_mthd7_unmatched_array_elements_nested => ConformanceTestInterfac eRequestOption;
107 conformance_mthd8_array_num_bytes_overflow => ConformanceTestInterfaceReques tOption;
108 conformance_mthd8_unexpected_null_array => ConformanceTestInterfaceRequestOp tion;
109 conformance_mthd8_unexpected_null_string => ConformanceTestInterfaceRequestO ption;
110 conformance_mthd9_unexpected_null_array => ConformanceTestInterfaceRequestOp tion;
111 boundscheck_msghdr_no_such_method => BoundsCheckTestInterfaceRequestOption;
112 conformance_msghdr_incomplete_struct => ConformanceTestInterfaceRequestOptio n;
113 conformance_msghdr_incomplete_struct_header => ConformanceTestInterfaceReque stOption;
114 conformance_msghdr_invalid_flag_combo => ConformanceTestInterfaceRequestOpti on;
115 conformance_msghdr_missing_request_id => ConformanceTestInterfaceRequestOpti on;
116 conformance_msghdr_no_such_method => ConformanceTestInterfaceRequestOption;
117 conformance_msghdr_num_bytes_huge => ConformanceTestInterfaceRequestOption;
118 conformance_msghdr_num_bytes_less_than_min_requirement => ConformanceTestInt erfaceRequestOption;
119 conformance_msghdr_num_bytes_less_than_struct_header => ConformanceTestInter faceRequestOption;
120 conformance_msghdr_num_bytes_version_mismatch_1 => ConformanceTestInterfaceR equestOption;
121 conformance_msghdr_num_bytes_version_mismatch_2 => ConformanceTestInterfaceR equestOption;
122 conformance_msghdr_num_bytes_version_mismatch_3 => ConformanceTestInterfaceR equestOption;
123 resp_boundscheck_msghdr_no_such_method => BoundsCheckTestInterfaceResponseOp tion;
124 resp_conformance_msghdr_invalid_response_flags1 => ConformanceTestInterfaceR esponseOption;
125 resp_conformance_msghdr_invalid_response_flags2 => ConformanceTestInterfaceR esponseOption;
126 resp_conformance_msghdr_no_such_method => ConformanceTestInterfaceResponseOp tion;
127 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698