@@ -398,3 +398,53 @@ def test_build_color_dict() -> None:
398398 "DAPI (DAPI) [2]" : (0.0 , 1.0 , 0.0 ),
399399 "FITC (FITC)" : (0.0 , 0.0 , 1.0 ),
400400 }
401+
402+
403+ def test_get_ome_objective_power_valid () -> None :
404+ """Test extraction of objective power from valid OME-XML."""
405+ xml = """
406+ <OME xmlns="http://www.openmicroscopy.org/Schemas/OME/2016-06">
407+ <Instrument ID="Instrument:0">
408+ <Objective ID="Objective:0" NominalMagnification="20.0"/>
409+ </Instrument>
410+ <Image>
411+ <InstrumentRef ID="Instrument:0"/>
412+ <ObjectiveSettings ID="Objective:0"/>
413+ </Image>
414+ </OME>
415+ """
416+ reader = wsireader .TIFFWSIReader .__new__ (wsireader .TIFFWSIReader )
417+ reader .series_n = 0 # Required for _get_ome_mpp
418+ reader ._get_ome_mpp = lambda _ : [0.5 , 0.5 ] # Optional fallback mock
419+ result = reader ._get_ome_objective_power (ElementTree .fromstring (xml ))
420+ assert result == 20.0
421+
422+
423+ def test_get_ome_objective_power_fallback_mpp () -> None :
424+ """Test fallback to MPP-based inference when objective power is missing."""
425+ xml = """
426+ <OME xmlns="http://www.openmicroscopy.org/Schemas/OME/2016-06">
427+ <Image>
428+ <Pixels PhysicalSizeX="0.5" PhysicalSizeY="0.5"/>
429+ </Image>
430+ </OME>
431+ """
432+ reader = wsireader .TIFFWSIReader .__new__ (wsireader .TIFFWSIReader )
433+ reader ._get_ome_mpp = lambda _ : [0.5 , 0.5 ] # Mock MPP extraction
434+ result = reader ._get_ome_objective_power (ElementTree .fromstring (xml ))
435+ assert result == 20.0 # Assuming mpp2common_objective_power(0.5) == 20.0
436+
437+
438+ def test_get_ome_objective_power_none () -> None :
439+ """Test full fallback when both objective power and MPP are missing."""
440+ xml = """
441+ <OME xmlns="http://www.openmicroscopy.org/Schemas/OME/2016-06">
442+ <Image>
443+ <Pixels/>
444+ </Image>
445+ </OME>
446+ """
447+ reader = wsireader .TIFFWSIReader .__new__ (wsireader .TIFFWSIReader )
448+ reader ._get_ome_mpp = lambda _ : None # Mock missing MPP
449+ result = reader ._get_ome_objective_power (ElementTree .fromstring (xml ))
450+ assert result is None
0 commit comments