@@ -616,6 +616,32 @@ def test_add_dataframe_to_tree_by_path_col_name(self):
616
616
assert_tree_structure_node_root (self .root )
617
617
618
618
def test_add_dataframe_to_tree_by_path_col_name_reverse (self ):
619
+ data = pd .DataFrame (
620
+ [
621
+ ["a" , 0 ],
622
+ ["a/b" , None ],
623
+ ["a/c" , - 1 ],
624
+ ["a/b/d" , 40 ],
625
+ ["a/b/e" , 35 ],
626
+ ["a/c/f" , 38 ],
627
+ ["a/b/e/g" , 10 ],
628
+ ["a/b/e/h" , 6 ],
629
+ ],
630
+ columns = ["PATH" , "value" ],
631
+ )
632
+ add_dataframe_to_tree_by_path (self .root , data )
633
+ assert_tree_structure_basenode_root (self .root )
634
+ assert_tree_structure_node_root (self .root )
635
+ assert hasattr (
636
+ self .root , "value"
637
+ ), "Check root attribute, expected value attribute"
638
+ assert self .root .value == 0 , "Check root value, expected 0"
639
+ assert not hasattr (
640
+ self .root ["b" ], "value"
641
+ ), "Check b attribute, expected no value attribute"
642
+ assert self .root ["c" ].value == - 1 , "Check c value, expected -1"
643
+
644
+ def test_add_dataframe_to_tree_by_path_zero_attribute (self ):
619
645
add_dataframe_to_tree_by_path (
620
646
self .root ,
621
647
self .data [["age" , "PATH" ]],
@@ -1025,6 +1051,32 @@ def test_add_dataframe_to_tree_by_name_col_name_reverse(self):
1025
1051
assert_tree_structure_basenode_root_attr (self .root )
1026
1052
assert_tree_structure_node_root (self .root )
1027
1053
1054
+ def test_add_dataframe_to_tree_by_name_zero_attribute (self ):
1055
+ data = pd .DataFrame (
1056
+ [
1057
+ ["a" , 0 ],
1058
+ ["b" , None ],
1059
+ ["c" , - 1 ],
1060
+ ["d" , 40 ],
1061
+ ["e" , 35 ],
1062
+ ["f" , 38 ],
1063
+ ["g" , 10 ],
1064
+ ["h" , 6 ],
1065
+ ],
1066
+ columns = ["NAME" , "value" ],
1067
+ )
1068
+ add_dataframe_to_tree_by_name (self .root , data )
1069
+ assert_tree_structure_basenode_root (self .root )
1070
+ assert_tree_structure_node_root (self .root )
1071
+ assert hasattr (
1072
+ self .root , "value"
1073
+ ), "Check root attribute, expected value attribute"
1074
+ assert self .root .value == 0 , "Check root value, expected 0"
1075
+ assert not hasattr (
1076
+ self .root ["b" ], "value"
1077
+ ), "Check b attribute, expected no value attribute"
1078
+ assert self .root ["c" ].value == - 1 , "Check c value, expected -1"
1079
+
1028
1080
def test_add_dataframe_to_tree_by_name_empty_error (self ):
1029
1081
with pytest .raises (ValueError ) as exc_info :
1030
1082
add_dataframe_to_tree_by_name (self .root , pd .DataFrame ())
@@ -2075,6 +2127,30 @@ def test_dataframe_to_tree_no_attribute():
2075
2127
root = dataframe_to_tree (path_data )
2076
2128
assert_tree_structure_basenode_root (root )
2077
2129
2130
+ @staticmethod
2131
+ def test_dataframe_to_tree_zero_attribute ():
2132
+ path_data = pd .DataFrame (
2133
+ [
2134
+ ["a" , 0 ],
2135
+ ["a/b" , None ],
2136
+ ["a/c" , - 1 ],
2137
+ ["a/b/d" , 1 ],
2138
+ ["a/b/e" , 1 ],
2139
+ ["a/c/f" , 1 ],
2140
+ ["a/b/e/g" , 1 ],
2141
+ ["a/b/e/h" , 1 ],
2142
+ ],
2143
+ columns = ["PATH" , "value" ],
2144
+ )
2145
+ root = dataframe_to_tree (path_data )
2146
+ assert_tree_structure_basenode_root (root )
2147
+ assert hasattr (root , "value" ), "Check root attribute, expected value attribute"
2148
+ assert root .value == 0 , "Check root value, expected 0"
2149
+ assert not hasattr (
2150
+ root ["b" ], "value"
2151
+ ), "Check b attribute, expected no value attribute"
2152
+ assert root ["c" ].value == - 1 , "Check c value, expected -1"
2153
+
2078
2154
@staticmethod
2079
2155
def test_dataframe_to_tree_empty_row_error ():
2080
2156
path_data = pd .DataFrame (columns = ["PATH" , "age" ])
@@ -2427,6 +2503,31 @@ def test_dataframe_to_tree_by_relation_col_name_reverse(self):
2427
2503
assert_tree_structure_basenode_root_attr (root )
2428
2504
assert_tree_structure_node_root (root )
2429
2505
2506
+ @staticmethod
2507
+ def test_dataframe_to_tree_by_relation_zero_attribute ():
2508
+ relation_data = pd .DataFrame (
2509
+ [
2510
+ ["a" , None , 0 ],
2511
+ ["b" , "a" , None ],
2512
+ ["c" , "a" , - 1 ],
2513
+ ["d" , "b" , 40 ],
2514
+ ["e" , "b" , 35 ],
2515
+ ["f" , "c" , 38 ],
2516
+ ["g" , "e" , 10 ],
2517
+ ["h" , "e" , 6 ],
2518
+ ],
2519
+ columns = ["child" , "parent" , "value" ],
2520
+ )
2521
+ root = dataframe_to_tree_by_relation (relation_data )
2522
+ assert_tree_structure_basenode_root (root )
2523
+ assert_tree_structure_node_root (root )
2524
+ assert hasattr (root , "value" ), "Check root attribute, expected value attribute"
2525
+ assert root .value == 0 , "Check root value, expected 0"
2526
+ assert not hasattr (
2527
+ root ["b" ], "value"
2528
+ ), "Check b attribute, expected no value attribute"
2529
+ assert root ["c" ].value == - 1 , "Check c value, expected -1"
2530
+
2430
2531
@staticmethod
2431
2532
def test_dataframe_to_tree_by_relation_empty_row_error ():
2432
2533
relation_data = pd .DataFrame (columns = ["child" , "parent" ])
0 commit comments