diff --git a/Sources/Persistance/LoaderStub.cs b/Sources/Persistance/LoaderStub.cs index 6f66884..4eb4067 100644 --- a/Sources/Persistance/LoaderStub.cs +++ b/Sources/Persistance/LoaderStub.cs @@ -19,9 +19,10 @@ namespace Persistance public List loadUsers() ///CHANGER VISIBILITEE, CAR PAS BIEN DE LAISSER A TOUT LE MONDE { Monstre monstre = new Monstre(1, "Poule", "passif", "Les poules sont des créatures passives. Elles fournissent des plumes et des oeufs.En moyenne, une poule laisse tomber un oeuf toutes des 5 à 10 minutes.", new List { "Quand une poule est tuée, il y a une faible chance qu'elle laisse tomber un Å“uf.", "Parfois, les poules apparaissent avec un bébé zombie sur le dos, on l'appelle alors une poule jockey. Il est aussi possible d'avoir un bébé cochon zombie sur son dos, mais seulement par commande." }, new List { "Poule", "Poule jockey", "Poule jockey cochon" }, new ObservableCollection { }); + Monstre mouton = new Monstre(2, "Mouton", "passif", "Les moutons sont des créatures passives. Sa principale caractéristique est qu'il peut fournir de la laine, un matériau qui sert à fabriquer des objets, notamment des lits.", new List { "Avec une cisaille, il est possible de rasé la laine d'un mouton, il se retrouvera sans laine.", "Pour faire repousser la laine d'un mouton, il faut qu'il ait de l'herbe sous ses pattes pour qu'il puisse manger. Une fois manger la laine repousse instantanément.", "Les moutons peuvent avoir toutes les couleurs du jeu grâce à des teintures et des mélanges. Mais les seules couleurs de mouton pouvant apparaître sont le blanc, le gris, le marron, le noir et le rose..", "Le rose est une couleur qui a une chance d'apparaître très faible, tellement faible que la probabilité pour qu'un mouton un bébé et soit rose en même temps est la probabilité la plus petite du jeu." }, new List { "Mouton" }, new ObservableCollection { }); List lu = new List(); - lu.Add(new User("DedeDu42", "dede", "dodo", "mdp", new List { monstre })); - lu.Add(new User("Moi", "Monchanin", "Liam", "feur", new List { monstre })); + lu.Add(new User("DedeDu42", "dede", "dodo", "mdp", new List { monstre, mouton})); + lu.Add(new User("Moi", "Monchanin", "Liam", "feur", new List { monstre, mouton })); lu.Add(new User("Nikoala", "Blondeau", "Nicolas", "niblondeau", new List { new Monstre(2, "Mouton", "passif", "Je suis présent un peu partout, sauf dnas le desert.", diff --git a/Sources/Tests/Conseil_UT.cs b/Sources/Tests/Conseil_UT.cs new file mode 100644 index 0000000..77b14b5 --- /dev/null +++ b/Sources/Tests/Conseil_UT.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Model; + +namespace Tests +{ + public class Conseil_UT + { + User userTest = new User("Moi", "Monchanin", "Liam", "feur", new List { }); + Monstre monstreTest = new Monstre(2, "Mouton", "passif", "Les moutons sont des créatures passives.", new List { "Avec une cisaille, il est possible de rasé la laine d'un mouton"}, new List { "Mouton" }, new ObservableCollection { }); + + [Fact] + public void ConseilConstructorGood() + { + string texte = "Ceci est un conseil."; + + Conseil conseil = new Conseil(userTest, texte, monstreTest); + Assert.Equal(userTest, conseil.Auteur); + Assert.Equal(texte, conseil.Texte); + Assert.Equal(monstreTest, conseil.LeMonstre); + } + + [Fact] + public void ConseilConstructorNullUser() + { + string texte = "Ceci est un conseil."; + + Assert.Throws(() => new Conseil(null, texte, monstreTest)); + } + + [Fact] + public void ConseilConstructorNullMonster() + { + string texte = "Ceci est un conseil."; + + Assert.Throws(() => new Conseil(userTest, texte, null)); + } + + [Fact] + public void ConseilConstructorTextVide() + { + // Arrange + string texte = ""; + + // Act & Assert + Assert.Throws(() => new Conseil(userTest, texte, monstreTest)); + } + } +} diff --git a/Sources/Vues/Collection.xaml b/Sources/Vues/Collection.xaml index dc3289a..4507c38 100644 --- a/Sources/Vues/Collection.xaml +++ b/Sources/Vues/Collection.xaml @@ -7,6 +7,10 @@ + + - + - + diff --git a/Sources/Vues/Collection.xaml.cs b/Sources/Vues/Collection.xaml.cs index 51aaf4d..878b847 100644 --- a/Sources/Vues/Collection.xaml.cs +++ b/Sources/Vues/Collection.xaml.cs @@ -1,6 +1,7 @@ using Model; using System.Collections.ObjectModel; using System.ComponentModel; +using System.Linq; namespace Vues; @@ -14,51 +15,57 @@ public partial class Collection : ContentPage, INotifyPropertyChanged InitializeComponent(); User toto = (Application.Current as App).User; MonstresDejaVu = new ObservableCollection(toto.monstresDejaVu); - + var MnstrTemp = new ObservableCollection { }; + MnstrTemp = new ObservableCollection((Application.Current as App).monsterManager.ListMonsters.Except(MonstresDejaVu)); ListViewMonsters.BindingContext = this; } - - private void UpdateListMobs() + + private void UpdateListMobs(ObservableCollection Monstres) // /!\ Qd on décoche Monstre déjà vu et re coche ils ne veulent pas réapparaître sauf si on clique aussi sur monstre pas vu { - var monstresDejaVu = MnstrTemp.Where(monstre => (Application.Current as App).User.monstresDejaVu.Contains(monstre)).ToList(); - var monstresPasVu = MnstrTemp.Except((Application.Current as App).User.monstresDejaVu).ToList(); - var listMobs = new ObservableCollection(); - listMobs.Clear(); - - + var monstresDejaVu = Monstres.Where(monstre => (Application.Current as App).User.monstresDejaVu.Contains(monstre)).ToList(); + var monstresPasVu = (Application.Current as App).monsterManager.ListMonsters.Except(monstresDejaVu).ToList(); + Monstres.Clear(); if (CheckboxdejaVu.IsChecked && CheckboxpasVu.IsChecked) { - var concatMonstres = monstresDejaVu.Concat(monstresPasVu); - listMobs = new ObservableCollection(concatMonstres); + foreach (var monstre in monstresDejaVu.Concat(monstresPasVu)) + { + Monstres.Add(monstre); + } } - else if (CheckboxdejaVu.IsChecked) + // Si monstres déjà vu checked et monstres pas vu pas checked alors on l'ajoute à la collection et on supprime les monstres pas vu + else if (CheckboxdejaVu.IsChecked && !CheckboxpasVu.IsChecked) { - listMobs = new ObservableCollection(monstresDejaVu); + foreach (var monstre in monstresDejaVu) + { + Monstres.Add(monstre); + } } - else if (CheckboxpasVu.IsChecked) + // Si monstres pas vu checked alors on l'ajoute à la collection + else if (CheckboxpasVu.IsChecked && !CheckboxdejaVu.IsChecked) { - listMobs = new ObservableCollection(monstresPasVu); - } - else - { - listMobs = new ObservableCollection(); + foreach (var monstre in monstresPasVu) + { + if (!monstresDejaVu.Contains(monstre)) + { + Monstres.Add(monstre); + } + } } + } private void CheckedVu(object sender, CheckedChangedEventArgs e) { - UpdateListMobs(); + UpdateListMobs(MonstresDejaVu); } private void CheckedPasVu(object sender, CheckedChangedEventArgs e) { - UpdateListMobs(); + UpdateListMobs(MonstresDejaVu); } - private string imageLinkConverter(string imageLink) + private async void ImageButton_Clicked(object sender, EventArgs e) { - imageLink = String.Concat(imageLink.Where(c => !Char.IsWhiteSpace(c))); - imageLink = "collection" + imageLink.ToLower() + ".png"; - return imageLink; + await Navigation.PopAsync(); } } \ No newline at end of file diff --git a/Sources/Vues/Resources/Images/arrow.png b/Sources/Vues/Resources/Images/arrow.png new file mode 100644 index 0000000..a9e2874 Binary files /dev/null and b/Sources/Vues/Resources/Images/arrow.png differ