예제 #1
0
 public void MethodTestCd()
 {
     Directory racine = new Directory("/", null);
     Directory fichier = new Directory("test", racine);
     racine.Fichiers.Add(fichier);
     Assert.AreEqual(fichier, racine.cd("test"));
 }
예제 #2
0
 public void TestChmod3()
 {
     Directory test = new Directory("test", null);
     int newPermission = 3;
     test.chmod(newPermission);
     Assert.AreEqual(3, test.permission);
 }
예제 #3
0
        public override bool mkdir(string nom)
        {
            Directory newDirectory = new Directory(nom, this);
            Fichiers.Add(newDirectory);
            Console.WriteLine("Directory créé");

            return true;
        }
예제 #4
0
 public void GetPath()
 {
     Directory Test = new Directory("Test", RepertoireCourant);
      Directory Test1 = new Directory("Test1", Test);
      Assert.AreEqual("/" + Test.Nom + "/" + Test1.Nom + "/", Test1.GetPath());
 }
예제 #5
0
 public void TestMkdir()
 {
     Directory fichier = new Directory("test", null);
     Assert.IsTrue(fichier.mkdir("test"));
     Assert.IsTrue(fichier.Fichiers.Count == 1);
 }
예제 #6
0
 public void TestGetParent()
 {
     Directory test1 = new Directory("test1", null);
     Directory test2 = new Directory("test2", test1);
     test1.Fichiers.Add(test2);
     Assert.AreEqual(test1,test2.getParent());
 }
예제 #7
0
 public void TestMethodLs()
 {
     Directory Fichier = new Directory("test", null);
     Directory dedans = new Directory("coucou", Fichier);
     Assert.AreEqual(Fichier.Fichiers.Count, 1);
 }
예제 #8
0
 public void GetName()
 {
     Directory Test = new Directory("Test", RepertoireCourant);
     File TestFile = new File("TestFile", Test);
     Assert.AreEqual("TestFile", TestFile.GetName());
 }
예제 #9
0
        static void Main(string[] args)
        {
            Fichier courant = new Directory("/", null);
            string saisie;

            do
            {

                Console.Write( "|"+courant.Nom+"|");
                string argument = null;
                string commande = null;
                string argument2 = null;
                saisie = Console.ReadLine();
                string[] str = saisie.Split(' ');
                if (str.Length == 1) {
                    commande = str[0];
                    argument = null;
                }
                else if (str.Length == 2)
                {

                    commande = str[0];
                    argument = str[1];
                }
                else if (str.Length == 3)
                {
                    commande = str[0];
                    argument = str[1];
                    argument2 = str[2];
                }

                if (courant.isDirectory() == true)
                {
                    Directory courantDir = (Directory)courant;

                    switch (commande)
                    {
                        case "mkdir":
                            courantDir.mkdir(argument);

                            break;

                        case "cd":
                            Fichier cdDir = courantDir.cd(argument);
                            if (cdDir == null || !cdDir.canRead())
                            {
                                Console.WriteLine("Vous ne pouvez pas faire ça");
                            }
                            else
                            {
                                courant = cdDir;
                            }
                            break;

                        case "ls":
                            if (courantDir.canRead())
                            {
                                List<Fichier> liste = courantDir.ls();
                                if (courant.isDirectory() == true)
                                {
                                    foreach (Fichier file in liste)
                                    {
                                        Console.WriteLine(file.Nom);
                                    }
                                }
                                else if (courant.isFile() == true)
                                {
                                    Console.WriteLine("Vous êtes dans un file");
                                }
                            }
                            else {
                                Console.WriteLine("Vous n'avez pas la permission");
                            }
                            break;

                        case "create":
                            courantDir.createNewFile(argument);
                            break;
                        case "parent":
                            courant = courant.getParent();

                            break;
                        case "search":
                            List<Fichier> resultat = courantDir.search(argument);
                            if (resultat != null)
                                {
                                    foreach (Fichier file in resultat)
                                        Console.WriteLine(file.getPath());
                                }
                            else
                                {
                                    Console.WriteLine("Vous n'avez pas les droits de lire dans ce dossier");
                                }
                            break;
                        case "path":
                        string path  = courant.getPath();
                        Console.WriteLine(path);
                            break;
                        case"chmod":
                            int permi = int.Parse(argument);
                            courant.chmod(permi);
                            break;
                         case"rename":
                        courantDir.rename(argument,argument2);
                            break;
                        case"file":
                            if (courant.isFile())
                            {
                                Console.WriteLine("C'est un fichier");
                            }
                            else
                            {
                                Console.WriteLine("Ce n'est pas un fichier");
                            }
                            break;
                        case"directory":
                            if (courant.isDirectory())
                            {
                                Console.WriteLine("C'est un répertoire");
                            }
                            else
                            {
                                Console.WriteLine("Ce n'est pas un répertoire");
                            }
                            break;
                        case"delete":
                            courantDir.delete(argument);
                            break;

                    }
                }

            } while (saisie != "exit");
        }
예제 #10
0
 public void GetRoot()
 {
     Directory Test = new Directory("Test", RepertoireCourant);
     Directory Test2 = new Directory("Test2", Test);
     Directory Test3 = new Directory("Test3", Test2);
     Assert.AreEqual(Test2, Test3.GetRoot());
 }
예제 #11
0
 public void SetUp()
 {
     RepertoireCourant = new Directory("/", null);
     Chemin = new Directory("chemin", RepertoireCourant);
 }
예제 #12
0
 public void TestNotCreateNewFile()
 {
     Directory fichier = new Directory("test", null);
     Assert.IsFalse(fichier.createNewFile("test"));
     Assert.IsFalse(fichier.Fichiers.Count == 1);
 }
예제 #13
0
 public void TestNotDelete()
 {
     Directory test1 = new Directory("test1", null);
     Directory test2 = new Directory("test2", test1);
     test1.Fichiers.Add(test2);
     Assert.IsFalse(test1.delete("test2"));
 }
예제 #14
0
 public void TestNotCanRead()
 {
     Directory test = new Directory("test", null);
     test.permission = 4;
     Assert.IsFalse(test.canRead());
 }
예제 #15
0
 public void TestMethodNotIsDirectory()
 {
     Directory test = new Directory("test", null);
     Assert.IsFalse(test.isDirectory());
 }
예제 #16
0
 public void TestMethodLs()
 {
     Directory test1 = new Directory("test1", null);
     Fichier test2 = new Fichier("test",test1);
     test1.Fichiers.Add(test2);
     Assert.AreEqual(test1.Fichiers, test1.ls());
 }
예제 #17
0
 public void TestMethodIsDirectory()
 {
     Directory test = new Directory("test", null);
     Assert.IsTrue(test.isDirectory());
 }
예제 #18
0
 public void TestGetPath()
 {
     Directory test1 = new Directory("test1", courant);
     Directory test2 = new Directory("test2", test1);
     test1.Fichiers.Add(test2);
     Assert.AreEqual(test1.Nom + "/" + test2.Nom + "/", test2.getPath());
 }
예제 #19
0
 public void NoPermissionsInCd()
 {
     RepertoireCourant.Chmod(0);
      Directory Chemin = new Directory("chemin", RepertoireCourant);
      File destination = RepertoireCourant.Cd("chemin");
      Assert.AreEqual(destination, null);
 }
예제 #20
0
 public void TestRename()
 {
     Directory test1 = new Directory("test1", null);
     Directory test2 = new Directory("test2", test1);
     test1.Fichiers.Add(test2);
     Assert.IsTrue(test1.rename("test2", "test3"));
 }
예제 #21
0
 public void Cd()
 {
     Directory Java = new Directory("Java", RepertoireCourant);
        RepertoireCourant.ListeFiles.Add(Java);
        Assert.AreEqual(Java, RepertoireCourant.Cd(Java.Nom));
 }
예제 #22
0
 public void TestSearch()
 {
     Directory test = new Directory("test", null);
        test.mkdir("test1");
        test.mkdir("test2");
        test.mkdir("test3");
        test.mkdir("test3");
        Assert.AreEqual(2, test.search("test3").Count);
 }
예제 #23
0
 public Fichier(string Nom, Directory Parent)
 {
     this.Nom = Nom;
     this.Parent = Parent;
 }
예제 #24
0
 public void TestCanWrite()
 {
     Directory test = new Directory("test",null);
     test.permission = 2;
     Assert.IsTrue(test.canWrite());
 }
예제 #25
0
 public Directory(string Nom, Directory Parent)
     : base(Nom, Parent)
 {
 }
예제 #26
0
 // Constructeurs
 public Directory(string nom, Directory parent)
     : base(nom,parent)
 {
     this.Nom = nom;
     ListeFiles = new List<File>();
 }
예제 #27
0
 public void MethodTestCd()
 {
     Directory fichier = new Directory("test", null);
     Assert.AreEqual("test", fichier.Nom);
 }
예제 #28
0
 public void TestMethod1()
 {
     Directory fichier = new Directory("test", null);
 }
예제 #29
0
        static void Main(string[] args)
        {
            string utilisateur = "Néo";
            string saisiUtilisateur = "";
            // Initialisation du répertoire par défaut lors du démarrage de l'application
            File RepertoireCourant = new Directory("",null);

            // Affichage du texte lors du démarrage de l'application
            Console.WriteLine("Welcome to FileSystem called XUNIL");
            Console.WriteLine("Write what you want to do when it\'s requested");
            Console.WriteLine("If you want to close CMD window, please write : exit");
            Console.WriteLine("Try to find the easter-egg. It's related to 'Matrix' \n");

            while (saisiUtilisateur != "exit")
            {
                Console.Write(utilisateur +" "+RepertoireCourant.GetPath() + " $ ");
                saisiUtilisateur = Console.ReadLine();
                string[] saisiDecoupe = saisiUtilisateur.Split(' '); // Permet de ranger chaque argument dans une case d'un tableau, permettant notamment de distinguer chaque commande

                // Chaque case fera appel à la commande saisi par l'utilisateur. Si la commande n'existe pas, un message d'erreur apparaitra, sinon la commande sera exécuté.
                switch (saisiDecoupe[0])
                {
                    case "cd":
                        if (saisiDecoupe.Length == 1)
                        {
                            Console.WriteLine("Vous n'avez spécifié aucun fichier ou dossier à  joindre.");
                        }
                        else
                        {
                            File file = RepertoireCourant.Cd(saisiDecoupe[1]);
                            if (file != null)
                            {
                                RepertoireCourant = file;
                            }
                            else
                            {
                                Console.WriteLine("Aucun fichier ou dossier ne porte ce nom.");
                            }
                        }
                        break;

                    case "ls":
                        String liste = "";
                        if (RepertoireCourant.CanRead())
                        {
                            if (RepertoireCourant.IsDirectory())
                            {
                                foreach (File f in ((Directory)RepertoireCourant).Ls())
                                {
                                    liste += f.GetPermissions();
                                    liste += " " + f.Nom + "\n";
                                }
                            }
                            else
                            {
                                liste += RepertoireCourant.GetPermissions();
                                liste += " " + RepertoireCourant.Nom + "\n";
                                Console.WriteLine("C'est un fichier.");
                            }
                        }else
                        {
                            Console.WriteLine("Vous n'avez pas la permission de lire dans le répertoire " + RepertoireCourant.GetPath());
                        }
                        Console.Write(liste);
                        break;

                    case "mkdir":
                        if (saisiDecoupe.Length < 2)
                        {
                            Console.WriteLine("Commande incomplète.");
                        }
                        else
                        {
                            if (RepertoireCourant.CanWrite())
                            {
                                if (saisiDecoupe[1] == string.Empty)
                                {
                                    Console.WriteLine("Vous n'avez spécifié aucun nom de dossier.");
                                }
                                else
                                {
                                    if (RepertoireCourant.IsDirectory())
                                    {
                                        if (!((Directory)RepertoireCourant).Mkdir(saisiDecoupe[1]))
                                        {
                                            Console.WriteLine("Erreur lors de la création du dossier.");
                                        }
                                        else
                                        {
                                            Console.WriteLine("Dossier crée avec succès.");
                                        }
                                    }
                                    else if (RepertoireCourant.IsFile())
                                    {
                                        Console.WriteLine("Vous ne pouvez pas créer de dossier dans un fichier.");
                                    }
                                }
                            }else
                            {
                                Console.WriteLine("Vous n'avez pas la permission d'écrire dans "+ RepertoireCourant.GetPath());
                            }
                        }
                        break;

                    case "path":
                        Console.WriteLine(RepertoireCourant.GetPath());
                        break;

                    case "root":
                        RepertoireCourant = RepertoireCourant.GetRoot();
                        break;

                    case "rename":
                        if (saisiDecoupe.Length < 3)
                        {
                            Console.WriteLine("Il manque un ou plusieurs arguments pour que le renommage s'effectue correctement.");
                        }
                        else
                        {
                            if (RepertoireCourant.CanWrite())
                            {
                                bool renamed = false;
                                foreach (File f in ((Directory)RepertoireCourant).Ls())
                                {
                                    if (f.GetName() == saisiDecoupe[1])
                                    {
                                        renamed = f.RenameTo(saisiDecoupe[2]);
                                        break;
                                    }
                                }
                                if (renamed == false)
                                {
                                    Console.WriteLine("Aucun fichier ou dossier ayant ce nom.");
                                }
                            }
                            else
                            {
                                Console.WriteLine("Vous n'avez pas la permission de renommer " + saisiDecoupe[1] + ".");
                            }

                        }
                        break;

                    case "create":
                        if (saisiDecoupe.Length < 2)
                        {
                            Console.WriteLine("Il manque le nom du fichier que vous voulez créer.");
                        }
                        else
                        {
                            if(RepertoireCourant.CanWrite())
                            {
                                if (!((Directory)RepertoireCourant).createNewFile(saisiDecoupe[1])) // Le if exécute la méthode createNewFile et si la valeur
                                                                                                    // retourné est true; ça crée le fichier sinon ça affiche l'erreur
                                {
                                    Console.WriteLine("Erreur lors de la création du fichier.");
                                }
                                else
                                {
                                    Console.WriteLine("Fichier crée avec succès.");
                                }
                            }else
                            {
                                Console.WriteLine("Vous n'avez pas la permission d'écrire dans " + RepertoireCourant.GetPath());
                            }

                        }
                        break;

                    case "parent":
                        RepertoireCourant = RepertoireCourant.GetParent();
                        break;

                    case "search":
                        if (saisiDecoupe.Length < 2)
                        {
                            Console.WriteLine("Il manque l'argument pour que la commande soit exécuté.");
                        }
                        else
                        {
                            if (RepertoireCourant.CanRead())
                            {
                                if (RepertoireCourant.IsDirectory())
                                {
                                    foreach (File result in ((Directory)RepertoireCourant).Search(saisiDecoupe[1]))
                                    {
                                        Console.WriteLine(result.GetPath());
                                    }
                                }
                                else if (RepertoireCourant.IsFile())
                                {
                                    Console.WriteLine("Vous ne pouvez pas rechercher dans un fichier.");
                                }
                            }
                        }
                        break;

                    case "file":
                        if (RepertoireCourant.IsFile())
                        {
                            Console.WriteLine("C'est un fichier.");
                        }
                        else
                        {
                            Console.WriteLine("Ce n'est pas un fichier.");
                        }
                        break;

                    case "directory":
                        if (RepertoireCourant.IsDirectory())
                        {
                            Console.WriteLine("C'est un dossier.");
                        }
                        else
                        {
                            Console.WriteLine("Ce n'est pas un dossier.");
                        }
                        break;

                    case "name":
                        Console.WriteLine(RepertoireCourant.GetName());
                        break;

                    case "delete":
                        if (saisiDecoupe.Length < 2)
                        {
                            Console.WriteLine("Il n'y pas pas assez d'arguments dans votre commande.");
                        }
                        else
                        {
                            bool deleted = false;
                            deleted = ((Directory)RepertoireCourant).Delete(saisiDecoupe[1]);
                            if (!deleted)
                            {
                                Console.WriteLine("Aucun fichier ou dossier ayant ce nom.");
                            }
                        }
                        break;

                    case "chmod":
                        if (saisiDecoupe.Length < 2 || saisiDecoupe.Length == 1)
                        {
                            Console.WriteLine("Il n'y pas pas assez d'arguments dans votre commande.");
                        }
                        else
                        {

                                RepertoireCourant.Chmod(int.Parse(saisiDecoupe[1]));

                        }
                        break;

                    case "matrix": // Petit easter-egg sympatique :-)
                        int aleatoire;
                        Random r = new Random();
                        Console.WriteLine("Bienvenue dans la matrice de XUNIL. Ceci est un easter-egg totalement inutile et qui bloquera l'éxécutation de l'OS le plus abouti du monde.");
                        for (int i = 5; i >= 0; i--)
                        {
                            Console.Write(i + "\r");
                            System.Threading.Thread.Sleep(1000);
                        }
                        Console.WriteLine("");

                        while (true)
                        {

                            aleatoire = r.Next(0, 2);
                            Console.Write(aleatoire);
                        }

                    default:
                        Console.WriteLine("Votre commande n'est pas reconnu par le système XUNIL.");
                        break;

                }
            }
        }
예제 #30
0
 public File GetParent()
 {
     File parent = null;
     if (this.parent != null)
     {
         parent = this.parent;
     }
     else
     {
         Console.WriteLine("Je suis à la racine et je veux pas exploser.");
         return this;
     }
     return parent;
 }