class MeasurementTestModel(models.Model): measurement_distance = MeasurementField( measurement=measures.Distance, validators=[ MinValueValidator(measures.Distance(mi=1.0)), MaxValueValidator(measures.Distance(mi=3.0)) ], blank=True, null=True, ) measurement_distance_km = MeasurementField( measurement=measures.Distance, unit_choices=(('km', 'km'),), validators=[ MinValueValidator(measures.Distance(km=1.0)), MaxValueValidator(measures.Distance(km=3.0)) ], blank=True, null=True, ) measurement_weight = MeasurementField( measurement=measures.Weight, validators=[ MinValueValidator(measures.Weight(kg=1.0)), MaxValueValidator(measures.Weight(kg=3.0)) ], blank=True, null=True, ) measurement_speed = MeasurementField( measurement=measures.Speed, validators=[ MinValueValidator(measures.Speed(mph=1.0)), MaxValueValidator(measures.Speed(mph=3.0)) ], blank=True, null=True, ) measurement_temperature = MeasurementField( measurement=measures.Temperature, validators=[ MinValueValidator(measures.Temperature(1.0)), MaxValueValidator(measures.Temperature(3.0)) ], blank=True, null=True, ) measurement_speed_mph = MeasurementField( measurement=measures.Speed, unit_choices=(('mi__hr', 'mph'),), validators=[ MinValueValidator(measures.Speed(mph=1.0)), MaxValueValidator(measures.Speed(mph=3.0)) ], blank=True, null=True, ) def __unicode__(self): return self.measurement
def generateBatterySOCForecast(self): ''' @return: @rtype: ''' if self.cfg.get("uncertainty_mitigation", "battery_soc") == "prob": req_bsoc_certainty = self.cfg.getfloat("uncertainty_mitigation", "req_bsoc_certainty") mileage_forecast = sps.norm.ppf(req_bsoc_certainty, self.mileage_mu, self.mileage_sig) self.batterySOC_forecast = max(0, self.capacity - conv.Distance(mi=mileage_forecast).km * self.consumption) else: self.batterySOC_forecast = max(0, self.capacity - conv.Distance(mi=self.mileage_mu).km * self.consumption) return self.batterySOC_forecast
def test_form_storage(self): form = MeasurementTestForm({ 'measurement_distance_0': 2.0, 'measurement_distance_1': 'mi', }) assert form.is_valid() obj = form.save() assert obj.measurement_distance == measures.Distance(mi=2)
def test_form_storage(self): form = MeasurementTestForm({ "measurement_distance_0": 2.0, "measurement_distance_1": "mi" }) assert form.is_valid() obj = form.save() assert obj.measurement_distance == measures.Distance(mi=2)
def test_min_value(self): field = MeasurementField(measures.Distance, min_value=measures.Distance(mi=1.0)) field.clean([2.0, 'mi']) with pytest.raises(ValidationError) as e: field.clean([0.5, 'mi']) assert 'Ensure this value is greater than or equal to 1.0 mi.' in str(e) with pytest.raises(ValueError) as e: MeasurementField(measures.Distance, min_value=1.0) assert str(e) == '"min_value" must be a measure, got float'
def simulateBatterySOC(self): ''' @return: @rtype: ''' self.batterySOC_simulated = min(30, max(0, self.capacity - conv.Distance(mi=norm.rvs(self.mileage_mu, self.mileage_sig)).km * self.consumption)) if self.batterySOC_simulated > 30: print(self.batterySOC_simulated) return self.batterySOC_simulated
def test_storage_and_retrieval_of_measurement_choice(self): original_value = measures.Distance(km=100) MeasurementTestModel.objects.create( measurement_distance_km=original_value, ) retrieved = MeasurementTestModel.objects.get() new_value = retrieved.measurement_distance_km assert new_value == original_value assert type(new_value) == type(original_value) assert new_value.unit == original_value.unit
def test_max_value(self): valid_form = MeasurementTestForm({ 'measurement_distance_0': 2.0, 'measurement_distance_1': 'mi', }) invalid_form = MeasurementTestForm({ 'measurement_distance_0': 4.0, 'measurement_distance_1': 'mi', }) assert valid_form.is_valid() assert not invalid_form.is_valid() field = MeasurementField(measures.Distance, max_value=measures.Distance(mi=1)) field.clean([0.5, 'mi']) with pytest.raises(ValidationError) as e: field.clean([2.0, 'mi']) assert 'Ensure this value is less than or equal to 1.0 mi.' in str(e) with pytest.raises(ValueError) as e: MeasurementField(measures.Distance, max_value=1.0) assert bytes(e) == '"max_value" must be a measure, got float'
class MeasurementTestModel(models.Model): measurement_distance = MeasurementField( measurement=measures.Distance, validators=[ MinValueValidator(measures.Distance(mi=1.0)), MaxValueValidator(measures.Distance(mi=3.0)), ], blank=True, null=True, ) measurement_distance_km = MeasurementField( measurement=measures.Distance, unit_choices=(("km", "km"), ), validators=[ MinValueValidator(measures.Distance(km=1.0)), MaxValueValidator(measures.Distance(km=3.0)), ], blank=True, null=True, ) measurement_weight = MeasurementField( measurement=measures.Weight, validators=[ MinValueValidator(measures.Weight(kg=1.0)), MaxValueValidator(measures.Weight(kg=3.0)), ], blank=True, null=True, ) measurement_speed = MeasurementField( measurement=measures.Speed, validators=[ MinValueValidator(measures.Speed(mph=1.0)), MaxValueValidator(measures.Speed(mph=3.0)), ], blank=True, null=True, ) measurement_temperature = MeasurementField( measurement=measures.Temperature, validators=[ MinValueValidator(measures.Temperature(1.0)), MaxValueValidator(measures.Temperature(3.0)), ], blank=True, null=True, ) measurement_temperature2 = MeasurementField( measurement_class="Temperature", validators=[ MinValueValidator(measures.Temperature(1.0)), MaxValueValidator(measures.Temperature(3.0)), ], blank=True, null=True, ) measurement_speed_mph = MeasurementField( measurement=measures.Speed, unit_choices=(("mi__hr", "mph"), ), validators=[ MinValueValidator(measures.Speed(mph=1.0)), MaxValueValidator(measures.Speed(mph=3.0)), ], blank=True, null=True, ) measurement_custom_degree_per_time = MeasurementField( measurement=DegreePerTime, blank=True, null=True, ) measurement_custom_temperature = MeasurementField( measurement=Temperature, blank=True, null=True, ) measurement_custom_time = MeasurementField( measurement=Time, blank=True, null=True, ) def __str__(self): return self.measurement