'Final homework with tests'

main
Exoucia Mukubay 2022-11-08 22:37:34 +01:00
parent a6729cf3c3
commit 061d717fed
2 changed files with 122 additions and 0 deletions

View File

@ -0,0 +1,60 @@
import 'package:flutter/material.dart';
class EnergyModelProvider with ChangeNotifier {
double potentialEnergy = 0,
kineticEnergy = 0,
energyInJoule = 0,
literWaterToHeat = 0,
kilogrammIronToHeat = 0;
EnergyModelProvider() {}
/// E = kg * (m^2 / s^2)
double calculateEnergyInJoule(String weightValue, String velocity) {
double weightValueInDouble = double.parse(weightValue);
double velocityInDouble = double.parse(velocity);
energyInJoule = (velocityInDouble * velocityInDouble) / weightValueInDouble;
notifyListeners();
return energyInJoule;
}
/// E = m * g * h in Joule
void calculateEnergyPotential(String weightValue, String altitudeChange) {
double weightValueInDouble = double.parse(weightValue);
double altitudeChangeInDouble = double.parse(altitudeChange);
potentialEnergy = weightValueInDouble * 9.81 * altitudeChangeInDouble;
notifyListeners();
}
/// E = 1/2 * m * v^2 in Joule
void calculateEnergyKinetic(String weightValue, String velocity) {
double weightValueInDouble = double.parse(weightValue);
double velocityInDouble = double.parse(velocity);
kineticEnergy =
0.5 * weightValueInDouble * (velocityInDouble * velocityInDouble);
notifyListeners();
}
/**
* E = c * m * delta T
* c = spezifische Wärmekapazität Wasser 4,182 kJ/l
* m = Masse
* delta T = Temperaturunterschied
*/
void calculateLiterToHeatWater() {
// 4182 J = 1l = 1000kg Waasser um 1° zu erwaermen
// E/c/delta T = m
//Total Energie = Potentielle Energie + Kinetische Energie
literWaterToHeat = (potentialEnergy + kineticEnergy) / (4182 * 80);
notifyListeners();
}
void calculateKgToHeatIron() {
kilogrammIronToHeat = (potentialEnergy + kineticEnergy) / (460 * 680);
notifyListeners();
}
}

View File

@ -0,0 +1,62 @@
import 'package:energy/model/EnergyModelProvider.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
group('EnergyModelProviderTest1', () {
final provider = EnergyModelProvider();
test('Tests calculateEnergyInJoule', () {
provider.calculateEnergyInJoule('100', '500');
expect(provider.energyInJoule, 2500.0);
});
test('Tests calculateEnergyPotential', () {
provider.calculateEnergyPotential('10', '50');
expect(provider.potentialEnergy, 4905.0);
});
test('Tests calculateEnergyPotential', () {
provider.calculateEnergyKinetic('10', '50');
expect(provider.kineticEnergy, 12500.0);
});
test('Tests calculateEnergyPotential', () {
provider.calculateLiterToHeatWater();
expect(provider.literWaterToHeat, 0.05202355332376853);
});
test('Tests calculateKgToHeatIron', () {
provider.calculateKgToHeatIron();
expect(provider.kilogrammIronToHeat, 0.055642583120204606);
});
});
group('EnergyProviderTest2', () {
final provider = EnergyModelProvider();
test('Tests calculateEnergyInJoule', () {
provider.calculateEnergyInJoule('5000', '180');
expect(provider.energyInJoule, 6.48);
});
test('Tests calculateEnergyPotential', () {
provider.calculateEnergyPotential('5000', '60');
expect(provider.potentialEnergy, 2943000.0);
});
test('Tests calculateEnergyPotential', () {
provider.calculateEnergyKinetic('2000', '60');
expect(provider.kineticEnergy, 3600000.0);
});
test('Tests calculateEnergyPotential', () {
provider.calculateLiterToHeatWater();
expect(provider.literWaterToHeat, 19.557030129124822);
});
test('Tests calculateKgToHeatIron', () {
provider.calculateKgToHeatIron();
expect(provider.kilogrammIronToHeat, 20.91751918158568);
});
});
}