package test; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertTrue; import impl.Afficheur; import impl.Canal; import impl.CapteurImpl; import impl.DiffusionAtomique; import impl.Scheduler; public class TestAlgoDiffusionAtom { static int NB_CANAUX = 3; static int TEST_TIME = 30; // TEST_TIME/6 + 5*TEST_TIME/6 public static List[] rAtom; private static void display(List[] res){ for(int i = 0; i< NB_CANAUX; i++){ System.out.println("canal " + i + ":"); for(int j = 0; j< res[i].size(); j++){ System.out.print(res[i].get(j)); if(j[] r = new ArrayList[NB_CANAUX]; for(int i = 0; i(); } Afficheur[] a = new Afficheur[NB_CANAUX]; Scheduler scheduler = new Scheduler(NB_CANAUX); CapteurImpl c = new CapteurImpl(); DiffusionAtomique algo = new DiffusionAtomique(c); c.setAlgoDiffusion(algo); for(int i = 0; i future = clock.scheduleAtFixedRate(() -> c.tick(), 0, 500, TimeUnit.MILLISECONDS); for(int i = TEST_TIME/6; i>0; i--){ //attend que le capteur génère des valeurs System.out.println("restant " + i + "s"); Thread.sleep(1000); } System.out.println("STOP"); c.stop(); //arrête la mise à jour du capteur (mais stop pas le tick) System.out.println("waitting for lasts display..."); for(int i = 5*TEST_TIME/6; i>0; i--){ System.out.println("restant " + i + "s"); Thread.sleep(1000); } future.cancel(false); clock.shutdown(); for(int i = 0; i