1
- use protobuf:: reflect:: FileDescriptor ;
2
1
use protobuf:: reflect:: ReflectValueRef ;
2
+ use protobuf:: reflect:: { FileDescriptor , ReflectValueBox } ;
3
3
4
4
use super :: test_dynamic_pb;
5
5
6
- fn do_test ( file_descriptor : & FileDescriptor ) {
6
+ fn dynamic_file_descriptor ( ) -> FileDescriptor {
7
+ FileDescriptor :: new_dynamic (
8
+ test_dynamic_pb:: file_descriptor ( ) . get_proto ( ) . clone ( ) ,
9
+ Vec :: new ( ) ,
10
+ )
11
+ }
12
+
13
+ fn do_test_get_set ( file_descriptor : & FileDescriptor ) {
7
14
let m = file_descriptor
8
15
. get_message_by_package_relative_name ( "ForDynamicTest" )
9
16
. unwrap ( ) ;
@@ -18,14 +25,33 @@ fn do_test(file_descriptor: &FileDescriptor) {
18
25
}
19
26
20
27
#[ test]
21
- fn test_generated ( ) {
22
- do_test ( & test_dynamic_pb:: file_descriptor ( ) ) ;
28
+ fn generated_get_set ( ) {
29
+ do_test_get_set ( & test_dynamic_pb:: file_descriptor ( ) ) ;
23
30
}
24
31
25
32
#[ test]
26
- fn test_dynamic ( ) {
27
- do_test ( & FileDescriptor :: new_dynamic (
28
- test_dynamic_pb:: file_descriptor ( ) . get_proto ( ) . clone ( ) ,
29
- Vec :: new ( ) ,
30
- ) ) ;
33
+ fn dynamic_get_set ( ) {
34
+ do_test_get_set ( & dynamic_file_descriptor ( ) ) ;
35
+ }
36
+
37
+ fn do_test_set_panic_on_wrong_field_type ( file_descriptor : & FileDescriptor ) {
38
+ let m = file_descriptor
39
+ . get_message_by_package_relative_name ( "ForDynamicTest" )
40
+ . unwrap ( ) ;
41
+ let f = m. get_field_by_name ( "ff" ) . unwrap ( ) ;
42
+ let mut m = m. new_instance ( ) ;
43
+ let m = & mut * m;
44
+ f. set_singular_field ( m, ReflectValueBox :: from ( 10i64 ) ) ;
45
+ }
46
+
47
+ #[ test]
48
+ #[ should_panic]
49
+ fn generated_set_panic_on_wrong_field_type ( ) {
50
+ do_test_set_panic_on_wrong_field_type ( & test_dynamic_pb:: file_descriptor ( ) ) ;
51
+ }
52
+
53
+ #[ test]
54
+ #[ should_panic]
55
+ fn dynamic_set_panic_on_wrong_field_type ( ) {
56
+ do_test_set_panic_on_wrong_field_type ( & dynamic_file_descriptor ( ) ) ;
31
57
}
0 commit comments