@@ -183,3 +183,135 @@ impl Backend for TestBackend {
183
183
Ok ( ( ) )
184
184
}
185
185
}
186
+
187
+ #[ cfg( test) ]
188
+ mod tests {
189
+ use super :: * ;
190
+
191
+ #[ test]
192
+ fn new ( ) {
193
+ assert_eq ! (
194
+ TestBackend :: new( 10 , 2 ) ,
195
+ TestBackend {
196
+ width: 10 ,
197
+ height: 2 ,
198
+ buffer: Buffer :: with_lines( vec![ " " ; 2 ] ) ,
199
+ cursor: false ,
200
+ pos: ( 0 , 0 ) ,
201
+ }
202
+ ) ;
203
+ }
204
+ #[ test]
205
+ fn test_buffer_view ( ) {
206
+ let buffer = Buffer :: with_lines ( vec ! [ "aaaa" ; 2 ] ) ;
207
+ assert_eq ! ( buffer_view( & buffer) , "\" aaaa\" \n \" aaaa\" \n " ) ;
208
+ }
209
+
210
+ #[ test]
211
+ fn buffer_view_with_overwrites ( ) {
212
+ let multi_byte_char = "👨👩👧👦" ; // renders 8 wide
213
+ let buffer = Buffer :: with_lines ( vec ! [ multi_byte_char] ) ;
214
+ assert_eq ! (
215
+ buffer_view( & buffer) ,
216
+ format!(
217
+ r#""{multi_byte_char}" Hidden by multi-width symbols: [(1, " "), (2, " "), (3, " "), (4, " "), (5, " "), (6, " "), (7, " ")]
218
+ "# ,
219
+ multi_byte_char = multi_byte_char
220
+ )
221
+ ) ;
222
+ }
223
+
224
+ #[ test]
225
+ fn buffer ( ) {
226
+ let backend = TestBackend :: new ( 10 , 2 ) ;
227
+ assert_eq ! ( backend. buffer( ) , & Buffer :: with_lines( vec![ " " ; 2 ] ) ) ;
228
+ }
229
+
230
+ #[ test]
231
+ fn resize ( ) {
232
+ let mut backend = TestBackend :: new ( 10 , 2 ) ;
233
+ backend. resize ( 5 , 5 ) ;
234
+ assert_eq ! ( backend. buffer( ) , & Buffer :: with_lines( vec![ " " ; 5 ] ) ) ;
235
+ }
236
+
237
+ #[ test]
238
+ fn assert_buffer ( ) {
239
+ let backend = TestBackend :: new ( 10 , 2 ) ;
240
+ let buffer = Buffer :: with_lines ( vec ! [ " " ; 2 ] ) ;
241
+ backend. assert_buffer ( & buffer) ;
242
+ }
243
+
244
+ #[ test]
245
+ #[ should_panic]
246
+ fn assert_buffer_panics ( ) {
247
+ let backend = TestBackend :: new ( 10 , 2 ) ;
248
+ let buffer = Buffer :: with_lines ( vec ! [ "aaaaaaaaaa" ; 2 ] ) ;
249
+ backend. assert_buffer ( & buffer) ;
250
+ }
251
+
252
+ #[ test]
253
+ fn display ( ) {
254
+ let backend = TestBackend :: new ( 10 , 2 ) ;
255
+ assert_eq ! ( format!( "{}" , backend) , "\" \" \n \" \" \n " ) ;
256
+ }
257
+
258
+ #[ test]
259
+ fn draw ( ) {
260
+ let mut backend = TestBackend :: new ( 10 , 2 ) ;
261
+ let mut cell = Cell :: default ( ) ;
262
+ cell. set_symbol ( "a" ) ;
263
+ backend. draw ( [ ( 0 , 0 , & cell) ] . into_iter ( ) ) . unwrap ( ) ;
264
+ backend. draw ( [ ( 0 , 1 , & cell) ] . into_iter ( ) ) . unwrap ( ) ;
265
+ backend. assert_buffer ( & Buffer :: with_lines ( vec ! [ "a " ; 2 ] ) ) ;
266
+ }
267
+
268
+ #[ test]
269
+ fn hide_cursor ( ) {
270
+ let mut backend = TestBackend :: new ( 10 , 2 ) ;
271
+ backend. hide_cursor ( ) . unwrap ( ) ;
272
+ assert ! ( !backend. cursor) ;
273
+ }
274
+
275
+ #[ test]
276
+ fn show_cursor ( ) {
277
+ let mut backend = TestBackend :: new ( 10 , 2 ) ;
278
+ backend. show_cursor ( ) . unwrap ( ) ;
279
+ assert ! ( backend. cursor) ;
280
+ }
281
+
282
+ #[ test]
283
+ fn get_cursor ( ) {
284
+ let mut backend = TestBackend :: new ( 10 , 2 ) ;
285
+ assert_eq ! ( backend. get_cursor( ) . unwrap( ) , ( 0 , 0 ) ) ;
286
+ }
287
+
288
+ #[ test]
289
+ fn set_cursor ( ) {
290
+ let mut backend = TestBackend :: new ( 10 , 10 ) ;
291
+ backend. set_cursor ( 5 , 5 ) . unwrap ( ) ;
292
+ assert_eq ! ( backend. pos, ( 5 , 5 ) ) ;
293
+ }
294
+
295
+ #[ test]
296
+ fn clear ( ) {
297
+ let mut backend = TestBackend :: new ( 10 , 2 ) ;
298
+ let mut cell = Cell :: default ( ) ;
299
+ cell. set_symbol ( "a" ) ;
300
+ backend. draw ( [ ( 0 , 0 , & cell) ] . into_iter ( ) ) . unwrap ( ) ;
301
+ backend. draw ( [ ( 0 , 1 , & cell) ] . into_iter ( ) ) . unwrap ( ) ;
302
+ backend. clear ( ) . unwrap ( ) ;
303
+ backend. assert_buffer ( & Buffer :: with_lines ( vec ! [ " " ; 2 ] ) ) ;
304
+ }
305
+
306
+ #[ test]
307
+ fn size ( ) {
308
+ let backend = TestBackend :: new ( 10 , 2 ) ;
309
+ assert_eq ! ( backend. size( ) . unwrap( ) , Rect :: new( 0 , 0 , 10 , 2 ) ) ;
310
+ }
311
+
312
+ #[ test]
313
+ fn flush ( ) {
314
+ let mut backend = TestBackend :: new ( 10 , 2 ) ;
315
+ backend. flush ( ) . unwrap ( ) ;
316
+ }
317
+ }
0 commit comments