FOP-2425-Marathon/src/graderPrivate/java/h05/CombinedPlaneTest.java
Oshgnacknak 880c3ae75f Squashed 'solution/H05/' content from commit db3524a
git-subtree-dir: solution/H05
git-subtree-split: db3524a6321cc840e329abb2b44bea58c7583330
2025-01-11 16:41:10 +01:00

73 lines
3.1 KiB
Java

package h05;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.sourcegrade.jagr.api.rubric.TestForSubmission;
import org.tudalgo.algoutils.transform.util.headers.ClassHeader;
import org.tudalgo.algoutils.transform.util.headers.FieldHeader;
import org.tudalgo.algoutils.transform.util.headers.MethodHeader;
import org.tudalgo.algoutils.tutor.general.assertions.Context;
import static org.tudalgo.algoutils.transform.SubmissionExecutionHandler.*;
import static org.tudalgo.algoutils.tutor.general.assertions.Assertions2.*;
@TestForSubmission
public class CombinedPlaneTest {
@AfterEach
public void tearDown() {
resetAll();
}
@Test
public void testClassHeader() {
ClassHeader originalClassHeader = getOriginalClassHeader(CombinedPlane.class);
assertEquals(PassengerPlane.class, originalClassHeader.getSuperType(), emptyContext(), result ->
"Class CombinedPlane does not extend PassengerPlane");
assertTrue(originalClassHeader.getInterfaceTypes().contains(CarriesCargo.class), emptyContext(), result ->
"Class CombinedPlane does not implement CarriesCargo");
}
@Test
public void testConstructor() {
String aircraftRegistration = "D-FLOP";
int baseWeight = 500;
FuelType fuelType = FuelType.JetB;
double fuelCapacity = 200;
int crewCount = 5;
Context context = contextBuilder()
.add("aircraftRegistration", aircraftRegistration)
.add("baseWeight", baseWeight)
.add("fuelType", fuelType)
.add("fuelCapacity", fuelCapacity)
.add("crewCount", crewCount)
.build();
Delegation.disable(MethodHeader.of(CombinedPlane.class, String.class, int.class, FuelType.class, double.class, int.class));
CombinedPlane combinedPlaneInstance = callObject(
() -> new CombinedPlane(aircraftRegistration, baseWeight, fuelType, fuelCapacity, crewCount),
context,
result -> "An exception occurred while invoking constructor of CombinedPlane");
assertEquals(aircraftRegistration,
FieldHeader.of(Plane.class, "aircraftRegistration").getValue(combinedPlaneInstance),
context,
result -> "Field aircraftRegistration has incorrect value");
assertEquals(baseWeight,
FieldHeader.of(Plane.class, "baseWeight").getValue(combinedPlaneInstance),
context,
result -> "Field baseWeight has incorrect value");
assertEquals(fuelType,
FieldHeader.of(Plane.class, "fuelType").getValue(combinedPlaneInstance),
context,
result -> "Field fuelType has incorrect value");
assertEquals(fuelCapacity,
FieldHeader.of(Plane.class, "fuelCapacity").getValue(combinedPlaneInstance),
context,
result -> "Field fuelCapacity has incorrect value");
assertEquals(crewCount,
FieldHeader.of(PassengerPlane.class, "crewCount").getValue(combinedPlaneInstance),
context,
result -> "Field crewCount has incorrect value");
}
}