11from itertools import chain , permutations
22from pathlib import Path
3+ from unittest .mock import patch
34
45import toml
56import xarray as xr
@@ -415,7 +416,7 @@ def test_read_trade_technodata(tmp_path):
415416
416417def test_check_utilization_not_all_zero_success ():
417418 import pandas as pd
418- from muse .readers .csv import check_utilization_not_all_zero
419+ from muse .readers .csv import _check_utilization_not_all_zero
419420
420421 df = pd .DataFrame (
421422 {
@@ -425,12 +426,12 @@ def test_check_utilization_not_all_zero_success():
425426 "year" : (2010 , 2010 , 2011 ),
426427 }
427428 )
428- check_utilization_not_all_zero (df , "file.csv" )
429+ _check_utilization_not_all_zero (df , "file.csv" )
429430
430431
431432def test_check_utilization_not_all_zero_fail_all_zero ():
432433 import pandas as pd
433- from muse .readers .csv import check_utilization_not_all_zero
434+ from muse .readers .csv import _check_utilization_not_all_zero
434435
435436 df = pd .DataFrame (
436437 {
@@ -442,52 +443,66 @@ def test_check_utilization_not_all_zero_fail_all_zero():
442443 )
443444
444445 with raises (ValueError ):
445- check_utilization_not_all_zero (df , "file.csv" )
446-
447-
448- def test_check_utilization_not_all_zero_fail_missing_column ():
449- import pandas as pd
450- from muse .readers .csv import check_utilization_not_all_zero
451-
452- # NB: Required utilization_factor column is missing
453- df = pd .DataFrame (
454- {
455- "technology" : ("gas" , "gas" , "solar" ),
456- "region" : ("GB" , "GB" , "FR" ),
457- "year" : (2010 , 2010 , 2011 ),
458- }
459- )
460-
461- with raises (ValueError ):
462- check_utilization_not_all_zero (df , "file.csv" )
446+ _check_utilization_not_all_zero (df , "file.csv" )
463447
464448
465449def test_check_minimum_service_factors_in_range_success ():
466450 import pandas as pd
467- from muse .readers .csv import check_minimum_service_factors_in_range
451+ from muse .readers .csv import _check_minimum_service_factors_in_range
468452
469453 df = pd .DataFrame ({"minimum_service_factor" : (0 , 1 )})
470- check_minimum_service_factors_in_range (df , "file.csv" )
454+ _check_minimum_service_factors_in_range (df , "file.csv" )
471455
472456
473457def test_check_minimum_service_factors_in_range_column_missing ():
474458 import pandas as pd
475- from muse .readers .csv import check_minimum_service_factors_in_range
459+ from muse .readers .csv import _check_minimum_service_factors_in_range
476460
477461 # If the minimum_service_factor column is missing, the function should just return
478462 # without raising an error
479463 df = pd .DataFrame ()
480- check_minimum_service_factors_in_range (df , "file.csv" )
464+ _check_minimum_service_factors_in_range (df , "file.csv" )
481465
482466
483467@mark .parametrize (
484468 "values" , chain .from_iterable (permutations ((0 , bad )) for bad in (- 1 , 2 ))
485469)
486470def test_check_minimum_service_factors_in_range_fail (values ):
487471 import pandas as pd
488- from muse .readers .csv import check_minimum_service_factors_in_range
472+ from muse .readers .csv import _check_minimum_service_factors_in_range
489473
490474 df = pd .DataFrame ({"minimum_service_factor" : values })
491475
492476 with raises (ValueError ):
493- check_minimum_service_factors_in_range (df , "file.csv" )
477+ _check_minimum_service_factors_in_range (df , "file.csv" )
478+
479+
480+ @patch ("muse.readers.csv._check_minimum_service_factors_in_range" )
481+ @patch ("muse.readers.csv._check_utilization_not_all_zero" )
482+ def test_check_utilization_and_minimum_service_factors (* mocks ):
483+ import pandas as pd
484+ from muse .readers .csv import check_utilization_and_minimum_service_factors
485+
486+ df = pd .DataFrame ({"utilization_factor" : (0 , 0 , 1 )})
487+ check_utilization_and_minimum_service_factors (df , "file.csv" )
488+ for mock in mocks :
489+ mock .assert_called_once_with (df , "file.csv" )
490+
491+
492+ @patch ("muse.readers.csv._check_minimum_service_factors_in_range" )
493+ @patch ("muse.readers.csv._check_utilization_not_all_zero" )
494+ def test_check_utilization_and_minimum_service_factors_missing_column (* mocks ):
495+ import pandas as pd
496+ from muse .readers .csv import check_utilization_and_minimum_service_factors
497+
498+ # NB: Required utilization_factor column is missing
499+ df = pd .DataFrame (
500+ {
501+ "technology" : ("gas" , "gas" , "solar" ),
502+ "region" : ("GB" , "GB" , "FR" ),
503+ "year" : (2010 , 2010 , 2011 ),
504+ }
505+ )
506+
507+ with raises (ValueError ):
508+ check_utilization_and_minimum_service_factors (df , "file.csv" )
0 commit comments