@@ -101,6 +101,8 @@ def test_min(self, parameter: Parameter):
101
101
102
102
def test_set_min (self , parameter : Parameter ):
103
103
# When Then
104
+ self .mock_callback .fget .return_value = 1.0 # Ensure fget returns a scalar value
105
+
104
106
parameter .min = 0.1
105
107
106
108
# Expect
@@ -189,6 +191,7 @@ def test_bounds(self, parameter: Parameter):
189
191
190
192
def test_set_bounds (self , parameter : Parameter ):
191
193
# When
194
+ self .mock_callback .fget .return_value = 1.0 # Ensure fget returns a scalar value
192
195
parameter ._enabled = False
193
196
parameter ._fixed = True
194
197
@@ -298,6 +301,7 @@ def test_set_full_value(self, parameter: Parameter):
298
301
299
302
def test_copy (self , parameter : Parameter ):
300
303
# When Then
304
+ self .mock_callback .fget .return_value = 1.0 # Ensure fget returns a scalar value
301
305
parameter_copy = parameter .__copy__ ()
302
306
303
307
# Expect
@@ -317,6 +321,7 @@ def test_copy(self, parameter: Parameter):
317
321
318
322
def test_as_data_dict (self , clear , parameter : Parameter ):
319
323
# When Then
324
+ self .mock_callback .fget .return_value = 1.0 # Ensure fget returns a scalar value
320
325
parameter_dict = parameter .as_data_dict ()
321
326
322
327
# Expect
@@ -337,7 +342,7 @@ def test_as_data_dict(self, clear, parameter: Parameter):
337
342
338
343
@pytest .mark .parametrize ("test, expected, expected_reverse" , [
339
344
(Parameter ("test" , 2 , "m" , 0.01 , - 10 , 20 ), Parameter ("name + test" , 3 , "m" , 0.02 , - 10 , 30 ), Parameter ("test + name" , 3 , "m" , 0.02 , - 10 , 30 )),
340
- (Parameter ("test" , 2 , "m" , 0.01 ), Parameter ("name + test" , 3 , "m" , 0.02 , min = - np .Inf , max = np .Inf ),Parameter ("test + name" , 3 , "m" , 0.02 , min = - np .Inf , max = np .Inf )),
345
+ (Parameter ("test" , 2 , "m" , 0.01 ), Parameter ("name + test" , 3 , "m" , 0.02 , min = - np .inf , max = np .inf ),Parameter ("test + name" , 3 , "m" , 0.02 , min = - np .inf , max = np .inf )),
341
346
(Parameter ("test" , 2 , "cm" , 0.01 , - 10 , 10 ), Parameter ("name + test" , 1.02 , "m" , 0.010001 , - 0.1 , 10.1 ), Parameter ("test + name" , 102 , "cm" , 100.01 , - 10 , 1010 ))],
342
347
ids = ["regular" , "no_bounds" , "unit_conversion" ])
343
348
def test_addition_with_parameter (self , parameter : Parameter , test : Parameter , expected : Parameter , expected_reverse : Parameter ):
@@ -427,7 +432,7 @@ def test_addition_exception(self, parameter : Parameter, test):
427
432
428
433
@pytest .mark .parametrize ("test, expected, expected_reverse" , [
429
434
(Parameter ("test" , 2 , "m" , 0.01 , - 20 , 20 ), Parameter ("name - test" , - 1 , "m" , 0.02 , - 20 , 30 ), Parameter ("test - name" , 1 , "m" , 0.02 , - 30 , 20 )),
430
- (Parameter ("test" , 2 , "m" , 0.01 ), Parameter ("name - test" , - 1 , "m" , 0.02 , min = - np .Inf , max = np .Inf ),Parameter ("test - name" , 1 , "m" , 0.02 , min = - np .Inf , max = np .Inf )),
435
+ (Parameter ("test" , 2 , "m" , 0.01 ), Parameter ("name - test" , - 1 , "m" , 0.02 , min = - np .inf , max = np .inf ),Parameter ("test - name" , 1 , "m" , 0.02 , min = - np .inf , max = np .inf )),
431
436
(Parameter ("test" , 2 , "cm" , 0.01 , - 10 , 10 ), Parameter ("name - test" , 0.98 , "m" , 0.010001 , - 0.1 , 10.1 ), Parameter ("test - name" , - 98 , "cm" , 100.01 , - 1010 , 10 ))],
432
437
ids = ["regular" , "no_bounds" , "unit_conversion" ])
433
438
def test_subtraction_with_parameter (self , parameter : Parameter , test : Parameter , expected : Parameter , expected_reverse : Parameter ):
@@ -457,8 +462,8 @@ def test_subtraction_with_parameter(self, parameter : Parameter, test : Paramete
457
462
458
463
def test_subtraction_with_parameter_nan_cases (self ):
459
464
# When
460
- parameter = Parameter (name = "name" , value = 1 , variance = 0.01 , min = - np .Inf , max = np .Inf )
461
- test = Parameter (name = "test" , value = 2 , variance = 0.01 , min = - np .Inf , max = np .Inf )
465
+ parameter = Parameter (name = "name" , value = 1 , variance = 0.01 , min = - np .inf , max = np .inf )
466
+ test = Parameter (name = "test" , value = 2 , variance = 0.01 , min = - np .inf , max = np .inf )
462
467
463
468
# Then
464
469
result = parameter - test
@@ -469,15 +474,15 @@ def test_subtraction_with_parameter_nan_cases(self):
469
474
assert result .value == - 1.0
470
475
assert result .unit == "dimensionless"
471
476
assert result .variance == 0.02
472
- assert result .min == - np .Inf
473
- assert result .max == np .Inf
477
+ assert result .min == - np .inf
478
+ assert result .max == np .inf
474
479
475
480
assert result_reverse .name == result_reverse .unique_name
476
481
assert result_reverse .value == 1.0
477
482
assert result_reverse .unit == "dimensionless"
478
483
assert result_reverse .variance == 0.02
479
- assert result_reverse .min == - np .Inf
480
- assert result_reverse .max == np .Inf
484
+ assert result_reverse .min == - np .inf
485
+ assert result_reverse .max == np .inf
481
486
482
487
def test_subtraction_with_scalar (self ):
483
488
# When
@@ -541,7 +546,7 @@ def test_subtraction_exception(self, parameter : Parameter, test):
541
546
542
547
@pytest .mark .parametrize ("test, expected, expected_reverse" , [
543
548
(Parameter ("test" , 2 , "m" , 0.01 , - 10 , 20 ), Parameter ("name * test" , 2 , "m^2" , 0.05 , - 100 , 200 ), Parameter ("test * name" , 2 , "m^2" , 0.05 , - 100 , 200 )),
544
- (Parameter ("test" , 2 , "m" , 0.01 ), Parameter ("name * test" , 2 , "m^2" , 0.05 , min = - np .Inf , max = np .Inf ), Parameter ("test * name" , 2 , "m^2" , 0.05 , min = - np .Inf , max = np .Inf )),
549
+ (Parameter ("test" , 2 , "m" , 0.01 ), Parameter ("name * test" , 2 , "m^2" , 0.05 , min = - np .inf , max = np .inf ), Parameter ("test * name" , 2 , "m^2" , 0.05 , min = - np .inf , max = np .inf )),
545
550
(Parameter ("test" , 2 , "dm" , 0.01 , - 10 , 20 ), Parameter ("name * test" , 0.2 , "m^2" , 0.0005 , - 10 , 20 ), Parameter ("test * name" , 0.2 , "m^2" , 0.0005 , - 10 , 20 ))],
546
551
ids = ["regular" , "no_bounds" , "base_unit_conversion" ])
547
552
def test_multiplication_with_parameter (self , parameter : Parameter , test : Parameter , expected : Parameter , expected_reverse : Parameter ):
@@ -568,12 +573,12 @@ def test_multiplication_with_parameter(self, parameter : Parameter, test : Param
568
573
assert result_reverse .max == expected_reverse .max
569
574
570
575
@pytest .mark .parametrize ("test, expected, expected_reverse" , [
571
- (Parameter ("test" , 0 , "" , 0.01 , - 10 , 0 ), Parameter ("name * test" , 0.0 , "dimensionless" , 0.01 , - np .Inf , 0 ), Parameter ("test * name" , 0 , "dimensionless" , 0.01 , - np .Inf , 0 )),
572
- (Parameter ("test" , 0 , "" , 0.01 , 0 , 10 ), Parameter ("name * test" , 0.0 , "dimensionless" , 0.01 , 0 , np .Inf ), Parameter ("test * name" , 0 , "dimensionless" , 0.01 , 0 , np .Inf ))],
576
+ (Parameter ("test" , 0 , "" , 0.01 , - 10 , 0 ), Parameter ("name * test" , 0.0 , "dimensionless" , 0.01 , - np .inf , 0 ), Parameter ("test * name" , 0 , "dimensionless" , 0.01 , - np .inf , 0 )),
577
+ (Parameter ("test" , 0 , "" , 0.01 , 0 , 10 ), Parameter ("name * test" , 0.0 , "dimensionless" , 0.01 , 0 , np .inf ), Parameter ("test * name" , 0 , "dimensionless" , 0.01 , 0 , np .inf ))],
573
578
ids = ["zero_min" , "zero_max" ])
574
579
def test_multiplication_with_parameter_nan_cases (self , test , expected , expected_reverse ):
575
580
# When
576
- parameter = Parameter (name = "name" , value = 1 , variance = 0.01 , min = 1 , max = np .Inf )
581
+ parameter = Parameter (name = "name" , value = 1 , variance = 0.01 , min = 1 , max = np .inf )
577
582
578
583
# Then
579
584
result = parameter * test
@@ -656,9 +661,9 @@ def test_multiplication_with_scalar(self, parameter : Parameter, test, expected,
656
661
assert result_reverse .max == expected_reverse .max
657
662
658
663
@pytest .mark .parametrize ("test, expected, expected_reverse" , [
659
- (Parameter ("test" , 2 , "s" , 0.01 , - 10 , 20 ), Parameter ("name / test" , 0.5 , "m/s" , 0.003125 , - np .Inf , np .Inf ), Parameter ("test / name" , 2 , "s/m" , 0.05 , - np .Inf , np .Inf )),
660
- (Parameter ("test" , 2 , "s" , 0.01 , 0 , 20 ), Parameter ("name / test" , 0.5 , "m/s" , 0.003125 , 0.0 , np .Inf ), Parameter ("test / name" , 2 , "s/m" , 0.05 , 0.0 , np .Inf )),
661
- (Parameter ("test" , - 2 , "s" , 0.01 , - 10 , 0 ), Parameter ("name / test" , - 0.5 , "m/s" , 0.003125 , - np .Inf , 0.0 ), Parameter ("test / name" , - 2 , "s/m" , 0.05 , - np .Inf , 0.0 ))],
664
+ (Parameter ("test" , 2 , "s" , 0.01 , - 10 , 20 ), Parameter ("name / test" , 0.5 , "m/s" , 0.003125 , - np .inf , np .inf ), Parameter ("test / name" , 2 , "s/m" , 0.05 , - np .inf , np .inf )),
665
+ (Parameter ("test" , 2 , "s" , 0.01 , 0 , 20 ), Parameter ("name / test" , 0.5 , "m/s" , 0.003125 , 0.0 , np .inf ), Parameter ("test / name" , 2 , "s/m" , 0.05 , 0.0 , np .inf )),
666
+ (Parameter ("test" , - 2 , "s" , 0.01 , - 10 , 0 ), Parameter ("name / test" , - 0.5 , "m/s" , 0.003125 , - np .inf , 0.0 ), Parameter ("test / name" , - 2 , "s/m" , 0.05 , - np .inf , 0.0 ))],
662
667
ids = ["crossing_zero" , "only_positive" , "only_negative" ])
663
668
def test_division_with_parameter (self , parameter : Parameter , test , expected , expected_reverse ):
664
669
# When
@@ -686,8 +691,8 @@ def test_division_with_parameter(self, parameter : Parameter, test, expected, ex
686
691
assert result_reverse .max == expected_reverse .max
687
692
688
693
@pytest .mark .parametrize ("first, second, expected" , [
689
- (Parameter ("name" , 1 , "m" , 0.01 , - 10 , 20 ), Parameter ("test" , - 2 , "s" , 0.01 , - 10 , 0 ), Parameter ("name / test" , - 0.5 , "m/s" , 0.003125 , - np .Inf , np .Inf )),
690
- (Parameter ("name" , - 10 , "m" , 0.01 , - 20 , - 10 ), Parameter ("test" , - 2 , "s" , 0.01 , - 10 , 0 ), Parameter ("name / test" , 5.0 , "m/s" , 0.065 , 1 , np .Inf )),
694
+ (Parameter ("name" , 1 , "m" , 0.01 , - 10 , 20 ), Parameter ("test" , - 2 , "s" , 0.01 , - 10 , 0 ), Parameter ("name / test" , - 0.5 , "m/s" , 0.003125 , - np .inf , np .inf )),
695
+ (Parameter ("name" , - 10 , "m" , 0.01 , - 20 , - 10 ), Parameter ("test" , - 2 , "s" , 0.01 , - 10 , 0 ), Parameter ("name / test" , 5.0 , "m/s" , 0.065 , 1 , np .inf )),
691
696
(Parameter ("name" , 10 , "m" , 0.01 , 10 , 20 ), Parameter ("test" , - 20 , "s" , 0.01 , - 20 , - 10 ), Parameter ("name / test" , - 0.5 , "m/s" , 3.125e-5 , - 2 , - 0.5 ))],
692
697
ids = ["first_crossing_zero_second_negative_0" , "both_negative_second_negative_0" , "finite_limits" ])
693
698
def test_division_with_parameter_remaining_cases (self , first , second , expected ):
@@ -703,8 +708,8 @@ def test_division_with_parameter_remaining_cases(self, first, second, expected):
703
708
assert result .max == expected .max
704
709
705
710
@pytest .mark .parametrize ("test, expected, expected_reverse" , [
706
- (DescriptorNumber (name = "test" , value = 2 , variance = 0.1 , unit = "s" ), Parameter ("name / test" , 0.5 , "m/s" , 0.00875 , 0 , 5 ), Parameter ("test / name" , 2 , "s/m" , 0.14 , 0.2 , np .Inf )),
707
- (2 , Parameter ("name / 2" , 0.5 , "m" , 0.0025 , 0 , 5 ), Parameter ("2 / name" , 2 , "m**-1" , 0.04 , 0.2 , np .Inf ))],
711
+ (DescriptorNumber (name = "test" , value = 2 , variance = 0.1 , unit = "s" ), Parameter ("name / test" , 0.5 , "m/s" , 0.00875 , 0 , 5 ), Parameter ("test / name" , 2 , "s/m" , 0.14 , 0.2 , np .inf )),
712
+ (2 , Parameter ("name / 2" , 0.5 , "m" , 0.0025 , 0 , 5 ), Parameter ("2 / name" , 2 , "m**-1" , 0.04 , 0.2 , np .inf ))],
708
713
ids = ["descriptor_number" , "number" ])
709
714
def test_division_with_descriptor_number_and_number (self , parameter : Parameter , test , expected , expected_reverse ):
710
715
# When
@@ -750,10 +755,10 @@ def test_zero_value_divided_by_parameter(self, parameter : Parameter, test, expe
750
755
assert result .variance == expected .variance
751
756
752
757
@pytest .mark .parametrize ("first, second, expected" , [
753
- (DescriptorNumber ("name" , 1 , "m" , 0.01 ), Parameter ("test" , 2 , "s" , 0.1 , - 10 , 10 ), Parameter ("name / test" , 0.5 , "m/s" , 0.00875 , - np .Inf , np .Inf )),
754
- (DescriptorNumber ("name" , - 1 , "m" , 0.01 ), Parameter ("test" , 2 , "s" , 0.1 , 0 , 10 ), Parameter ("name / test" , - 0.5 , "m/s" , 0.00875 , - np .Inf , - 0.1 )),
755
- (DescriptorNumber ("name" , 1 , "m" , 0.01 ), Parameter ("test" , - 2 , "s" , 0.1 , - 10 , 0 ), Parameter ("name / test" , - 0.5 , "m/s" , 0.00875 , - np .Inf , - 0.1 )),
756
- (DescriptorNumber ("name" , - 1 , "m" , 0.01 ), Parameter ("test" , - 2 , "s" , 0.1 , - 10 , 0 ), Parameter ("name / test" , 0.5 , "m/s" , 0.00875 , 0.1 , np .Inf )),
758
+ (DescriptorNumber ("name" , 1 , "m" , 0.01 ), Parameter ("test" , 2 , "s" , 0.1 , - 10 , 10 ), Parameter ("name / test" , 0.5 , "m/s" , 0.00875 , - np .inf , np .inf )),
759
+ (DescriptorNumber ("name" , - 1 , "m" , 0.01 ), Parameter ("test" , 2 , "s" , 0.1 , 0 , 10 ), Parameter ("name / test" , - 0.5 , "m/s" , 0.00875 , - np .inf , - 0.1 )),
760
+ (DescriptorNumber ("name" , 1 , "m" , 0.01 ), Parameter ("test" , - 2 , "s" , 0.1 , - 10 , 0 ), Parameter ("name / test" , - 0.5 , "m/s" , 0.00875 , - np .inf , - 0.1 )),
761
+ (DescriptorNumber ("name" , - 1 , "m" , 0.01 ), Parameter ("test" , - 2 , "s" , 0.1 , - 10 , 0 ), Parameter ("name / test" , 0.5 , "m/s" , 0.00875 , 0.1 , np .inf )),
757
762
(DescriptorNumber ("name" , 1 , "m" , 0.01 ), Parameter ("test" , 2 , "s" , 0.1 , 1 , 10 ), Parameter ("name / test" , 0.5 , "m/s" , 0.00875 , 0.1 , 1 ))],
758
763
ids = ["crossing_zero" , "positive_0_with_negative" , "negative_0_with_positive" , "negative_0_with_negative" , "finite_limits" ])
759
764
def test_division_with_descriptor_number_missing_cases (self , first , second , expected ):
@@ -789,8 +794,8 @@ def test_divide_by_zero_value_parameter(self):
789
794
@pytest .mark .parametrize ("test, expected" , [
790
795
(3 , Parameter ("name ** 3" , 125 , "m^3" , 281.25 , - 125 , 1000 )),
791
796
(2 , Parameter ("name ** 2" , 25 , "m^2" , 5.0 , 0 , 100 )),
792
- (- 1 , Parameter ("name ** -1" , 0.2 , "1/m" , 8e-5 , - np .Inf , np .Inf )),
793
- (- 2 , Parameter ("name ** -2" , 0.04 , "1/m^2" , 1.28e-5 , 0 , np .Inf )),
797
+ (- 1 , Parameter ("name ** -1" , 0.2 , "1/m" , 8e-5 , - np .inf , np .inf )),
798
+ (- 2 , Parameter ("name ** -2" , 0.04 , "1/m^2" , 1.28e-5 , 0 , np .inf )),
794
799
(0 , DescriptorNumber ("name ** 0" , 1 , "dimensionless" , 0 )),
795
800
(DescriptorNumber ("test" , 2 ), Parameter ("name ** test" , 25 , "m^2" , 5.0 , 0 , 100 ))],
796
801
ids = ["power_3" , "power_2" , "power_-1" , "power_-2" , "power_0" , "power_descriptor_number" ])
@@ -812,13 +817,13 @@ def test_power_of_parameter(self, test, expected):
812
817
assert result .max == expected .max
813
818
814
819
@pytest .mark .parametrize ("test, exponent, expected" , [
815
- (Parameter ("name" , 5 , "m" , 0.05 , 0 , 10 ), - 1 , Parameter ("name ** -1" , 0.2 , "1/m" , 8e-5 , 0.1 , np .Inf )),
816
- (Parameter ("name" , - 5 , "m" , 0.05 , - 5 , 0 ), - 1 , Parameter ("name ** -1" , - 0.2 , "1/m" , 8e-5 , - np .Inf , - 0.2 )),
820
+ (Parameter ("name" , 5 , "m" , 0.05 , 0 , 10 ), - 1 , Parameter ("name ** -1" , 0.2 , "1/m" , 8e-5 , 0.1 , np .inf )),
821
+ (Parameter ("name" , - 5 , "m" , 0.05 , - 5 , 0 ), - 1 , Parameter ("name ** -1" , - 0.2 , "1/m" , 8e-5 , - np .inf , - 0.2 )),
817
822
(Parameter ("name" , 5 , "m" , 0.05 , 5 , 10 ), - 1 , Parameter ("name ** -1" , 0.2 , "1/m" , 8e-5 , 0.1 , 0.2 )),
818
823
(Parameter ("name" , - 5 , "m" , 0.05 , - 10 , - 5 ), - 1 , Parameter ("name ** -1" , - 0.2 , "1/m" , 8e-5 , - 0.2 , - 0.1 )),
819
824
(Parameter ("name" , - 5 , "m" , 0.05 , - 10 , - 5 ), - 2 , Parameter ("name ** -2" , 0.04 , "1/m^2" , 1.28e-5 , 0.01 , 0.04 )),
820
825
(Parameter ("name" , 5 , "" , 0.1 , 1 , 10 ), 0.3 , Parameter ("name ** 0.3" , 1.6206565966927624 , "" , 0.0009455500095853564 , 1 , 1.9952623149688795 )),
821
- (Parameter ("name" , 5 , "" , 0.1 ), 0.5 , Parameter ("name ** 0.5" , 2.23606797749979 , "" , 0.005 , 0 , np .Inf ))],
826
+ (Parameter ("name" , 5 , "" , 0.1 ), 0.5 , Parameter ("name ** 0.5" , 2.23606797749979 , "" , 0.005 , 0 , np .inf ))],
822
827
ids = ["0_positive" , "negative_0" , "both_positive" , "both_negative_invert" , "both_negative_invert_square" , "fractional" , "fractional_negative_limit" ])
823
828
def test_power_of_diffent_parameters (self , test , exponent , expected ):
824
829
# When Then
0 commit comments