This commit is contained in:
2020-11-25 14:46:24 +01:00
parent 48a00da209
commit eba2ea181c
33 changed files with 3285 additions and 0 deletions

View File

@@ -0,0 +1,238 @@
package TD6.grapheSimple;
import static org.junit.jupiter.api.Assertions.*;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import TD6.grapheX.Arc;
import TD6.grapheX.Sommet;
//@todo to be improved!
public class GrapheSimpleTest extends GrapheSimple<Sommet> {
GrapheSimple<Sommet> graphe = new GrapheSimple<>();
Sommet s1 = new Sommet("S1");
Sommet s2 = new Sommet("S2");
Sommet s3= new Sommet("S3");
Sommet s4= new Sommet("S4");
int distance_s1_s2 = 1;
int distance_s1_s3 = 2;
int distance_s2_s1 = 2;
int distance_s2_s3 = 1;
int distance_s3_s4 = 2;
int distance_s4_s1 = 10;
/*
* s1 -1-> s2 -1-> s3
* s2-2-> s1
* s3 -2-> s4
* s4 -10-> s1
*
*/
@BeforeEach
public void setUp() throws Exception {
graphe = new GrapheSimple<>();
}
public void initGlobalGraph(){
graphe = new GrapheSimple<>();
graphe.ajouterSommet(s1);
graphe.ajouterSommet(s2);
graphe.ajouterSommet(s3);
graphe.ajouterSommet(s4);
graphe.ajouterArc(s1, s2, distance_s1_s2);
graphe.ajouterArc(s1, s2, distance_s1_s2*2);
graphe.ajouterArc(s1, s3, distance_s1_s3);
graphe.ajouterArc(s2, s1, distance_s2_s1);
graphe.ajouterArc(s2, s3, distance_s2_s3);
graphe.ajouterArc(s3, s4, distance_s3_s4);
graphe.ajouterArc(s4, s1, distance_s4_s1);
}
@Test
public void testTailleInitiale() {
assertEquals(0,graphe.taille());
}
@Test
public void testAjouterSommetInitial() {
graphe.ajouterSommet(s1);
assertEquals(1,graphe.taille());
assertEquals(s1,graphe.getSommet("S1"));
}
@Test
public void testAjouterArcInitial() {
graphe.ajouterSommet(s1);
graphe.ajouterSommet(s2);
graphe.ajouterSommet(s3);
graphe.ajouterArc(s1, s2, distance_s1_s2);
assertEquals(3,graphe.taille());
assertTrue(graphe.existeArc(s1, s2));
assertFalse(graphe.existeArc(s1, s3));
List<Arc<Sommet>> arcs = graphe.arcs(s1, s2);
assertEquals(1,arcs.size());
}
@Test
public void testVoisinsSommet() {
initGlobalGraph();
Collection<Arc<Sommet>> voisins = graphe.voisins(s1);
assertEquals(3, voisins.size());
//System.out.println("voisins de s1 :" + voisins);
voisins = graphe.voisins(s2);
assertEquals(2, voisins.size(), "voisins de s2 : " + voisins);
//System.out.println("voisins de s2 : " + voisins);
}
@Test
public void testArcs() {
initGlobalGraph();
List<Arc<Sommet>> arcs = graphe.arcs(s1, s2);
//System.out.println("de s1 a s2 : " + arcs);
assertEquals(2, arcs.size());
arcs = graphe.arcs(s1, s3);
//System.out.println("de s1 a s3 : " + arcs);
assertEquals(1, arcs.size());
arcs = graphe.arcs(s1, s4);
//System.out.println("de s1 a s4 : " + arcs);
assertTrue(arcs==null);
arcs = graphe.arcs(s4, s1);
//System.out.println("de s4 a s1 : " + arcs);
assertEquals(1, arcs.size());
}
@Test
public void testParcoursCheminsDe() {
initGlobalGraph();
List<Chemin<Sommet>> chemins = graphe.chemins(s1);
assertEquals(3, chemins.size());
System.out.println("Chemins a partir de s1: " + chemins);
chemins = graphe.chemins(s2);
System.out.println("Chemins a partir de s2: " + chemins);
assertEquals(2, chemins.size());
chemins = graphe.chemins(s3);
System.out.println("Chemins a partir de s3: " + chemins);
assertEquals(2, chemins.size());
chemins = graphe.chemins(s4);
assertEquals(3, chemins.size());
System.out.println("Chemins a partir de s4: " + chemins);
}
@Test
public void testParcoursCheminsDeA() {
initGlobalGraph();
List<Chemin<Sommet>> chemins = graphe.chemins(s1,s2);
System.out.println("Chemins de s1 a s2: " + chemins);
assertEquals(2, chemins.size());
chemins = graphe.chemins(s1,s3);
System.out.println("Chemins de s1 a s3: " + chemins);
assertEquals(3, chemins.size(), "Chemins de s1 a s3:");
chemins = graphe.chemins(s1,s4);
System.out.println("Chemins de s1 a s4: " + chemins);
assertEquals(3, chemins.size());
chemins = graphe.chemins(s2,s3);
System.out.println("Chemins de s2 a s3: " + chemins);
assertEquals(2, chemins.size());
chemins = graphe.chemins(s4,s1);
System.out.println("Chemins de s4 a s1: " + chemins);
assertEquals(1, chemins.size(), "Chemins de s4 a s1: ");
}
@Test
public void testCheminLePlusCourt() {
initGlobalGraph();
Chemin<Sommet> chemin = graphe.cheminLePlusCourt(s1, s2);
assertEquals(distance_s1_s2, chemin.distance());
chemin = graphe.cheminLePlusCourt(s1, s3);
assertEquals(distance_s1_s3, chemin.distance());
chemin = graphe.cheminLePlusCourt(s1, s4);
assertEquals(4, chemin.distance());
chemin = graphe.cheminLePlusCourt(s2, s3);
assertEquals(distance_s2_s3, chemin.distance());
chemin = graphe.cheminLePlusCourt(s4, s1);
assertEquals(distance_s4_s1, chemin.distance());
}
@Test
public void testVoisinsDeRangs() {
initGlobalGraph();
Set<Sommet> voisins = graphe.voisinsAuRang(s1, 1);
System.out.println("voisins s1 au rang 1: " + voisins);
assertEquals(2, voisins.size());
assertTrue(voisins.contains(s2));
assertTrue(voisins.contains(s3));
voisins = graphe.voisinsAuRang(s1, 2);
System.out.println("voisins s1 au rang 2: " + voisins);
assertEquals(1, voisins.size());
assertTrue(voisins.contains(s4));
voisins = graphe.voisinsAuRang(s2, 1);
System.out.println("voisins s2 au rang 1: " + voisins);
assertEquals(2, voisins.size());
assertTrue(voisins.contains(s1));
assertTrue(voisins.contains(s3));
voisins = graphe.voisinsAuRang(s2, 2);
System.out.println("voisins s2 au rang 2: " + voisins);
assertEquals(1, voisins.size());
assertTrue(voisins.contains(s4));
voisins = graphe.voisinsAuRang(s4, 2);
System.out.println("voisins s4 au rang 2: " + voisins);
assertEquals(2, voisins.size());
assertTrue(voisins.contains(s2));
assertTrue(voisins.contains(s3));
}
@Test
public void testExtraireChemin() {
Chemin<Sommet> cheminComplet = new Chemin<>();
cheminComplet.add(new Arc<Sommet>(s1,s2));
cheminComplet.add(new Arc<Sommet>(s2,s3));
cheminComplet.add(new Arc<Sommet>(s3,s4));
System.out.println("chemin de s1 a s4 " + cheminComplet);
Chemin<Sommet> c= cheminComplet.extraireChemin(s1, s4);
System.out.println("chemin de s1 a s4 apres extraction " + c);
assertEquals(3,c.getArcs().size());
assertEquals(s1,c.getArcs().get(0).origine());
assertEquals(s4,c.getArcs().get(2).destination());
c= cheminComplet.extraireChemin(s1, s3);
System.out.println("chemin de s1 a s3 apres extraction " + c);
assertEquals(2,c.getArcs().size());
assertEquals(s1,c.getArcs().get(0).origine());
assertEquals(s3,c.getArcs().get(1).destination());
c= cheminComplet.extraireChemin(s2, s3);
System.out.println("chemin de s2 a s3 apres extraction " + c);
assertEquals(1,c.getArcs().size());
assertEquals(s2,c.getArcs().get(0).origine());
assertEquals(s3,c.getArcs().get(0).destination());
c= cheminComplet.extraireChemin(s2, s4);
System.out.println("chemin de s2 a s4 apres extraction " + c);
assertEquals(2,c.getArcs().size());
assertEquals(s2,c.getArcs().get(0).origine());
assertEquals(s4,c.getArcs().get(1).destination());
}
}

View File

@@ -0,0 +1,84 @@
package TD6.reseauSocialTestV2;
import static org.junit.Assert.*;
import java.util.Collection;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import TD6.reseauSocial.core.MemberInterface;
import TD6.reseauSocial.core.SocialNetworkInterface;
import TD6.reseauSocial.implementation2020.Member;
import TD6.reseauSocial.implementation2020.SocialNetWorkImpl;
public class FirstTests {
//TODO : reference to be modified according to your implementation
//Member refers to your implementation of MemberInterface
//SocialNetWorkImpl refers to your implementation of SocialNetworkInterface
SocialNetworkInterface<Member> iutRS;
static String nomGeek = "geek01";
@BeforeEach
public void setUp(){
iutRS = new SocialNetWorkImpl("IUT");
}
/*
* utility functions
*/
private Member addMember(String nom, String location, SocialNetworkInterface<Member> nw ) {
Member m = new Member(nom);
m.setLocation(location);
nw.addMember(m);
return m;
}
@Test
public void testInit() {
assertTrue(iutRS != null);
}
/*
Serie of simple tests
*/
@Test
public void testAddAndGetMemberSimple() {
String location = "Nice";
MemberInterface mGeek01 = addMember(nomGeek, location, iutRS);
assertEquals(nomGeek, mGeek01.getName());
assertEquals(location, mGeek01.getLocation());
assertEquals(mGeek01,iutRS.getMember(nomGeek));
}
@Test
public void testAddAndGetTwoMembers() {
MemberInterface mGeek01 = addMember(nomGeek, "Nice", iutRS);
MemberInterface mGeek02 = addMember("ivana","Toulon", iutRS);
assertEquals(nomGeek, mGeek01.getName());
assertEquals("ivana", mGeek02.getName());
assertEquals(mGeek01,iutRS.getMember(nomGeek));
assertEquals(mGeek02,iutRS.getMember("ivana"));
}
@Test
public void testGetMembers() {
MemberInterface mGeek01 = addMember("geek01", "Nice", iutRS);
MemberInterface mGeek02 = addMember("ivana","Toulon", iutRS);
Collection<? extends MemberInterface> membres = iutRS.getMembers();
assertEquals("taille du reseau est bien de 2 membres", 2,membres.size());
assertTrue(membres.contains(mGeek01));
assertTrue(membres.contains(mGeek02));
}
}

View File

@@ -0,0 +1,155 @@
package TD6.reseauSocialTestV2;
import java.util.Set;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import TD6.reseauSocial.core.SocialNetworkInterface;
import TD6.reseauSocial.core.Strength;
import TD6.reseauSocial.implementation2020.Member;
import TD6.reseauSocial.implementation2020.SocialNetWorkImpl;
public class SecondTests {
//For Students => TODO : reference to be modified according to your implementation
//Member refers to your implementation of MemberInterface
//SocialNetWorkImpl refers to your implementation of SocialNetworkInterface
SocialNetworkInterface<Member> iutRS;
@BeforeEach
public void setUp() {
iutRS = new SocialNetWorkImpl("IUT");
}
Member asterix;
Member falbala ;
Member obelix ;
Member panoramix ;
Member abraracourcix ;
/*
* utility functions
*/
private void initGaulois(SocialNetworkInterface<Member> iutRS) {
String location = "Armorique";
asterix = addMember("Asterix",location,iutRS);
falbala = addMember("Falbala",location,iutRS);
obelix = addMember("Obelix",location,iutRS);
panoramix =addMember("Panoramix",location,iutRS);
abraracourcix = addMember("Abraracourcix",location,iutRS);
}
private Member addMember(String nom, String location, SocialNetworkInterface<Member> nw ) {
Member m = new Member(nom);
m.setLocation(location);
nw.addMember(m);
return m;
}
//------------ Construction des relations ------- //
private void buildAsterixNetwork() {
initGaulois(iutRS);
iutRS.relate(Strength.STRONG, asterix, obelix);
iutRS.relate(Strength.HIGH, asterix, panoramix);
iutRS.relate(Strength.STRONG, obelix, asterix);
iutRS.relate(Strength.HIGH, obelix, falbala);
iutRS.relate(Strength.MEDIUM, obelix, panoramix);
iutRS.relate(Strength.LOW, falbala, obelix);
iutRS.relate(Strength.LOW, falbala, asterix);
iutRS.relate(Strength.LOW, panoramix,abraracourcix);
}
// ----------------- Pour compatibilité des codes avec Junit4 sans trop me fatiguer :-)
private static void assertEquals(String commentaire, int valeurAttendue, int valeurObtenue) {
Assertions.assertEquals(valeurAttendue, valeurObtenue, commentaire);
}
private static void assertTrue(String commentaire, boolean value) {
Assertions.assertTrue(value, commentaire);
}
// ---------------- Tests
@Test
public void testInit() {
Assertions.assertTrue(iutRS != null);
initGaulois(iutRS);
Assertions.assertTrue(obelix!= null);
Assertions.assertTrue(asterix!= null);
}
@Test
public void testRelationsAtRankOne() {
buildAsterixNetwork();
//tests au rang 1
Set<Member> membresAmis = iutRS.relatedToRank(asterix, 1);
//System.out.println("Amis de Asterix" + membresAmis);
assertEquals("taille des amis d'Asterix au rang 1 : 2 membres", 2, membresAmis.size());
assertTrue("Asterix est bien ami d'Obelix", membresAmis.contains(obelix));
assertTrue("Asterix est bien ami de Panoramix", membresAmis.contains(panoramix));
membresAmis = iutRS.relatedToRank(panoramix, 1);
//System.out.println("Amis de Panoramix" + membresAmis);
assertEquals("taille des amis de Panoramix au rang 1 : 1 membres", 1, membresAmis.size());
membresAmis = iutRS.relatedToRank(falbala, 1);
assertEquals("taille des amis de Panoramix au rang 1 : 2 membres", 2, membresAmis.size());
}
@Test
public void testRelationsAtRankTwoandMore() {
buildAsterixNetwork();
//tests au rang 2
Set< Member> membresAmis = iutRS.relatedToRank(asterix, 2);
//System.out.println("Amis de Asterix au rang 2" + membresAmis);
assertEquals("taille des amis d'Asterix au rang 2 : 2 membre Falbala et Abraracourcix, les autres le sont deja au rang 1", 2, membresAmis.size());
assertTrue("Asterix est bien ami de falbala au rang 2", membresAmis.contains(falbala));
membresAmis = iutRS.relatedToRank(panoramix, 2);
assertEquals("taille des amis de Panoramix au rang 2 : 0 membres", 0, membresAmis.size());
membresAmis = iutRS.relatedToRank(obelix, 2);
//System.out.println("Amis de Obelix au rang 2" + membresAmis);
assertEquals("taille des amis Obelix au rang 2 : 1 membre", 1, membresAmis.size());
membresAmis = iutRS.relatedToRank(falbala, 2);
assertEquals("taille des amis Falbala au rang 2 : 1 membre", 1, membresAmis.size());
membresAmis = iutRS.relatedToRank(falbala, 3);
assertEquals("taille des amis Falbala au rang 3 : 1 membre", 1, membresAmis.size());
assertTrue("Abraracourcix est bien ami de falbala au rang 3", membresAmis.contains(abraracourcix));
}
@Test
public void testDistances() {
buildAsterixNetwork();
//Calcul des distances
int distance = iutRS.distance(asterix, obelix);
assertEquals("distance entre asterix et obelix", Strength.STRONG.getValue(), distance);
distance = iutRS.distance(asterix, falbala);
assertEquals("distance entre asterix et falbala", Strength.STRONG.getValue() + Strength.HIGH.getValue(), distance);
distance = iutRS.distance(asterix, panoramix);
assertEquals("distance entre asterix et Panoramix", Strength.HIGH.getValue(), distance);
distance = iutRS.distance(falbala, asterix);
assertEquals("distance entre falbala et asterix", Strength.LOW.getValue(), distance);
distance = iutRS.distance(falbala, abraracourcix);
assertEquals("distance entre falbala et Abraracourcix, passe par Asterix", Strength.LOW.getValue()*2 + Strength.HIGH.getValue(), distance);
distance = iutRS.distance(asterix, abraracourcix);
assertEquals("distance entre asterix et Abraracourcix", Strength.HIGH.getValue() + Strength.LOW.getValue(), distance);
}
}

View File

@@ -0,0 +1,172 @@
package TD6.reseauSocialTestV2;
import static org.junit.Assert.*;
import TD6.facebookGhost.FacebookGhostNetwork;
import TD6.facebookGhost.User;
import java.util.Set;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import TD6.reseauSocial.core.SocialNetworkInterface;
import TD6.reseauSocial.implementation2020.Member;
import TD6.reseauSocial.implementation2020.SocialNetWorkImpl;
import TD6.reseauSocial.implementation2020.Spy;
public class ThirdTests{
//TODO : reference to be modified according to your implementation
//Member refers to your implementation of MemberInterface
//SocialNetWorkImpl refers to your implementation of SocialNetworkInterface
SocialNetworkInterface<Member> iutRS;
//Spy snoop = new Spy();
FacebookGhostNetwork fg ;
//------------ Connexions to FG ------- //
private FacebookGhostNetwork getFacebookGhostNetwork() {
return new FacebookGhostNetwork();
}
private void buildGreekmythologieNetwork() {
User zeus = fg.addUser("Zeus","le dieu ...","Olympe");
User alcmene = fg.addUser("Alcmene","la mere d'hercule");
User hercule = fg.addUser("Hercule","le hero");
User admete = fg.addUser ("Admete","l'ami","Grece");
fg.addUser("Hera","la femme de zeus","Olympe");
fg.addFamilyRelation(hercule, zeus);
fg.addFamilyRelation(hercule, alcmene);
fg.addFriendRelation(hercule,admete);
}
@BeforeEach
public void setUp() {
iutRS = new SocialNetWorkImpl("IUT");
fg = getFacebookGhostNetwork();
buildGreekmythologieNetwork();
}
@Test
public void testInit() {
assertTrue(iutRS != null);
assertTrue(fg.getUser("Zeus") != null);
}
@Test
public void testConnexionToFg() {
Member admeteLocal = iutRS.addMember("Admete", fg);
assertEquals("location de Admete",
fg.getUser("Admete").getHometown().getName(),
admeteLocal.getLocation()
);
}
@Test
public void testConnexionToFGInitialisation() {
Member admeteLocal = iutRS.addMember("Admete", fg);
Set<Member> membresAmis = iutRS.relatedToRank(admeteLocal, 1);
assertEquals("taille des amis d'ADMETE au rang 1 : 0 membres", 0, membresAmis.size());
}
@Test
public void testAdapter() {
Member admeteLocal = iutRS.addMember("Admete", fg);
assertEquals("location de Admete",
fg.getUser("Admete").getHometown().getName(),
admeteLocal.getLocation()
);
fg.getUser("Admete").setLocation("mer Egee");
assertEquals("location de Admete",
fg.getUser("Admete").getHometown().getName(),
admeteLocal.getLocation()
);
}
@Test
public void testConnexionToFGWithlinks() {
// Hera (not known as Zeus wife)
Member admete = iutRS.addMember("Admete", fg);
Member zeus = iutRS.addMember("Zeus", fg);
Member hera = iutRS.addMember("Hera", fg);
Member hercule = iutRS.addMember("Hercule", fg);
//Test relations
Set<Member> membresAmis = iutRS.relatedToRank(admete, 1);
assertEquals("taille des amis de Admete au rang 1 : 1 membre Hercule", 1, membresAmis.size());
membresAmis = iutRS.relatedToRank(hera, 1);
//System.out.println("amis Hera au rang 1" + membresAmis);
assertEquals("taille des amis Hera au rang 1 : 1 membres", 0, membresAmis.size());
membresAmis = iutRS.relatedToRank(hercule, 1);
//System.out.println("relations de hercule" + membresAmis);
assertEquals("taille des amis d'Hercule au rang 1 : 2 membres Admete et Zeus: ", 2, membresAmis.size());
assertTrue("Zeus est bien ami de Hercule au rang 1", membresAmis.contains(zeus));
assertTrue("Admete est bien ami de Hercule au rang 1", membresAmis.contains(admete));
int distance = iutRS.distance(hercule, zeus);
assertEquals("distance entre hercule et zeus", 2, distance);
distance = iutRS.distance(hercule, admete);
assertEquals("distance entre hercule et admete", 3, distance);
membresAmis = iutRS.relatedToRank(hercule, 2);
//System.out.println("amis d'Hercule au rang 2" + membresAmis);
assertEquals("taille des amis d'Hercule au rang 2 : 0 membre", 0, membresAmis.size());
membresAmis = iutRS.relatedToRank(admete, 1);
//System.out.println("amis d'ADMETE au rang 1" + membresAmis);
assertEquals("taille des amis d'ADMETE au rang 1 : 1 membres", 1, membresAmis.size());
distance = iutRS.distance(admete, hercule);
assertEquals("distance entre hercule et admete", 3, distance);
}
//------------ Observations : Connexions e FG ------- //
@Test
public void testConnexionToFGAndObserver() {
iutRS.addMember("Zeus", fg);
Member hera = iutRS.addMember("Hera", fg);
Member hercule = iutRS.addMember("Hercule", fg);
Set<Member> membresAmis = iutRS.relatedToRank(hercule, 1);
assertEquals("taille des amis d'Hercule au rang 1 : 1 membre car seul zeus est connu de nous", 1, membresAmis.size());
//si on ajoute un lien dans fg entre Hera et hercule on ne le voit pas.
fg.addFamilyRelation("Zeus", "Hera");
membresAmis = iutRS.relatedToRank(hercule, 1);
assertEquals("taille des amis d'Hercule au rang 1 : 1 membre car one ne voit pas lien avec Hera", 1, membresAmis.size());
assertTrue (iutRS.relatedToRank(hera, 1).size()==0);
//maintenant si lajout de lien se fait dans fg nous les verrons grace à l'observer
//Il faut donc enlever le commentaire ci-dessous
//fg.addPropertyChangeListener(iutRS);
//fg.addPropertyChangeListener(snoop);
//((SocialNetWorkImpl)iutRS).addPropertyChangeListener(snoop);
fg.addFamilyRelation("Zeus", "Hera");
membresAmis = iutRS.relatedToRank(hera, 1);
assertEquals("taille des amis Hera au rang 1 : 1 membres", 1, membresAmis.size());
//Non demande
/* MemberInterface asterix = iutRS.addMember("Asterix",0,"Asterix, le plus intelligent");
fg.addUser("Asterix", "Albert Uderzo, Asterix est le seul anti-heros qui ait jamais autant collectionne les succes et les exploits.");
assertEquals("description de Asterix", asterix.getDescription(), fg.getUser("Asterix").myProfil());
*/
}
}