subroutine test_depth_2() type (MeterNode), target :: node class (AbstractMeterNodeIterator), allocatable :: iter class (AbstractMeterNode), pointer :: child, child_2 class (AbstractMeter), pointer :: t integer :: count node = MeterNode('all', AdvancedMeter(MpiTimerGauge())) t => node%get_meter() call t%add_cycle(1.0_REAL64) call node%add_child('a', AdvancedMeter(MpiTimerGauge())) child => node%get_child('a') t => child%get_meter() call t%add_cycle(2.0_REAL64) call child%add_child('a_1', AdvancedMeter(MpiTimerGauge())) child_2 => child%get_child('a_1') t => child_2%get_meter() call t%add_cycle(3.0_REAL64) call child%add_child('a_2', AdvancedMeter(MpiTimerGauge())) child_2 => child%get_child('a_2') t => child_2%get_meter() call t%add_cycle(4.0_REAL64) call node%add_child('b', AdvancedMeter(MpiTimerGauge())) child => node%get_child('b') t => child%get_meter() call t%add_cycle(5.0_REAL64) call child%add_child('b_1', AdvancedMeter(MpiTimerGauge())) child_2 => child%get_child('b_1') t => child_2%get_meter() call t%add_cycle(6.0_REAL64) call child%add_child('b_2', AdvancedMeter(MpiTimerGauge())) child_2 => child%get_child('b_2') t => child_2%get_meter() call t%add_cycle(7.0_REAL64) call node%add_child('c', AdvancedMeter(MpiTimerGauge())) child => node%get_child('c') t => child%get_meter() call t%add_cycle(8.0_REAL64) count = 0 allocate(iter, source=node%begin()) do while (iter /= node%end()) count = count + 1 t => iter%get_meter() @assertEqual(count, t%get_total()) call iter%next() end do @assertEqual(8, count) end subroutine test_depth_2