From de7e7940081c908af5bd5a384e32a104841163a8 Mon Sep 17 00:00:00 2001 From: Maxence <maxence.antoine.etu@univ-lille.fr> Date: Fri, 29 Nov 2024 15:10:25 +0100 Subject: [PATCH] =?UTF-8?q?test=20a=20modifier=20et=20arranger=20pour=20la?= =?UTF-8?q?=20conformit=C3=A9=20des=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DistanceManhattanNormaliseeTest.java | 317 ++++++++++++++++++ ...stanceManhattanNormalis\303\251eTest.java" | 91 ----- 2 files changed, 317 insertions(+), 91 deletions(-) create mode 100644 src/test/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormaliseeTest.java delete mode 100644 "src/test/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormalis\303\251eTest.java" diff --git a/src/test/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormaliseeTest.java b/src/test/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormaliseeTest.java new file mode 100644 index 0000000..be9d92e --- /dev/null +++ b/src/test/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormaliseeTest.java @@ -0,0 +1,317 @@ +package fr.univlille.sae.classification.knn.distance; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; +import fr.univlille.sae.classification.model.LoadableData; +import fr.univlille.sae.classification.knn.MethodKNN; +import org.junit.jupiter.api.BeforeEach; + +import java.util.Map; + +public class DistanceManhattanNormaliseeTest { + + private DistanceManhattanNormalisee distanceManhattan; + + @BeforeEach + public void setUp() { + // Initialisation de l'objet DistanceManhattanNormalisee avant chaque test + distanceManhattan = new DistanceManhattanNormalisee(); + + // Définition des valeurs de normalisation dans MethodKNN (à ajuster selon votre logique) + MethodKNN.minData = new double[] {0.0, 0.0}; // Valeurs minimales pour les attributs + MethodKNN.amplitude = new double[] {1.0, 1.0}; // Amplitude pour la normalisation + } + + @Test + public void testDistanceSimple() { + // Création de deux objets LoadableData avec des attributs simples + LoadableData data1 = new LoadableData() { + @Override + public String getClassification() { + return null; + } + + @Override + public void setClassification(String classification) { + + } + + @Override + public Map<String, Object> getAttributesNames() { + return null; + } + + @Override + public double[] getAttributes() { + return new double[0]; + } + + @Override + public String[] getStringAttributes() { + return new String[0]; + } + }; + LoadableData data2 = new LoadableData() { + @Override + public String getClassification() { + return null; + } + + @Override + public void setClassification(String classification) { + + } + + @Override + public Map<String, Object> getAttributesNames() { + return null; + } + + @Override + public double[] getAttributes() { + return new double[0]; + } + + @Override + public String[] getStringAttributes() { + return new String[0]; + } + }; + + // Calcul de la distance manhattan normalisée + double result = distanceManhattan.distance(data1, data2); + + // Calcul attendu : (|1.0 - 3.0| / 1.0) + (|2.0 - 5.0| / 1.0) + double expected = (Math.abs(1.0 - 3.0) / 1.0) + (Math.abs(2.0 - 5.0) / 1.0); + + // Vérification du résultat + assertEquals(expected, result, 0.001); + } + + @Test + public void testDistanceZero() { + // Deux objets avec les mêmes attributs (la distance devrait être 0) + LoadableData data1 = new LoadableData() { + @Override + public String getClassification() { + return null; + } + + @Override + public void setClassification(String classification) { + + } + + @Override + public Map<String, Object> getAttributesNames() { + return null; + } + + @Override + public double[] getAttributes() { + return new double[0]; + } + + @Override + public String[] getStringAttributes() { + return new String[0]; + } + }; + LoadableData data2 = new LoadableData() { + @Override + public String getClassification() { + return null; + } + + @Override + public void setClassification(String classification) { + + } + + @Override + public Map<String, Object> getAttributesNames() { + return null; + } + + @Override + public double[] getAttributes() { + return new double[0]; + } + + @Override + public String[] getStringAttributes() { + return new String[0]; + } + }; + + // Vérification que la distance est bien 0 + double result = distanceManhattan.distance(data1, data2); + assertEquals(0.0, result, 0.001); + } + + @Test + public void testDistanceAvecValeursExtremes() { + // Test avec des valeurs maximales ou minimales (hypothétiques dans ce cas) + LoadableData data1 = new LoadableData() { + @Override + public String getClassification() { + return null; + } + + @Override + public void setClassification(String classification) { + + } + + @Override + public Map<String, Object> getAttributesNames() { + return null; + } + + @Override + public double[] getAttributes() { + return new double[0]; + } + + @Override + public String[] getStringAttributes() { + return new String[0]; + } + }; + LoadableData data2 = new LoadableData() { + @Override + public String getClassification() { + return null; + } + + @Override + public void setClassification(String classification) { + + } + + @Override + public Map<String, Object> getAttributesNames() { + return null; + } + + @Override + public double[] getAttributes() { + return new double[0]; + } + + @Override + public String[] getStringAttributes() { + return new String[0]; + } + }; + + double result = distanceManhattan.distance(data1, data2); + + // Calcul de la distance, ici l'effet de normalisation devrait être pris en compte + double expected = (Math.abs(Double.MAX_VALUE - Double.MIN_VALUE) / 1.0) + + (Math.abs(Double.MIN_VALUE - Double.MAX_VALUE) / 1.0); + + assertEquals(expected, result, 0.001); + } + + @Test + public void testDistanceAvecDonneesNulles() { + // Test avec des données nulles + LoadableData data1 = new LoadableData() { + @Override + public String getClassification() { + return null; + } + + @Override + public void setClassification(String classification) { + + } + + @Override + public Map<String, Object> getAttributesNames() { + return null; + } + + @Override + public double[] getAttributes() { + return new double[0]; + } + + @Override + public String[] getStringAttributes() { + return new String[0]; + } + }; + LoadableData data2 = null; + + try { + distanceManhattan.distance(data1, data2); + fail("La méthode devrait lever une exception quand l'un des objets est nul"); + } catch (NullPointerException e) { + // Vérification qu'une exception est lancée + } + } + + @Test + public void testDistanceAvecDonneesVides() { + // Test avec des données vides (tous les attributs sont 0 ou absents) + LoadableData data1 = new LoadableData() { + @Override + public String getClassification() { + return null; + } + + @Override + public void setClassification(String classification) { + + } + + @Override + public Map<String, Object> getAttributesNames() { + return null; + } + + @Override + public double[] getAttributes() { + return new double[0]; + } + + @Override + public String[] getStringAttributes() { + return new String[0]; + } + }; + LoadableData data2 = new LoadableData() { + @Override + public String getClassification() { + return null; + } + + @Override + public void setClassification(String classification) { + + } + + @Override + public Map<String, Object> getAttributesNames() { + return null; + } + + @Override + public double[] getAttributes() { + return new double[0]; + } + + @Override + public String[] getStringAttributes() { + return new String[0]; + } + }; + + // La distance devrait être 0 car il n'y a aucune différence d'attribut + double result = distanceManhattan.distance(data1, data2); + assertEquals(0.0, result, 0.001); + } +} diff --git "a/src/test/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormalis\303\251eTest.java" "b/src/test/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormalis\303\251eTest.java" deleted file mode 100644 index f9265de..0000000 --- "a/src/test/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormalis\303\251eTest.java" +++ /dev/null @@ -1,91 +0,0 @@ -package fr.univlille.sae.classification.knn.distance; - -import static org.junit.jupiter.api.Assertions.*; - -import org.junit.jupiter.api.Test; -import fr.univlille.sae.classification.model.LoadableData; -import fr.univlille.sae.classification.knn.MethodKNN; -import fr.univlille.sae.classification.knn.distance.DistanceManhattanNormalisée; -import org.junit.jupiter.api.BeforeEach; - -public class DistanceManhattanNormaliséeTest { - - private DistanceManhattanNormalisée distanceManhattan; - - @BeforeEach - public void setUp() { - // Initialisation de l'objet DistanceManhattanNormalisée avant chaque test - distanceManhattan = new DistanceManhattanNormalisée(); - - // Définition des valeurs de normalisation dans MethodKNN (à ajuster selon votre logique) - MethodKNN.minData = new double[] {0.0, 0.0}; // Valeurs minimales pour les attributs - MethodKNN.amplitude = new double[] {1.0, 1.0}; // Amplitude pour la normalisation - } - - @Test - public void testDistanceSimple() { - // Création de deux objets LoadableData avec des attributs simples - LoadableData data1 = new LoadableData(new double[] {1.0, 2.0}); - LoadableData data2 = new LoadableData(new double[] {3.0, 5.0}); - - // Calcul de la distance manhattan normalisée - double result = distanceManhattan.distance(data1, data2); - - // Calcul attendu : (|1.0 - 3.0| / 1.0) + (|2.0 - 5.0| / 1.0) - double expected = (Math.abs(1.0 - 3.0) / 1.0) + (Math.abs(2.0 - 5.0) / 1.0); - - // Vérification du résultat - assertEquals(expected, result, 0.001); - } - - @Test - public void testDistanceZero() { - // Deux objets avec les mêmes attributs (la distance devrait être 0) - LoadableData data1 = new LoadableData(new double[] {1.0, 2.0}); - LoadableData data2 = new LoadableData(new double[] {1.0, 2.0}); - - // Vérification que la distance est bien 0 - double result = distanceManhattan.distance(data1, data2); - assertEquals(0.0, result, 0.001); - } - - @Test - public void testDistanceAvecValeursExtremes() { - // Test avec des valeurs maximales ou minimales (hypothétiques dans ce cas) - LoadableData data1 = new LoadableData(new double[] {Double.MAX_VALUE, Double.MIN_VALUE}); - LoadableData data2 = new LoadableData(new double[] {Double.MIN_VALUE, Double.MAX_VALUE}); - - double result = distanceManhattan.distance(data1, data2); - - // Calcul de la distance, ici l'effet de normalisation devrait être pris en compte - double expected = (Math.abs(Double.MAX_VALUE - Double.MIN_VALUE) / 1.0) + - (Math.abs(Double.MIN_VALUE - Double.MAX_VALUE) / 1.0); - - assertEquals(expected, result, 0.001); - } - - @Test - public void testDistanceAvecDonneesNulles() { - // Test avec des données nulles - LoadableData data1 = new LoadableData(new double[] {1.0, 2.0}); - LoadableData data2 = null; - - try { - distanceManhattan.distance(data1, data2); - fail("La méthode devrait lever une exception quand l'un des objets est nul"); - } catch (NullPointerException e) { - // Vérification qu'une exception est lancée - } - } - - @Test - public void testDistanceAvecDonneesVides() { - // Test avec des données vides (tous les attributs sont 0 ou absents) - LoadableData data1 = new LoadableData(new double[] {}); - LoadableData data2 = new LoadableData(new double[] {}); - - // La distance devrait être 0 car il n'y a aucune différence d'attribut - double result = distanceManhattan.distance(data1, data2); - assertEquals(0.0, result, 0.001); - } -} -- GitLab