示例#1
0
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)
示例#4
0
    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
示例#7
0
    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'
示例#9
0
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