@@ -616,6 +616,32 @@ def test_add_dataframe_to_tree_by_path_col_name(self):
616616 assert_tree_structure_node_root (self .root )
617617
618618 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 ):
619645 add_dataframe_to_tree_by_path (
620646 self .root ,
621647 self .data [["age" , "PATH" ]],
@@ -1025,6 +1051,32 @@ def test_add_dataframe_to_tree_by_name_col_name_reverse(self):
10251051 assert_tree_structure_basenode_root_attr (self .root )
10261052 assert_tree_structure_node_root (self .root )
10271053
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+
10281080 def test_add_dataframe_to_tree_by_name_empty_error (self ):
10291081 with pytest .raises (ValueError ) as exc_info :
10301082 add_dataframe_to_tree_by_name (self .root , pd .DataFrame ())
@@ -2075,6 +2127,30 @@ def test_dataframe_to_tree_no_attribute():
20752127 root = dataframe_to_tree (path_data )
20762128 assert_tree_structure_basenode_root (root )
20772129
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+
20782154 @staticmethod
20792155 def test_dataframe_to_tree_empty_row_error ():
20802156 path_data = pd .DataFrame (columns = ["PATH" , "age" ])
@@ -2427,6 +2503,31 @@ def test_dataframe_to_tree_by_relation_col_name_reverse(self):
24272503 assert_tree_structure_basenode_root_attr (root )
24282504 assert_tree_structure_node_root (root )
24292505
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+
24302531 @staticmethod
24312532 def test_dataframe_to_tree_by_relation_empty_row_error ():
24322533 relation_data = pd .DataFrame (columns = ["child" , "parent" ])
0 commit comments