@@ -326,7 +326,171 @@ impl<T> BinaryTree<T> {
326
326
/// let n2_index = tree.add_right_node(root_index, n2);
327
327
///
328
328
/// assert_eq!(3, tree.len());
329
+ /// ```
329
330
pub fn len ( & self ) -> usize {
330
331
self . tree . len ( )
331
332
}
332
333
}
334
+
335
+ #[ cfg( test) ]
336
+ mod tests {
337
+ use crate :: binary_tree:: { BinaryTree , BinaryTreeNode } ;
338
+
339
+ #[ test]
340
+ fn doc_test_binarytreenode_new ( ) {
341
+ let root = BinaryTreeNode :: new ( 10 ) ;
342
+ assert_eq ! ( root. value, 10 ) ;
343
+ assert_eq ! ( root. index, 0 ) ;
344
+ assert_eq ! ( root. left, 0 ) ;
345
+ assert_eq ! ( root. right, 0 ) ;
346
+ }
347
+
348
+ #[ test]
349
+ fn binarytree_default ( ) {
350
+ let bt: BinaryTree < i32 > = BinaryTree :: default ( ) ;
351
+ assert_eq ! ( bt. len( ) , 0 ) ;
352
+ }
353
+
354
+ #[ test]
355
+ fn binarytree_new ( ) {
356
+ let bt: BinaryTree < i32 > = BinaryTree :: new ( ) ;
357
+ assert_eq ! ( bt. len( ) , 0 ) ;
358
+ }
359
+
360
+ #[ test]
361
+ fn binarytree_is_empty ( ) {
362
+ let mut bt: BinaryTree < f32 > = BinaryTree :: new ( ) ;
363
+ assert ! ( bt. is_empty( ) ) ;
364
+ let root = BinaryTreeNode :: new ( 10.0 ) ;
365
+ bt. add_root ( root) ;
366
+ assert_eq ! ( bt. is_empty( ) , false ) ;
367
+ }
368
+
369
+ #[ test]
370
+ fn doc_test_binarytree_add_root ( ) {
371
+ let mut tree: BinaryTree < f32 > = BinaryTree :: new ( ) ;
372
+ let root = BinaryTreeNode :: new ( 10.0 ) ;
373
+ let root_index = tree. add_root ( root) ;
374
+ assert_eq ! ( 0 , root_index) ;
375
+ }
376
+
377
+ #[ test]
378
+ fn doc_test_binarytree_get_root_index ( ) {
379
+ let mut tree: BinaryTree < f32 > = BinaryTree :: new ( ) ;
380
+ let root = BinaryTreeNode :: new ( 10.0 ) ;
381
+ let _ = tree. add_root ( root) ;
382
+ let root_index = tree. get_root_index ( ) ;
383
+ assert_eq ! ( 0 , root_index) ;
384
+ }
385
+
386
+ #[ test]
387
+ fn doc_test_binarytree_get_left_child ( ) {
388
+ let mut tree: BinaryTree < f32 > = BinaryTree :: new ( ) ;
389
+ let root = BinaryTreeNode :: new ( 10.0 ) ;
390
+ let root_index = tree. add_root ( root) ;
391
+ let left_node = BinaryTreeNode :: new ( 5.0 ) ;
392
+ let _ = tree. add_left_node ( root_index, left_node) ;
393
+ let root = tree. get_node ( root_index) . unwrap ( ) ;
394
+ let left_node = tree. get_left_child ( root) . unwrap ( ) ;
395
+ assert_eq ! ( left_node. value, 5.0 ) ;
396
+ }
397
+
398
+ #[ test]
399
+ fn doc_test_binarytree_get_right_child ( ) {
400
+ let mut tree: BinaryTree < f32 > = BinaryTree :: new ( ) ;
401
+ let root = BinaryTreeNode :: new ( 10.0 ) ;
402
+ let root_index = tree. add_root ( root) ;
403
+ let right_node = BinaryTreeNode :: new ( 5.0 ) ;
404
+ let _ = tree. add_right_node ( root_index, right_node) ;
405
+ let root = tree. get_node ( root_index) . unwrap ( ) ;
406
+ let right_node = tree. get_right_child ( root) . unwrap ( ) ;
407
+ assert_eq ! ( right_node. value, 5.0 ) ;
408
+ }
409
+
410
+ #[ test]
411
+ fn doc_test_get_node ( ) {
412
+ let mut tree: BinaryTree < i32 > = BinaryTree :: new ( ) ;
413
+ let root = BinaryTreeNode :: new ( 10 ) ;
414
+ let _ = tree. add_root ( root) ;
415
+ let root_index = tree. get_root_index ( ) ;
416
+ let root = tree. get_node ( root_index) . unwrap ( ) ;
417
+ assert_eq ! ( 10 , root. value)
418
+ }
419
+
420
+ #[ test]
421
+ fn doc_test_get_node_mut ( ) {
422
+ let mut tree: BinaryTree < i32 > = BinaryTree :: new ( ) ;
423
+ let root = BinaryTreeNode :: new ( 10 ) ;
424
+ let _ = tree. add_root ( root) ;
425
+ let root_index = tree. get_root_index ( ) ;
426
+ let root = tree. get_node_mut ( root_index) . unwrap ( ) ;
427
+ root. value = 11 ;
428
+ assert_eq ! ( 11 , root. value) ;
429
+ }
430
+
431
+ #[ test]
432
+ fn doc_test_add_left_node ( ) {
433
+ let mut tree: BinaryTree < f32 > = BinaryTree :: new ( ) ;
434
+ let root = BinaryTreeNode :: new ( 10.0 ) ;
435
+ let root_index = tree. add_root ( root) ;
436
+ let left_node = BinaryTreeNode :: new ( 5.0 ) ;
437
+ let _ = tree. add_left_node ( root_index, left_node) ;
438
+ let root = tree. get_node ( root_index) . unwrap ( ) ;
439
+ let left_node = tree. get_left_child ( root) . unwrap ( ) ;
440
+ assert_eq ! ( left_node. value, 5.0 ) ;
441
+ }
442
+
443
+ #[ test]
444
+ fn doc_test_add_right_node ( ) {
445
+ let mut tree: BinaryTree < f32 > = BinaryTree :: new ( ) ;
446
+ let root = BinaryTreeNode :: new ( 10.0 ) ;
447
+ let root_index = tree. add_root ( root) ;
448
+ let right_node = BinaryTreeNode :: new ( 5.0 ) ;
449
+ let _ = tree. add_right_node ( root_index, right_node) ;
450
+ let root = tree. get_node ( root_index) . unwrap ( ) ;
451
+ let right_node = tree. get_right_child ( root) . unwrap ( ) ;
452
+ assert_eq ! ( right_node. value, 5.0 ) ;
453
+ }
454
+
455
+ #[ test]
456
+ fn doc_test_print ( ) {
457
+ let mut tree: BinaryTree < f32 > = BinaryTree :: new ( ) ;
458
+ let root = BinaryTreeNode :: new ( 10.0 ) ;
459
+
460
+ let root_index = tree. add_root ( root) ;
461
+
462
+ let n1 = BinaryTreeNode :: new ( 5.0 ) ;
463
+ let n2 = BinaryTreeNode :: new ( 6.0 ) ;
464
+
465
+ let n1_index = tree. add_left_node ( root_index, n1) ;
466
+ let n2_index = tree. add_right_node ( root_index, n2) ;
467
+
468
+ let n3 = BinaryTreeNode :: new ( 7.0 ) ;
469
+ let n4 = BinaryTreeNode :: new ( 8.0 ) ;
470
+
471
+ tree. add_left_node ( n2_index, n3) ;
472
+ tree. add_right_node ( n2_index, n4) ;
473
+
474
+ let n5 = BinaryTreeNode :: new ( 9.0 ) ;
475
+
476
+ tree. add_left_node ( n1_index, n5) ;
477
+
478
+ tree. print ( ) ;
479
+ }
480
+
481
+ #[ test]
482
+ fn doc_test_tree_len ( ) {
483
+ let mut tree: BinaryTree < f32 > = BinaryTree :: new ( ) ;
484
+ let root = BinaryTreeNode :: new ( 10.0 ) ;
485
+
486
+ let root_index = tree. add_root ( root) ;
487
+
488
+ let n1 = BinaryTreeNode :: new ( 5.0 ) ;
489
+ let n2 = BinaryTreeNode :: new ( 6.0 ) ;
490
+
491
+ let _n1_index = tree. add_left_node ( root_index, n1) ;
492
+ let _n2_index = tree. add_right_node ( root_index, n2) ;
493
+
494
+ assert_eq ! ( 3 , tree. len( ) ) ;
495
+ }
496
+ }
0 commit comments