ReadMe, Explication stratégies et tests

This commit is contained in:
Rochas
2025-12-20 12:47:18 +01:00
parent 4e0090e027
commit 6948c79dcb
6 changed files with 160 additions and 73 deletions

View File

@@ -10,8 +10,6 @@ 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;
@@ -21,10 +19,21 @@ import impl.Scheduler;
public class TestAlgoDiffusionAtom {
static int NB_CANAUX = 3;
static int TEST_TIME = 30; // TEST_TIME/6 + TEST_TIME-TEST_TIME/6
static int TEST_TIME = 30; // TEST_TIME/6 + 5*TEST_TIME/6
public static List<Integer>[] rAtom;
private static void display(List<Integer>[] 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<res[i].size()-1) System.out.print(", ");
}
System.out.println(" ");
}
}
@BeforeAll
public static void testAtom() throws InterruptedException{
@@ -39,7 +48,6 @@ public class TestAlgoDiffusionAtom {
CapteurImpl c = new CapteurImpl();
DiffusionAtomique algo = new DiffusionAtomique(c);
c.setAlgoDiffusion(algo);
for(int i = 0; i<NB_CANAUX; i++){
@@ -62,7 +70,7 @@ public class TestAlgoDiffusionAtom {
c.stop(); //arrête la mise à jour du capteur (mais stop pas le tick)
System.out.println("waitting for lasts display...");
for(int i = TEST_TIME-TEST_TIME/6; i>0; i--){
for(int i = 5*TEST_TIME/6; i>0; i--){
System.out.println("restant " + i + "s");
Thread.sleep(1000);
}
@@ -70,35 +78,50 @@ public class TestAlgoDiffusionAtom {
future.cancel(false);
clock.shutdown();
//Thread.sleep(1500);
for(int i = 0; i<NB_CANAUX; i++){
r[i] = a[i].vals;
}
rAtom = r;
display(rAtom);
}
// ORACLE
@Test
void testHaveAllElement(){
boolean r = true;
for(int i = 0; i< NB_CANAUX && r; i++){
int valTest = 1;
for(int j = 0; j< rAtom[i].size() && r; j++){
r = r && rAtom[i].get(j)==valTest;
valTest++;
}
}
assertTrue(r);
}
@Test
void testAtomOracle(){
void sameElements(){
boolean r = true;
for(int i = 0; i< NB_CANAUX-1 && r; i++){
r = rAtom[i].size()==rAtom[i+1].size();
}
if(!r) System.out.println("pas de la même taille :");
for(int i = 0; i< NB_CANAUX && r; i++){
int valTest = 1;
System.out.println("canal " + i + ":");
for(int j = 0; j< rAtom[i].size() && r; j++){
System.out.print(rAtom[i].get(j));
if(j<rAtom[i].size()-1) System.out.print(", ");
r = r && rAtom[i].get(j)==valTest;
valTest++;
if(!r){
System.err.println("Pas de la même taille !");
}
else{
for(int j = 0; j< rAtom[0].size() && r; j++){
int temp = rAtom[0].get(j);
for(int i = 1; i< NB_CANAUX && r; i++){
r = r && rAtom[i].get(j)==temp;
}
}
System.out.println(" ");
}
assertTrue(r);
}