@@ -140,3 +140,45 @@ fn repeater_on_off(backend: TestBackend) {
140
140
runner. check_block_powered ( trapdoor_pos, false ) ;
141
141
}
142
142
}
143
+
144
+ test_all_backends ! ( wire_barely_reaches) ;
145
+ fn wire_barely_reaches ( backend : TestBackend ) {
146
+ let lever_pos = pos ( 0 , 1 , 0 ) ;
147
+ let trapdoor_pos = pos ( 16 , 1 , 0 ) ;
148
+
149
+ let mut world = TestWorld :: new ( 2 ) ;
150
+ make_lever ( & mut world, lever_pos) ;
151
+ // 15 wire blocks between lever and trapdoor
152
+ for x in 1 ..=15 {
153
+ make_wire ( & mut world, pos ( x, 1 , 0 ) ) ;
154
+ }
155
+ world. set_block ( trapdoor_pos, trapdoor ( ) ) ;
156
+
157
+ let mut runner = BackendRunner :: new ( world, backend) ;
158
+ runner. check_block_powered ( trapdoor_pos, false ) ;
159
+ runner. use_block ( lever_pos) ;
160
+ runner. check_block_powered ( trapdoor_pos, true ) ;
161
+ runner. use_block ( lever_pos) ;
162
+ runner. check_block_powered ( trapdoor_pos, false ) ;
163
+ }
164
+
165
+ test_all_backends ! ( wire_no_reach) ;
166
+ fn wire_no_reach ( backend : TestBackend ) {
167
+ let lever_pos = pos ( 0 , 1 , 0 ) ;
168
+ let trapdoor_pos = pos ( 17 , 1 , 0 ) ;
169
+
170
+ let mut world = TestWorld :: new ( 2 ) ;
171
+ make_lever ( & mut world, lever_pos) ;
172
+ // 16 wire blocks between lever and trapdoor
173
+ for x in 1 ..=16 {
174
+ make_wire ( & mut world, pos ( x, 1 , 0 ) ) ;
175
+ }
176
+ world. set_block ( trapdoor_pos, trapdoor ( ) ) ;
177
+
178
+ let mut runner = BackendRunner :: new ( world, backend) ;
179
+ runner. check_block_powered ( trapdoor_pos, false ) ;
180
+ runner. use_block ( lever_pos) ;
181
+ runner. check_block_powered ( trapdoor_pos, false ) ;
182
+ runner. use_block ( lever_pos) ;
183
+ runner. check_block_powered ( trapdoor_pos, false ) ;
184
+ }
0 commit comments