Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Source Code
subroutine test_retrieve_exists()type(ESMF_Grid),target::g1_in,g1_outtype(RegridderSpec)::regridder_spectype(RegridderFactorySpec)::factory_spectype(RegridderFactoryRegistry)::registryclass(AbstractRegridderFactory),pointer::factoryclass(AbstractRegridder),allocatable::regriddertype(ESMF_Info)::infohin,infohoutg1_in=ESMF_GridEmptyCreate()g1_out=ESMF_GridEmptyCreate()call ESMF_InfoGetFromHost(g1_in,infohin)call ESMF_InfoSet(infohin,'GridType','A')call ESMF_InfoGetFromHost(g1_out,infohout)call ESMF_InfoSet(infohout,'GridType','B')regridder_spec=RegridderSpec(g1_in,g1_out)factory_spec=RegridderFactorySpec(regridder_spec)factory=>registry%at(factory_spec)@assertFalse(associated(factory))call registry%insert(factory_spec,MockRegridderFactory('A to B'))factory=>registry%at(factory_spec)@assertTrue(associated(factory))allocate(regridder,source=factory%make_regridder(regridder_spec))select type(regridder)type is(MockRegridder)@assertEqual('A to B::A -> B',regridder%get_name())class defaultcall throw('incorrect type of regridder returned')end select end subroutine test_retrieve_exists