123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- from view.python_core.flags import FlagsManager
- from view.python_core.utils.colors import interpret_flag_SO_MV_colortable
- from common import get_example_data_root_path
- from view.idl_translation_core.IDL import createPalette
- import numpy as np
- from matplotlib.colors import Colormap
- import os
- import tempfile
- import pathlib as pl
- def test_flags_internal():
- """
- Testing the initialization of flags with default values from definition csv
- """
- flags = FlagsManager()
- def test_SO_MV_colortable_flags():
- """
- Testing setting SO_MV_colortable values
- """
- flags = FlagsManager()
- values = [11, 12, 13, 14, "jet", "autumn"]
- for value in values:
- flags.update_flags({"SO_MV_colortable": value})
- def test_flag_fails():
- """
- Testing cases for which flag initialization must fail
- """
- flags = FlagsManager()
- must_fail = [["SO_MV_SO_MV_colortable", True], # expected value is int or str, bool given
- ["VIEW_VIEW_batchmode", "whatever"], # expected value is bool, string given
- ["VIEW_VIEW_batchmode", 15], # expected value is bool, incompatible integer given
- ["LE_loadExp", "whatever"] # expected value is integer, incompatible string given
- ]
- for k, v in must_fail:
- try:
- flags.update_flags({k: v})
- except AssertionError as ase:
- pass
- def test_flags_read_write():
- """
- Testing flags reading and writing functionalities using internal flags in FakeData test dataset
- """
- flags = FlagsManager()
- data_root = get_example_data_root_path()
- moaf_path = data_root / "FakeData"
- flags.update_flags({"STG_MotherOfAllFolders": str(moaf_path)})
- STG_flags = {"STG_OdorReportPath": "IDLoutput",
- "STG_OdorInfoPath": "Lists",
- "STG_OdormaskPath": "Coor",
- "STG_Datapath": "data",
- "STG_ProcessedDataPath": "ProcessedData",
- "STG_OdorAreaPath": "Areas"
- }
- flags.update_flags(STG_flags)
- flags_temp = FlagsManager()
- flags_temp.clear_flags()
- temp_yml_path = moaf_path / f"{tempfile.gettempprefix()}.yml"
- temp_yml_filename = str(temp_yml_path)
- flags.write_flags_to_yml(temp_yml_filename)
- flags_temp.read_flags_from_yml(temp_yml_filename)
- for flag_name in flags_temp.compound_path_flags:
- if flag_name in flags_temp.flags:
- path = pl.Path(flags_temp[flag_name])
- if path.is_absolute():
- flags_temp.update_flags({flag_name: os.path.relpath(path, flags_temp["STG_MotherOfAllFolders"])})
- assert len(flags_temp.flags) == len(flags.flags)
- assert len(set(flags_temp.flags.keys()) - set(flags.flags.keys())) == 0
- assert all(flags.flags[x] == flags_temp.flags[x] for x in flags.flags.keys())
- temp_yml_path.unlink()
- def test_interpret_flag_SO_MV_colortable():
- """
- Testing view.python_core.flags.interpret_flag_SO_MV_colortable
- """
- valid_SO_MV_colortable_values = [11, 12, 13, 14, "winter", "cool", "jet"]
- invalid_SO_MV_colortable_value = [50, 150, "whatever", "notacolormap"]
- for value in valid_SO_MV_colortable_values:
- cmap, bg, fg = interpret_flag_SO_MV_colortable(value)
- assert issubclass(cmap.__class__, Colormap)
- assert len(bg) in (3, 4)
- assert len(fg) in (3, 4)
- if type(value) is int:
- original_cmap = createPalette(value)
- original_cols = original_cmap(np.linspace(0, 1, original_cmap.N))
- interpreted_cols = cmap(np.linspace(0, 1, original_cmap.N - 2))
- assert np.allclose(original_cols[1:-1, :], interpreted_cols)
- for value in invalid_SO_MV_colortable_value:
- it_failed = False
- try:
- interpret_flag_SO_MV_colortable(value)
- except ValueError as ve:
- it_failed = True
- except NotImplementedError as se:
- it_failed = True
- assert it_failed
- if __name__ == "__main__":
- # test_flag_fails()
- test_flags_read_write()
|