здесь), что, когда он сталкивается с сравниваемым значением в м/с, когда оно само в км/ч (в примере), перед сравнением значений также помещается сравниваемое значение в км/ч. И я тестирую его в этом тесте, где он запускается последним оператором AssertEquals(...):
@Test
@DisplayName("Ex E1, Benson Ch. 3")
void ex_Benson_Ch3_E1() {
LOGGER.info("Asafa Powell (Jamaïque) court 100m en 9.74s. Quelle est sa vitesse moyenne ?\nSerait-il en infraction dans une zone scolaire où la vitesse est limitée à 30 km/h ?");
Vitesse vitesseMoyenne = new Vitesse(100, 9.74); // Par défaut, en mètres secondes
assertEquals(10.3, vitesseMoyenne.vitesse(), 0.1, "La vitesse moyenne du coureur n'est pas la bonne, en m/s");
// Vérifier les conversions, étape par étape
Vitesse v1 = new Vitesse(vitesseMoyenne);
v1.convertir(KILOMETRE);
assertEquals(0.0103, v1.vitesse(), 0.1, "La vitesse moyenne du coureur n'est pas la bonne, en km/s");
assertEquals("km/s", v1.uniteMesure().symbole(), "La vitesse moyenne du coureur n'est pas exprimée en km/s");
v1.convertir(HEURE);
assertEquals(36.961, v1.vitesse(), 0.001, "La vitesse moyenne du coureur n'est pas la bonne, en km/h (A)");
assertEquals("km/h", v1.uniteMesure().symbole(), "La vitesse moyenne du coureur n'est pas exprimée en km/h (A)");
// Vérifier la conversion d'un seul tenant
Vitesse v2 = new Vitesse(vitesseMoyenne);
v2.convertir(KILOMETRE, HEURE);
assertEquals(36.961, v2.vitesse(), 0.001, "La vitesse moyenne du coureur n'est pas la bonne, en km/h (B)");
assertEquals("km/h", v2.uniteMesure().symbole(), "La vitesse moyenne du coureur n'est pas exprimée en km/h (B)");
if (v2.vitesse() > 36.0) {
LOGGER.info("Il serait bien en infraction dans une zone limitée à 30 km/h !");
}
else {
Assertions.fail("Il aurait dû être en infraction dans une zone limitée à 30 km/h");
}
// La vitesse moyenne, qui est restée en m/s, doit être égale à celle en km/h.
assertEquals(vitesseMoyenne, v2, "La vitesse moyenne du coureur, en m/s, doit être la même que celle en km/h, car une conversion est attendue durant la comparaison");
// Un tri de vitesses doit les mettre dans le bon ordre.
Vitesse v3 = new Vitesse(15.9, KILOMETRE, HEURE);
Vitesse v4 = new Vitesse(12.4, KILOMETRE, HEURE);
Vitesse v5 = new Vitesse(0.02, METRE, SECONDE);
Vitesse v6 = new Vitesse(27.46, METRE, SECONDE);
List vitessesCst = List.of(v3, v4, v2, v1, v6, v5, vitesseMoyenne);
List vitesses = new ArrayList(vitessesCst);
vitesses.sort(Vitesse::compareTo);
LOGGER.info("Tri de vitesses : {} → {}", vitessesCst, vitesses);
// [15.9km/h, 12.4km/h, 36.961km/h, 36.961km/h, 27.46m/s, 0.02m/s, 10.267m/s]
// → [0.02m/s, 12.4km/h, 15.9km/h, 36.961km/h, 36.961km/h, 10.267m/s, 27.46m/s]
int indexOfVitesseMoyenne = vitesses.indexOf(vitesseMoyenne);
int indexOfV1 = vitesses.indexOf(v1);
int indexOfV2 = vitesses.indexOf(v2);
int indexOfV3 = vitesses.indexOf(v3);
int indexOfV4 = vitesses.indexOf(v4);
int indexOfV5 = vitesses.indexOf(v5);
int indexOfV6 = vitesses.indexOf(v6);
assertEquals(0, indexOfV5, "L'index de la première vitesse de la liste triée n'est pas le bon");
assertEquals(1, indexOfV4, "L'index de la deuxième vitesse de la liste triée n'est pas le bon");
assertEquals(2, indexOfV3, "L'index de la troisième vitesse de la liste triée n'est pas le bon");
assertTrue(indexOfV1 >= 3 && indexOfV1 = 3 && indexOfV2 = 3 && indexOfVitesseMoyenne
Подробнее здесь: [url]https://stackoverflow.com/questions/79880817/how-to-systematise-a-checking-of-a-quite-equals-to-b-either-with-round-method[/url]
Мой контекст Я реализовал метод равенства(Object o) для объекта скорости ([code]Vitesse[/code] здесь), что, когда он сталкивается с сравниваемым значением в м/с, когда оно само в км/ч (в примере), перед сравнением значений также помещается сравниваемое значение в км/ч. И я тестирую его в этом тесте, где он запускается последним оператором AssertEquals(...): [code]@Test @DisplayName("Ex E1, Benson Ch. 3") void ex_Benson_Ch3_E1() { LOGGER.info("Asafa Powell (Jamaïque) court 100m en 9.74s. Quelle est sa vitesse moyenne ?\nSerait-il en infraction dans une zone scolaire où la vitesse est limitée à 30 km/h ?");
Vitesse vitesseMoyenne = new Vitesse(100, 9.74); // Par défaut, en mètres secondes assertEquals(10.3, vitesseMoyenne.vitesse(), 0.1, "La vitesse moyenne du coureur n'est pas la bonne, en m/s");
// Vérifier les conversions, étape par étape Vitesse v1 = new Vitesse(vitesseMoyenne);
v1.convertir(KILOMETRE); assertEquals(0.0103, v1.vitesse(), 0.1, "La vitesse moyenne du coureur n'est pas la bonne, en km/s"); assertEquals("km/s", v1.uniteMesure().symbole(), "La vitesse moyenne du coureur n'est pas exprimée en km/s");
v1.convertir(HEURE); assertEquals(36.961, v1.vitesse(), 0.001, "La vitesse moyenne du coureur n'est pas la bonne, en km/h (A)"); assertEquals("km/h", v1.uniteMesure().symbole(), "La vitesse moyenne du coureur n'est pas exprimée en km/h (A)");
// Vérifier la conversion d'un seul tenant Vitesse v2 = new Vitesse(vitesseMoyenne);
v2.convertir(KILOMETRE, HEURE); assertEquals(36.961, v2.vitesse(), 0.001, "La vitesse moyenne du coureur n'est pas la bonne, en km/h (B)"); assertEquals("km/h", v2.uniteMesure().symbole(), "La vitesse moyenne du coureur n'est pas exprimée en km/h (B)");
if (v2.vitesse() > 36.0) { LOGGER.info("Il serait bien en infraction dans une zone limitée à 30 km/h !"); } else { Assertions.fail("Il aurait dû être en infraction dans une zone limitée à 30 km/h"); }
// La vitesse moyenne, qui est restée en m/s, doit être égale à celle en km/h. assertEquals(vitesseMoyenne, v2, "La vitesse moyenne du coureur, en m/s, doit être la même que celle en km/h, car une conversion est attendue durant la comparaison");
// Un tri de vitesses doit les mettre dans le bon ordre. Vitesse v3 = new Vitesse(15.9, KILOMETRE, HEURE); Vitesse v4 = new Vitesse(12.4, KILOMETRE, HEURE); Vitesse v5 = new Vitesse(0.02, METRE, SECONDE); Vitesse v6 = new Vitesse(27.46, METRE, SECONDE); List vitessesCst = List.of(v3, v4, v2, v1, v6, v5, vitesseMoyenne); List vitesses = new ArrayList(vitessesCst);
vitesses.sort(Vitesse::compareTo); LOGGER.info("Tri de vitesses : {} → {}", vitessesCst, vitesses);
// [15.9km/h, 12.4km/h, 36.961km/h, 36.961km/h, 27.46m/s, 0.02m/s, 10.267m/s] // → [0.02m/s, 12.4km/h, 15.9km/h, 36.961km/h, 36.961km/h, 10.267m/s, 27.46m/s] int indexOfVitesseMoyenne = vitesses.indexOf(vitesseMoyenne); int indexOfV1 = vitesses.indexOf(v1); int indexOfV2 = vitesses.indexOf(v2); int indexOfV3 = vitesses.indexOf(v3); int indexOfV4 = vitesses.indexOf(v4); int indexOfV5 = vitesses.indexOf(v5); int indexOfV6 = vitesses.indexOf(v6); assertEquals(0, indexOfV5, "L'index de la première vitesse de la liste triée n'est pas le bon"); assertEquals(1, indexOfV4, "L'index de la deuxième vitesse de la liste triée n'est pas le bon"); assertEquals(2, indexOfV3, "L'index de la troisième vitesse de la liste triée n'est pas le bon"); assertTrue(indexOfV1 >= 3 && indexOfV1 = 3 && indexOfV2 = 3 && indexOfVitesseMoyenne