@Test
public void cloneModel() {

    final Simulation cloned = this.simulation.cloneModel();
    assertNotNull(cloned);
    final ScesimModelDescriptor originalDescriptor = simulation.getScesimModelDescriptor();
    final ScesimModelDescriptor clonedDescriptor = cloned.getScesimModelDescriptor();
    assertEquals(originalDescriptor.getUnmodifiableFactMappings().size(), clonedDescriptor.getUnmodifiableFactMappings().size());
    IntStream.range(0, originalDescriptor.getUnmodifiableFactMappings().size()).forEach(index -> {
        assertEquals(originalDescriptor.getUnmodifiableFactMappings().get(index), clonedDescriptor.getUnmodifiableFactMappings().get(index));
    });
    assertEquals(simulation.getUnmodifiableData().size(), cloned.getUnmodifiableData().size());
    IntStream.range(0, simulation.getUnmodifiableData().size()).forEach(index -> {
        assertEquals(simulation.getUnmodifiableData().get(index).getDescription(), cloned.getUnmodifiableData().get(index).getDescription());
    });
}