docstr:    Build an Abstract Plan with nodes:
  ß               root
               /  |                      c1   c2 c3
             /
            c1_1
docstr_tok: ["Build","an","Abstract","Plan","with","nodes",":","\u00df","root","\/","|","c1","c2","c3","\/","c1_1"]
code: def test_tree_structure_for_build_execution_tree(self):
      """
              Build an Abstract Plan with nodes:
           ß               root
                        /  |  \
                      c1   c2 c3
                      /
                     c1_1
          """
  
      predicate = None
  
      root_abs_plan = SeqScanPlan(predicate=predicate, columns=[])
      child_1_abs_plan = SeqScanPlan(predicate=predicate, columns=[])
      child_2_abs_plan = SeqScanPlan(predicate=predicate, columns=[])
      child_3_abs_plan = SeqScanPlan(predicate=predicate, columns=[])
      child_1_1_abs_plan = SeqScanPlan(predicate=predicate, columns=[])
  
      root_abs_plan.append_child(child_1_abs_plan)
      root_abs_plan.append_child(child_2_abs_plan)
      root_abs_plan.append_child(child_3_abs_plan)
  
      child_1_abs_plan.append_child(child_1_1_abs_plan)
  
      """Build Execution Tree and check the nodes
              are of the same type"""
      root_abs_executor = PlanExecutor(
          MagicMock(), plan=root_abs_plan
      )._build_execution_tree(plan=root_abs_plan)
  
      # Root Nodes
      self.assertEqual(
          root_abs_plan.opr_type, root_abs_executor._node.opr_type
      )
  
      # Children of Root
      for child_abs, child_exec in zip(
          root_abs_plan.children, root_abs_executor.children
      ):
          self.assertEqual(
              child_abs.opr_type, child_exec._node.opr_type
          )
          # Grand Children of Root
          for gc_abs, gc_exec in zip(
              child_abs.children, child_exec.children
          ):
              self.assertEqual(gc_abs.opr_type, gc_exec._node.opr_type)
  
imports: import unittest
  from unittest.mock import MagicMock, patch
  import pandas
  from evadb.catalog.catalog_type import TableType
  from evadb.catalog.models.table_catalog import TableCatalogEntry
  from evadb.executor.create_executor import CreateExecutor
  from evadb.executor.create_function_executor import CreateFunctionExecutor
  from evadb.executor.drop_object_executor import DropObjectExecutor, DropObjectPlan
  from evadb.executor.insert_executor import InsertExecutor
  from evadb.executor.load_executor import LoadDataExecutor
  from evadb.executor.plan_executor import PlanExecutor
  from evadb.executor.pp_executor import PPExecutor
  from evadb.executor.seq_scan_executor import SequentialScanExecutor
  from evadb.models.storage.batch import Batch
  from evadb.plan_nodes.create_function_plan import CreateFunctionPlan
  from evadb.plan_nodes.create_plan import CreatePlan
  from evadb.plan_nodes.insert_plan import InsertPlan
  from evadb.plan_nodes.load_data_plan import LoadDataPlan
  from evadb.plan_nodes.pp_plan import PPScanPlan
  from evadb.plan_nodes.rename_plan import RenamePlan
  from evadb.plan_nodes.seq_scan_plan import SeqScanPlan
  from evadb.plan_nodes.storage_plan import StoragePlan
label_desc: Use image node_id 1 for calling the PlanExecutorTest obj's underlying member method code with example usage: obj.test_tree_structure_for_build_execution_tree() without return types