@@ -3,41 +3,48 @@ extern crate modbus;
3
3
4
4
#[ cfg( feature="modbus-server-tests" ) ]
5
5
mod modbus_server_tests {
6
- use test_server:: start_dummy_server;
7
- use modbus:: tcp:: Transport ;
6
+ use test_server:: { ChildKiller , start_dummy_server} ;
7
+ use modbus:: tcp:: { Config , Transport } ;
8
8
use modbus:: { Client , Coil } ;
9
9
use modbus:: scoped:: { ScopedCoil , ScopedRegister , CoilDropFunction , RegisterDropFunction } ;
10
10
11
+ fn start_dummy_server_with_cfg ( ) -> ( ChildKiller , Config ) {
12
+ let ( k, port) = start_dummy_server ( None ) ;
13
+ let mut cfg = Config :: default ( ) ;
14
+ cfg. tcp_port = port;
15
+ ( k, cfg)
16
+ }
17
+
11
18
/// /////////////////////
12
19
/// simple READ tests
13
20
#[ test]
14
21
fn test_read_coils ( ) {
15
- let ( _s, port ) = start_dummy_server ( None ) ;
16
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
22
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
23
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
17
24
assert_eq ! ( trans. read_coils( 0 , 5 ) . unwrap( ) . len( ) , 5 ) ;
18
25
assert ! ( trans. read_coils( 0 , 5 ) . unwrap( ) . iter( ) . all( |c| * c == Coil :: Off ) ) ;
19
26
}
20
27
21
28
#[ test]
22
29
fn test_read_discrete_inputs ( ) {
23
- let ( _s, port ) = start_dummy_server ( None ) ;
24
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
30
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
31
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
25
32
assert_eq ! ( trans. read_discrete_inputs( 0 , 5 ) . unwrap( ) . len( ) , 5 ) ;
26
33
assert ! ( trans. read_discrete_inputs( 0 , 5 ) . unwrap( ) . iter( ) . all( |c| * c == Coil :: Off ) ) ;
27
34
}
28
35
29
36
#[ test]
30
37
fn test_read_holding_registers ( ) {
31
- let ( _s, port ) = start_dummy_server ( None ) ;
32
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
38
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
39
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
33
40
assert_eq ! ( trans. read_holding_registers( 0 , 5 ) . unwrap( ) . len( ) , 5 ) ;
34
41
assert ! ( trans. read_holding_registers( 0 , 5 ) . unwrap( ) . iter( ) . all( |c| * c == 0 ) ) ;
35
42
}
36
43
37
44
#[ test]
38
45
fn test_read_input_registers ( ) {
39
- let ( _s, port ) = start_dummy_server ( None ) ;
40
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
46
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
47
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
41
48
assert_eq ! ( trans. read_input_registers( 0 , 5 ) . unwrap( ) . len( ) , 5 ) ;
42
49
assert ! ( trans. read_input_registers( 0 , 5 ) . unwrap( ) . iter( ) . all( |c| * c == 0 ) ) ;
43
50
}
@@ -46,30 +53,30 @@ mod modbus_server_tests {
46
53
/// simple WRITE tests
47
54
#[ test]
48
55
fn test_write_single_coil ( ) {
49
- let ( _s, port ) = start_dummy_server ( None ) ;
50
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
56
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
57
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
51
58
assert ! ( trans. write_single_coil( 0 , Coil :: On ) . is_ok( ) ) ;
52
59
}
53
60
54
61
#[ test]
55
62
fn test_write_single_register ( ) {
56
- let ( _s, port ) = start_dummy_server ( None ) ;
57
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
63
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
64
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
58
65
assert ! ( trans. write_single_register( 0 , 1 ) . is_ok( ) ) ;
59
66
}
60
67
61
68
#[ test]
62
69
fn test_write_multiple_coils ( ) {
63
- let ( _s, port ) = start_dummy_server ( None ) ;
64
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
70
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
71
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
65
72
assert ! ( trans. write_multiple_coils( 0 , & [ Coil :: On , Coil :: Off ] ) . is_ok( ) ) ;
66
73
// assert!(write_multiple_coils(&mut trans, 0, &[]).is_err());
67
74
}
68
75
69
76
#[ test]
70
77
fn test_write_multiple_registers ( ) {
71
- let ( _s, port ) = start_dummy_server ( None ) ;
72
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
78
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
79
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
73
80
assert ! ( trans. write_multiple_registers( 0 , & [ 0 , 1 , 2 , 3 ] ) . is_ok( ) ) ;
74
81
// assert!(write_multiple_registers(&mut trans, 0, &[]).is_err());
75
82
}
@@ -78,8 +85,8 @@ mod modbus_server_tests {
78
85
/// coil WRITE-READ tests
79
86
#[ test]
80
87
fn test_write_read_single_coils ( ) {
81
- let ( _s, port ) = start_dummy_server ( None ) ;
82
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
88
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
89
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
83
90
84
91
assert ! ( trans. write_single_coil( 1 , Coil :: On ) . is_ok( ) ) ;
85
92
assert ! ( trans. write_single_coil( 3 , Coil :: On ) . is_ok( ) ) ;
@@ -99,8 +106,8 @@ mod modbus_server_tests {
99
106
100
107
#[ test]
101
108
fn test_write_read_single_register ( ) {
102
- let ( _s, port ) = start_dummy_server ( None ) ;
103
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
109
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
110
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
104
111
assert ! ( trans. write_single_register( 0 , 23 ) . is_ok( ) ) ;
105
112
assert_eq ! ( trans. read_holding_registers( 0 , 1 ) . unwrap( ) , vec![ 23 ] ) ;
106
113
assert ! ( trans. write_single_register( 0 , 0 ) . is_ok( ) ) ;
@@ -113,8 +120,8 @@ mod modbus_server_tests {
113
120
114
121
#[ test]
115
122
fn test_write_read_multiple_coils ( ) {
116
- let ( _s, port ) = start_dummy_server ( None ) ;
117
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
123
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
124
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
118
125
assert ! ( trans. write_multiple_coils( 0 , & [ Coil :: Off , Coil :: On ] ) . is_ok( ) ) ;
119
126
assert_eq ! ( trans. read_coils( 0 , 3 ) . unwrap( ) ,
120
127
& [ Coil :: Off , Coil :: On , Coil :: Off ] ) ;
@@ -124,8 +131,8 @@ mod modbus_server_tests {
124
131
125
132
#[ test]
126
133
fn test_write_read_multiple_registers ( ) {
127
- let ( _s, port ) = start_dummy_server ( None ) ;
128
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
134
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
135
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
129
136
// assert!(write_multiple_registers(&mut trans, 0, &[]).is_err());
130
137
assert ! ( trans. write_multiple_registers( 0 , & [ 23 ] ) . is_ok( ) ) ;
131
138
assert_eq ! ( trans. read_holding_registers( 0 , 1 ) . unwrap( ) , & [ 23 ] ) ;
@@ -138,16 +145,16 @@ mod modbus_server_tests {
138
145
139
146
#[ test]
140
147
fn test_write_too_big ( ) {
141
- let ( _s, port ) = start_dummy_server ( None ) ;
142
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
148
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
149
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
143
150
assert ! ( trans. write_multiple_registers( 0 , & [ 0xdead ; 123 ] ) . is_ok( ) ) ;
144
151
assert ! ( trans. write_multiple_registers( 0 , & [ 0xdead ; 124 ] ) . is_err( ) ) ;
145
152
}
146
153
147
154
#[ test]
148
155
fn test_scoped_coil ( ) {
149
- let ( _s, port ) = start_dummy_server ( None ) ;
150
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
156
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
157
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
151
158
152
159
{
153
160
let mut auto = ScopedCoil :: new ( & mut trans, 0 , CoilDropFunction :: On ) . unwrap ( ) ;
@@ -189,12 +196,12 @@ mod modbus_server_tests {
189
196
190
197
#[ test]
191
198
fn test_scoped_register ( ) {
192
- let ( _s, port ) = start_dummy_server ( None ) ;
193
- let mut trans = Transport :: new_with_port ( "127.0.0.1" , port ) . unwrap ( ) ;
199
+ let ( _s, cfg ) = start_dummy_server_with_cfg ( ) ;
200
+ let mut trans = Transport :: new_with_cfg ( "127.0.0.1" , cfg ) . unwrap ( ) ;
194
201
195
202
{
196
203
let mut auto = ScopedRegister :: new ( & mut trans, 0 , RegisterDropFunction :: Value ( 0xbeef ) )
197
- . unwrap ( ) ;
204
+ . unwrap ( ) ;
198
205
assert_eq ! ( auto. mut_transport( ) . read_holding_registers( 0 , 1 ) . unwrap( ) ,
199
206
vec![ 0x0000 ] ) ;
200
207
}
@@ -209,23 +216,23 @@ mod modbus_server_tests {
209
216
210
217
{
211
218
let mut auto = ScopedRegister :: new ( & mut trans, 0 , RegisterDropFunction :: Increment )
212
- . unwrap ( ) ;
219
+ . unwrap ( ) ;
213
220
assert_eq ! ( auto. mut_transport( ) . read_holding_registers( 0 , 1 ) . unwrap( ) ,
214
221
vec![ 0x0000 ] ) ;
215
222
}
216
223
assert_eq ! ( trans. read_holding_registers( 0 , 1 ) . unwrap( ) , vec![ 0x0001 ] ) ;
217
224
218
225
{
219
226
let mut auto = ScopedRegister :: new ( & mut trans, 0 , RegisterDropFunction :: Increment )
220
- . unwrap ( ) ;
227
+ . unwrap ( ) ;
221
228
assert_eq ! ( auto. mut_transport( ) . read_holding_registers( 0 , 1 ) . unwrap( ) ,
222
229
vec![ 0x0001 ] ) ;
223
230
}
224
231
assert_eq ! ( trans. read_holding_registers( 0 , 1 ) . unwrap( ) , vec![ 0x0002 ] ) ;
225
232
226
233
{
227
234
let mut auto = ScopedRegister :: new ( & mut trans, 0 , RegisterDropFunction :: Decrement )
228
- . unwrap ( ) ;
235
+ . unwrap ( ) ;
229
236
assert_eq ! ( auto. mut_transport( ) . read_holding_registers( 0 , 1 ) . unwrap( ) ,
230
237
vec![ 0x0002 ] ) ;
231
238
}
@@ -234,7 +241,7 @@ mod modbus_server_tests {
234
241
{
235
242
let fun = |v| v + 0xbeee ;
236
243
let mut auto = ScopedRegister :: new ( & mut trans, 0 , RegisterDropFunction :: Fun ( & fun) )
237
- . unwrap ( ) ;
244
+ . unwrap ( ) ;
238
245
assert_eq ! ( auto. mut_transport( ) . read_holding_registers( 0 , 1 ) . unwrap( ) ,
239
246
vec![ 0x0001 ] ) ;
240
247
}
0 commit comments