public void conversionHeureMartienneTest()
        {
            Calendrier target = new Calendrier();
            target.JourDebutMission = new DateTime(2015, 12, 16, 18, 00, 00);

            DateTime HeureTerre = new DateTime();
            HeureTerre = new DateTime(2015, 12, 18, 18, 00, 00);

            // 2880 = durée mission sur Terre en minute (pour 2 jours)
            // 1480 = durée 1 jour sur Mars
            // 2880 / 1480 = 1,94... jours
            // 2880 mod 1480 = 1400
            // 1400 / 60 = 23,33 heures
            // 1400 mod 60 = 20 minutes
            Dates expected = new Dates(1, 23, 20);

            Dates actual = target.conversionHeureMartienne(HeureTerre);

            Assert.AreEqual(expected.Jour, actual.Jour);
            Assert.AreEqual(expected.Heure, actual.Heure);
            Assert.AreEqual(expected.Minute, actual.Minute);

            // La ligne du dessous (générée par défaut) fait échouer le code à chaque fois si non commentée
            // Assert.Inconclusive("Vérifiez l\'exactitude de cette méthode de test.");
        }
 public void conversionHeureMartienneTest()
 {
     //on créé un calendrier
     initialiseCalendrier();
     DateTime HeureTerre = new DateTime(2015, 12, 10);
     Dates expected = new Dates(34,1,20);
     Dates actual;
     actual = LeCalendrier.conversionHeureMartienne(HeureTerre);
     Assert.AreEqual(expected, actual);
 }
        public Activite(string nom, Dates hdeb,Dates hfin, Coordonnees lieu, string desc, List<Spationaute> listSpatio)
        {
            this.Nom = nom;

            this.HeureDebut = hdeb;
            this.HeureFin = hfin;

            this.Lieu = lieu;
            this.Descritpion = desc;

            this.ListSpationaute = listSpatio;
        }
 public void rechercheLieuExplorationTest()
 {
     initialiseCalendrier();
     Point hg = new Point(0,60);
     Point bd = new Point(50,30);
     Dates dateDeb = new Dates(0);
     Dates dateFin = new Dates(3);
     List<Activite> expected = new List<Activite>();
     expected.Add(LeCalendrier.ListJournees[2].ListActiviteJournee[1]);
     List<Activite> actual;
     actual = LeCalendrier.rechercheLieuExploration(hg, bd, dateDeb, dateFin);
     //Assert.AreEqual(expected, actual);
     CollectionAssert.AreEqual(expected, actual);
 }
 public void rechercheSortiesTest()
 {
     initialiseCalendrier();
     Dates dateDeb = new Dates();
     Dates dateFin = new Dates(7);
     List<Activite> expected = new List<Activite>();
     expected.Add(LeCalendrier.ListJournees[2].ListActiviteJournee[1]);
     expected.Add(LeCalendrier.ListJournees[5].ListActiviteJournee[3]);
     List<Activite> actual;
     actual = LeCalendrier.rechercheSorties(dateDeb, dateFin);
     //Assert.AreEqual(expected, actual);
     CollectionAssert.AreEqual(expected, actual);
 }
 //converti 2 int en dates.
 private Tuple<Dates, Dates> int2Dates(int HeureDeb, int HeureFin)
 {
     Dates dateDeb = new Dates(this.NumJour, HeureDeb, 0);
     Dates dateFin;
     if (HeureFin == 24) dateFin = new Dates(this.NumJour, HeureFin, 40);
     else dateFin = new Dates(this.NumJour, HeureFin, 0);
     return Tuple.Create(dateDeb, dateFin);
 }
 internal List<Activite> rechercheSorties(Dates HeureDeb, Dates HeureFin)
 {
     List<Activite> activitesDehors = new List<Activite>();
     foreach (Activite act in ListActiviteJournee)
     {
         if (act.Lieu.Position.X != 0 || act.Lieu.Position.Y != 0) activitesDehors.Add(act);
     }
     return activitesDehors;
 }
 /*renvoie la liste des activités dans la plage horaire donnée par les deux dates martiennes
 * passées en argument. Cette méthode est appelée par la méthode Calendrier.selectionPeriode*/
 public List<Activite> selectionPeriode(Dates HeureDeb, Dates HeureFin)
 {
     List<Activite> lst_periode = new List<Activite>();
     foreach (Activite uneActivite in ListActiviteJournee)
     {
         if (uneActivite.HeureFin.Heure > HeureDeb.Heure || uneActivite.HeureDebut.Heure < HeureFin.Heure)
         {
             lst_periode.Add(uneActivite);
         }
     }
     return lst_periode;
 }
 public List<Activite> rechercheNomActivite(string mot, Dates dateDeb, Dates dateFin)
 {
     List<Activite> listPeriode = selectionPeriode(dateDeb, dateFin);
     List<Activite> listResult = listPeriode.FindAll(
     delegate(Activite act)
     {
         return (act.Nom == mot);
     }
     );
     return listResult;
 }
 // hg : point en haut à gauche du rectangle dans lequel on veut chercher
 // bd : point en bas à droite du rectangle dans lequel on veut chercher
 public List<Activite> rechercheLieuExploration(Point hg, Point bd, Dates HeureDeb, Dates HeureFin)
 {
     List<Activite> listPeriode = selectionPeriode(HeureDeb, HeureFin);
     List<Activite> listResult = listPeriode.FindAll(
     delegate(Activite act)
     {
         return (act.Lieu.Position.X >= hg.X && act.Lieu.Position.X <= bd.X && act.Lieu.Position.Y <= hg.Y && act.Lieu.Position.Y >= bd.Y);
     }
     );
     return listResult;
 }
 /*Renvoie la liste des activités dont la description contient "mot" dans la plage horaire sélectionnée.
 * Elle est appelée par la méthode rechercheDescActivitePeriode de calendrier. */
 public List<Activite> rechercheDescActivite(string mot, Dates dateDeb, Dates dateFin)
 {
     List<Activite> listPeriode = selectionPeriode(dateDeb, dateFin);
     List<Activite> listResult = listPeriode.FindAll(
     delegate(Activite act)
     {
         return (act.Descritpion.Contains(mot));
     }
     );
     return listResult;
 }
        private void btn_confirmer_Click(object sender, EventArgs e)
        {
            bool PossibleDeChanger = true;

            Dates datesDebut = null;
            Dates datesFin = null;

            // vérifie qu'on renseigne bien des horaires
            if (H_debut.Text == "" || M_debut.Text == "" || H_fin.Text == "" || M_fin.Text == "")
            {
                PossibleDeChanger = false;
            }
            else
            {
                datesDebut = new Dates(jourSelec.NumJour, int.Parse(H_debut.Text), int.Parse(M_debut.Text));
                datesFin = new Dates(jourSelec.NumJour, int.Parse(H_fin.Text), int.Parse(M_fin.Text));
            }

            // vérifie qu'on renseigne bien des coordonnées
            double cooX, cooY;
            if (!testCoord(textBoxX.Text, out cooX, -1000, 1000))
                PossibleDeChanger = false;
            if (!testCoord(textBoxY.Text, out cooY, -1000, 1000))
                PossibleDeChanger = false;

            Coordonnees coo = new Coordonnees(nom_position.Text, new Point((int)cooX, (int)cooY));
            string nomActiTmp = "";
            if (treeView1.SelectedNode == null && actiActuelle == null) // vérifie qu'on sélectionne bien un type d'activité
            {
                PossibleDeChanger = false;
            }
            else if (treeView1.SelectedNode == null) // par défaut, mais le type de l'activité sélectionné si c'est un chargement d'activité
            {
                nomActiTmp = actiActuelle.Nom;
            }
            else
            {
                nomActiTmp = treeView1.SelectedNode.Text; // autrement, met ls noeud sélectionné par l'utilisateur
            }

            Activite tmpActi = new Activite(nomActiTmp, datesDebut, datesFin, coo, description.Text, this._listSpatio); //attention a l'assignation des Spationautes
            // Vérification des données
            if (!verifieDonnees(jourSelec.ListActiviteJournee, tmpActi))
                PossibleDeChanger = false;

            // Vérification du treeView
            if (!testTreeView())
                PossibleDeChanger = false;

            if (PossibleDeChanger) // ajoute ou modifie l'activité
            {
                jourSelec.ListActiviteJournee.Remove(actiActuelle);
                jourSelec.ListActiviteJournee.Add(tmpActi);
                actiActuelle = tmpActi;
                this.Close();
            }
            else // si un des critères n'est pas vérifié, un pop-up annonce la modification ou création impossible et renvoie au form de modification
            {
                PopUp_ModifImpossible popup = new PopUp_ModifImpossible();
                DialogResult dialogresult = popup.ShowDialog();
                popup.Dispose();
            }
        }
 // renvoie toutes les journees comprises entre les deux dates passées en argument
 public List<Journee> selectionPeriodeJour(Dates dateDeb, Dates dateFin)
 {
     List<Journee> lst_periode = new List<Journee>();
     foreach (Journee uneJournee in ListJournees)
     {
         if (uneJournee.NumJour > dateDeb.Jour || uneJournee.NumJour < dateFin.Jour)
         {
             lst_periode.Add(uneJournee);
         }
     }
     return lst_periode;
 }
 /* renvoie une liste de toutes les activités en exterieur comprises entre deux dates*/
 public List<Activite> rechercheSorties(Dates dateDeb, Dates dateFin)
 {
     List<Activite> activitesDehors = new List<Activite>();
     List<Journee> listPeriode = selectionPeriodeJour(dateDeb, dateFin);
     List<Activite> listSortiesJour;
     foreach (Journee jour in listPeriode)
     {
         listSortiesJour = jour.rechercheSorties(dateDeb, dateFin);
         if (listSortiesJour.Count() != 0) activitesDehors.AddRange(listSortiesJour);
     }
     return activitesDehors;
 }
 // converti une date terrestre en une date martienndu calendrier de la mission martienne
 public Dates conversionHeureMartienne(DateTime HeureTerre)
 {
     TimeSpan DureeMissionT = HeureTerre - JourDebutMission;
     int DureeMissionMin = (DureeMissionT.Days * 24 + DureeMissionT.Hours) * 60 + DureeMissionT.Minutes;
     int minuteM = DureeMissionMin % (60 * 24 + 40) % 60;
     int heureM = DureeMissionMin % (60 * 24 + 40) / 60;
     int joursM = DureeMissionMin / (24 * 60 + 40);
     Dates DateM = new Dates(joursM, heureM, minuteM);
     return DateM;
 }