@@ -464,6 +464,42 @@ def test_empty_range(self):
464464 empty_range = NRange ()
465465 assert empty_range .isEmpty ()
466466
467+ def test_nrange_legacy_min_and_minvalue_conflict (self ):
468+ """Ensure conflicting legacy 'min' and 'minValue' arguments raise a clear error."""
469+ with pytest .raises (ValueError , match = "Only one of 'minValue' and legacy 'min' may be specified" ):
470+ NRange (minValue = 0.0 , min = 1.0 )
471+
472+ def test_nrange_legacy_min_must_be_numeric (self ):
473+ """Ensure legacy 'min' argument must be numeric."""
474+ with pytest .raises (ValueError , match = r"Legacy 'min' argument must be an integer or float\." ):
475+ NRange (min = "not-a-number" )
476+
477+ def test_nrange_unexpected_kwargs_error_message (self ):
478+ """Ensure unexpected keyword arguments produce a helpful error."""
479+ with pytest .raises (ValueError , match = r"Unexpected keyword arguments for NRange: .*" ):
480+ NRange (foo = 1 )
481+
482+ def test_nrange_maxvalue_and_until_conflict (self ):
483+ """Ensure conflicting 'maxValue' and 'until' arguments raise a clear error."""
484+ with pytest .raises (ValueError , match = "Only one of 'maxValue' or 'until' may be specified." ):
485+ NRange (maxValue = 10 , until = 20 )
486+
487+ def test_nrange_discrete_range_requires_min_max_step (self ):
488+ """Ensure getDiscreteRange validates required attributes."""
489+ rng = NRange (minValue = 0.0 , maxValue = 10.0 )
490+ with pytest .raises (
491+ ValueError , match = "Range must have 'minValue', 'maxValue', and 'step' defined\\ ."
492+ ):
493+ _ = rng .getDiscreteRange ()
494+
495+ def test_nrange_discrete_range_step_must_be_non_zero (self ):
496+ """Ensure getDiscreteRange validates non-zero step."""
497+ rng = NRange (minValue = 0.0 , maxValue = 10.0 , step = 0 )
498+ with pytest .raises (
499+ ValueError , match = "Parameter 'step' must be non-zero when computing discrete range\\ ."
500+ ):
501+ _ = rng .getDiscreteRange ()
502+
467503 def test_reversed_ranges (self ):
468504 testDataSpec = (
469505 dg .DataGenerator (sparkSession = spark , name = "ranged_data" , rows = 100000 , partitions = 4 )
0 commit comments