Files
2026-06-17 14:00:51 +02:00

151 lines
7.6 KiB
Java

package jmri.jmrit.operations.rollingstock.cars;
import org.junit.Assert;
import org.junit.jupiter.api.Test;
import jmri.jmrit.operations.OperationsTestCase;
/**
* Tests for the Operations RollingStock Cars Kernel class Last manually cross-checked
* on 20090131
*
* Still to do: Everything
*
* @author Bob Coleman Copyright (C) 2008, 2009
*/
public class KernelTest extends OperationsTestCase {
@Test
public void testKernel() {
Kernel k1 = new Kernel("TESTKERNEL");
Assert.assertEquals("Kernel Name", "TESTKERNEL", k1.getName());
Car c1 = new Car("TESTCARROAD", "TESTCARNUMBER1");
c1.setLength("40");
c1.setWeight("1000");
c1.setWeightTons("10");
c1.setLoadName("L");
Car c2 = new Car("TESTCARROAD", "TESTCARNUMBER2");
c2.setLength("60");
c2.setWeight("2000");
c2.setWeightTons("20");
c2.setLoadName("L");
Car c3 = new Car("TESTCARROAD", "TESTCARNUMBER3");
c3.setLength("50");
c3.setWeight("1500");
c3.setWeightTons("15");
c3.setLoadName("E");
Assert.assertEquals("Kernel Initial Length", 0, k1.getTotalLength());
Assert.assertEquals("Kernel Initial Weight Tons", 0, k1.getAdjustedWeightTons());
c1.setKernel(k1);
Assert.assertEquals("Kernel Car 1 Length", 40 + Car.COUPLERS, k1.getTotalLength());
Assert.assertEquals("Kernel Length", 40 + Car.COUPLERS, c1.getTotalKernelLength());
Assert.assertEquals("Car 1 Length", 40 + Car.COUPLERS, c1.getTotalLength());
Assert.assertEquals("Kernel Car 1 Weight Tons", 10, k1.getAdjustedWeightTons());
Assert.assertTrue("Kernel Lead", k1.isLead(c1));
Assert.assertTrue("Kernel Lead", c1.isLead());
k1.add(c2);
Assert.assertEquals("Kernel Car 2 Length", 40 + Car.COUPLERS + 60 + Car.COUPLERS, k1.getTotalLength());
Assert.assertEquals("Kernel Length", 40 + Car.COUPLERS + 60 + Car.COUPLERS, c1.getTotalKernelLength());
Assert.assertEquals("Car 1 Length", 40 + Car.COUPLERS, c1.getTotalLength());
Assert.assertEquals("Kernel Car 2 Weight Tons", 30, k1.getAdjustedWeightTons());
Assert.assertTrue("Kernel Lead", k1.isLead(c1));
Assert.assertTrue("Kernel Lead", c1.isLead());
k1.add(c3);
Assert.assertEquals("Kernel Car 3 Length", 40 + Car.COUPLERS + 60 + Car.COUPLERS + 50 + Car.COUPLERS, k1.getTotalLength());
Assert.assertEquals("Kernel Length", 40 + Car.COUPLERS + 60 + Car.COUPLERS + 50 + Car.COUPLERS,
c1.getTotalKernelLength());
Assert.assertEquals("Car 1 Length", 40 + Car.COUPLERS, c1.getTotalLength());
// car 3 is empty, so only 5 tons, 15/3
Assert.assertEquals("Kernel Car 3 Weight Tons", 35, k1.getAdjustedWeightTons());
Assert.assertTrue("Kernel Lead", k1.isLead(c1));
Assert.assertTrue("Kernel Lead", c1.isLead());
k1.setLead(c2);
Assert.assertTrue("Kernel Lead", k1.isLead(c2));
Assert.assertFalse("Kernel Lead", k1.isLead(c1));
Assert.assertFalse("Kernel Lead", k1.isLead(c3));
k1.delete(c2);
Assert.assertEquals("Kernel Car Delete 2 Length", 40 + Car.COUPLERS + 50 + Car.COUPLERS, k1.getTotalLength());
Assert.assertEquals("Kernel Car Delete 2 Weight Tons", 15, k1.getAdjustedWeightTons());
k1.delete(c1);
Assert.assertEquals("Kernel Car Delete 1 Length", 50 + Car.COUPLERS, k1.getTotalLength());
Assert.assertEquals("Kernel Car Delete 1 Weight Tons", 5, k1.getAdjustedWeightTons());
k1.delete(c3);
Assert.assertEquals("Kernel Car Delete 3 Length", 0, k1.getTotalLength());
Assert.assertEquals("Kernel Car Delete 3 Weight Tons", 0, k1.getAdjustedWeightTons());
}
@Test
public void testCarKernel() {
Kernel kold = new Kernel("TESTKERNELOLD");
Assert.assertEquals("Kernel Name old", "TESTKERNELOLD", kold.getName());
Kernel knew = new Kernel("TESTKERNELNEW");
Assert.assertEquals("Kernel Name new", "TESTKERNELNEW", knew.getName());
Car c1 = new Car("TESTCARROAD", "TESTCARNUMBER1");
c1.setLength("40");
c1.setWeight("1000");
Car c2 = new Car("TESTCARROAD", "TESTCARNUMBER2");
c2.setLength("60");
c2.setWeight("2000");
Car c3 = new Car("TESTCARROAD", "TESTCARNUMBER3");
c3.setLength("50");
c3.setWeight("1500");
// All three cars start out in the old kernel with car 1 as the lead car.
c1.setKernel(kold);
c2.setKernel(kold);
c3.setKernel(kold);
Assert.assertEquals("Kernel Name for car 1 before", "TESTKERNELOLD", c1.getKernelName());
Assert.assertEquals("Kernel Name for car 2 before", "TESTKERNELOLD", c2.getKernelName());
Assert.assertEquals("Kernel Name for car 3 before", "TESTKERNELOLD", c3.getKernelName());
Assert.assertEquals("Kernel old length before", 40 + 4 + 60 + 4 + 50 + 4, kold.getTotalLength());
Assert.assertEquals("Kernel new length before", 0, knew.getTotalLength());
Assert.assertTrue("Kernel old Lead is Car 1 before", kold.isLead(c1));
Assert.assertFalse("Kernel old Lead is not Car 2 before", kold.isLead(c2));
Assert.assertFalse("Kernel old Lead is not Car 3 before", kold.isLead(c3));
Assert.assertFalse("Kernel new Lead is not Car 1 before", knew.isLead(c1));
Assert.assertFalse("Kernel new Lead is not Car 2 before", knew.isLead(c2));
Assert.assertFalse("Kernel new Lead is not Car 3 before", knew.isLead(c3));
// Move car 1 to the new kernel where it will be the lead car.
// Car 2 should now be the lead car of the old kernel.
c1.setKernel(knew);
Assert.assertEquals("Kernel Name for car 1 after", "TESTKERNELNEW", c1.getKernelName());
Assert.assertEquals("Kernel Name for car 2 after", "TESTKERNELOLD", c2.getKernelName());
Assert.assertEquals("Kernel Name for car 3 after", "TESTKERNELOLD", c3.getKernelName());
Assert.assertEquals("Kernel old length after", 60 + 4 + 50 + 4, kold.getTotalLength());
Assert.assertEquals("Kernel new length after", 40 + 4, knew.getTotalLength());
Assert.assertFalse("Kernel old Lead is not Car 1 after", kold.isLead(c1));
Assert.assertTrue("Kernel old Lead is Car 2 after", kold.isLead(c2));
Assert.assertFalse("Kernel old Lead is not Car 3 after", kold.isLead(c3));
Assert.assertTrue("Kernel new Lead is Car 1 after", knew.isLead(c1));
Assert.assertFalse("Kernel new Lead is not Car 2 after", knew.isLead(c2));
Assert.assertFalse("Kernel new Lead is not Car 3 after", knew.isLead(c3));
// Move car 3 to the new kernel.
c3.setKernel(knew);
Assert.assertEquals("Kernel Name for car 1 after3", "TESTKERNELNEW", c1.getKernelName());
Assert.assertEquals("Kernel Name for car 2 after3", "TESTKERNELOLD", c2.getKernelName());
Assert.assertEquals("Kernel Name for car 3 after3", "TESTKERNELNEW", c3.getKernelName());
Assert.assertEquals("Kernel old length after3", 60 + 4, kold.getTotalLength());
Assert.assertEquals("Kernel new length after3", 40 + 4 + 50 + 4, knew.getTotalLength());
Assert.assertFalse("Kernel old Lead is not Car 1 after3", kold.isLead(c1));
Assert.assertTrue("Kernel old Lead is Car 2 after3", kold.isLead(c2));
Assert.assertFalse("Kernel old Lead is not Car 3 after3", kold.isLead(c3));
Assert.assertTrue("Kernel new Lead is Car 1 after3", knew.isLead(c1));
Assert.assertFalse("Kernel new Lead is not Car 2 after3", knew.isLead(c2));
Assert.assertFalse("Kernel new Lead is not Car 3 after3", knew.isLead(c3));
}
}