private void CompositeStart(object sender, RoutedEventArgs e)
        {
            Component fileSystem = new Directory("Файловая система");
            // определяем новый диск
            Component diskC = new Directory("Диск С");
            // новые файлы
            Component pngFile  = new File("12345.png");
            Component docxFile = new File("Document.docx");

            // добавляем файлы на диск С
            diskC.Add(pngFile);
            diskC.Add(docxFile);
            // добавляем диск С в файловую систему
            fileSystem.Add(diskC);
            // выводим все данные
            MessageBox.Show(fileSystem.Print());

            Console.WriteLine();
            // удаляем с диска С файл
            diskC.Remove(pngFile);
            // создаем новую папку
            Component docsFolder = new Directory("Мои Документы");
            // добавляем в нее файлы
            Component txtFile = new File("readme.txt");
            Component csFile  = new File("Program.cs");

            docsFolder.Add(txtFile);
            docsFolder.Add(csFile);
            diskC.Add(docsFolder);

            MessageBox.Show(fileSystem.Print());
        }
Exemplo n.º 2
0
        public void Implementation()
        {
            Component fileSystem = new Directory("Файловая система");
            // определяем новый диск
            Component diskC = new Directory("Диск С");
            // новые файлы
            Component pngFile  = new File("12345.png");
            Component docxFile = new File("Document.docx");

            // добавляем файлы на диск С
            diskC.Add(pngFile);
            diskC.Add(docxFile);
            // добавляем диск С в файловую систему
            fileSystem.Add(diskC);
            // выводим все данные
            fileSystem.Print();
            Console.WriteLine();
            // удаляем с диска С файл
            diskC.Remove(pngFile);
            // создаем новую папку
            Component docsFolder = new Directory("Мои Документы");
            // добавляем в нее файлы
            Component txtFile = new File("readme.txt");
            Component csFile  = new File("Program.cs");

            docsFolder.Add(txtFile);
            docsFolder.Add(csFile);
            diskC.Add(docsFolder);

            fileSystem.Print();
        }
Exemplo n.º 3
0
        ///<summary>
        /// Sets up a directory structure as follows:
        /// C:\
        /// |---FileInRoot1 ("an entry")
        /// |---FileInRoot2 ("a long entry in a file")
        /// |---subDir1
        /// |   |---File1InDir1 (empty)
        /// |   |---File2InDir1 (empty)
        /// |---subdir2
        /// </summary>
        public void CreateTestFileStructure()
        {
            drive       = new Drive("C");
            rootDir     = drive.RootDirectory;
            fileInRoot1 = new File("FileInRoot1", "an entry");
            rootDir.Add(fileInRoot1);
            fileInRoot2 = new File("FileInRoot2", "a long entry in a file");
            rootDir.Add(fileInRoot2);

            subDir1 = new Directory("subDir1");
            rootDir.Add(subDir1);
            file1InDir1 = new File("File1InDir1", "");
            subDir1.Add(file1InDir1);
            file2InDir1 = new File("File2InDir1", "");
            subDir1.Add(file2InDir1);

            subDir2 = new Directory("subDir2");
            rootDir.Add(subDir2);

            commandInvoker = new CommandInvoker();
            testOutput     = new TestOutput();

            numbersOfDirectoriesBeforeTest = drive.RootDirectory.GetNumberOfContainedDirectories();
            numbersOfFilesBeforeTest       = drive.RootDirectory.GetNumberOfContainedFiles();
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            var dir = new Directory("Root");

            var dir1 = new Directory("Main 1");
            var dir2 = new Directory("Main 2");
            var dir3 = new Directory("Main 3");

            var dir11 = new Directory("Child 1_1");
            var dir12 = new Directory("Child 1_2");
            var dir21 = new Directory("Child 2_1");

            var dir211 = new Directory("Last 2_1_1");
            var dir212 = new Directory("Last 2_1_2");

            dir1.Add(dir11);
            dir1.Add(dir12);
            dir2.Add(dir21);
            dir21.Add(dir211);
            dir21.Add(dir212);
            dir.Add(dir1);
            dir.Add(dir2);
            dir.Add(dir3);
            var path = dir212.GetPath();

            Console.Write(path);
            Console.ReadKey();
        }
Exemplo n.º 5
0
        private void ButtonToolNewFile(object sender, RoutedEventArgs e)
        {
            String file    = Utils.GetLegalNewName("新建文本文件", currentDir);
            var    newFile = new File(file, currentDir);

            currentDir.Add(newFile);
        }
Exemplo n.º 6
0
        public void Visitor()
        {
            var rootDir = new Directory {
                Name = "root"
            };

            rootDir.Add(new File {
                Name = "file.name", Size = 3000
            });
            rootDir.Add(new File {
                Name = "file.hello", Size = 3000
            });
            rootDir.Add(new File {
                Name = "file.test", Size = 3000
            });

            var testDir = new Directory {
                Name = "test"
            };

            rootDir.Add(testDir);
            testDir.Add(new File {
                Name = "this_is_target_place"
            });

            var visitor = new ListVisitor(_outputHelper.WriteLine);

            rootDir.Accept(visitor);
        }
        // Client
        public static void Start()
        {
            Component fileSystem = new Directory("File System");
            Component diskC      = new Directory("Disc C");
            Component pngFile    = new File("12345.png");
            Component docxFile   = new File("Document.docx");

            diskC.Add(pngFile);
            diskC.Add(docxFile);

            fileSystem.Add(diskC);
            fileSystem.Print();

            Console.WriteLine();

            diskC.Remove(pngFile);

            Component docsFolder = new Directory("My Documents");
            Component txtFile    = new File("readme.txt");
            Component csFile     = new File("Program.cs");

            docsFolder.Add(txtFile);
            docsFolder.Add(csFile);

            diskC.Add(docsFolder);

            fileSystem.Print();
        }
Exemplo n.º 8
0
 public void setUp()
 {
     rootDir = new Directory("root");
     subDir1 = new Directory("subDir1");
     rootDir.Add(subDir1);
     subDir2 = new Directory("subDir2");
     rootDir.Add(subDir2);
 }
Exemplo n.º 9
0
 public void setUp()
 {
     this.rootDir = new Directory("root");
     this.subDir1 = new Directory("subDir1");
     rootDir.Add(this.subDir1);
     this.subDir2 = new Directory("subDir2");
     rootDir.Add(this.subDir2);
     this.file1InSubDir1 = new File("file1InSubDir1", "content1");
     subDir1.Add(this.file1InSubDir1);
     this.file2InSubDir1 = new File("file2InSubDir1", "content2");
     subDir1.Add(this.file2InSubDir1);
 }
Exemplo n.º 10
0
        public void SizeAddTest()
        {
            Component diskC   = new Directory("Диск С", 0);
            Component mkvFile = new File("Видео.mkv", 5270);
            Component exeFile = new File("Program.exe", 2.08);

            diskC.Add(mkvFile);
            diskC.Add(exeFile);
            double expected = 5272.08;
            double actual   = diskC.SumSize();

            Assert.AreEqual(expected, actual);
        }
Exemplo n.º 11
0
    public void Execute()
    {
        Directory direc = new Directory("/");

        direc.Add(new File("sample.txt"));
        direc.Add(new File("another.txt"));
        Directory subDir = new Directory("samples/");

        direc.Add(subDir);
        subDir.Add(new File("text.xml"));

        direc.DumpContents();
    }
Exemplo n.º 12
0
 public void AddItem()
 {
     if (Validator.Validate(Item, true))
     {
         Directory.Add(nameof(AddItem), Item);
     }
 }
Exemplo n.º 13
0
        public void InitiallizeVFS()
        {
            recorder = new List <Directory>();
            if (System.IO.File.Exists("./vfs.bin"))
            {
                Utils.DeSerializeNow();
            }
            else
            {
                for (int i = 0; i < Configs.GROUPS; i++)
                {
                    VFS.BLOCK_GROUPS[i] = new BlockGroup(i);
                }

                VFS.ROOT_DIR = new Directory("/", null);


                var bootDir = new Directory("Boot", VFS.ROOT_DIR);

                var userDir = new Directory("User", VFS.ROOT_DIR);

                VFS.ROOT_DIR.Add(bootDir);

                VFS.ROOT_DIR.Add(userDir);

                var test = new File("test", userDir);
                userDir.Add(test);
            }
            currentDir = VFS.ROOT_DIR;
            recorder.Add(currentDir);
            listView.ItemsSource = VFS.ROOT_DIR.directoryData;
            url.Text             = currentDir.GetPath();
        }
Exemplo n.º 14
0
        public override void Run()
        {
            var discC   = new Directory("Disc C");
            var folder1 = new Directory("Folder 1");

            var filePdf = new File("pdfFile.pdf");
            var fileJpg = new File("jpgFile.pdf");
            var fileBmp = new File("bmpFile.pdf");

            folder1.Add(fileBmp);
            discC.Add(folder1);
            discC.Add(filePdf);
            discC.Add(fileJpg);

            discC.PrintInfo();
        }
Exemplo n.º 15
0
        /// <summary>
        /// Main class
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //Create the structure
            Directory compositeTutorialDirectory = new Directory("CompositeTutorial");

            Directory componentsDirectory = new Directory("ComponentsDirectory");

            componentsDirectory.Add(new File("FileSystemItem.cs", 30));
            componentsDirectory.Add(new File("File.cs", 10));
            componentsDirectory.Add(new File("Directory.cs", 10));

            compositeTutorialDirectory.Add(componentsDirectory);
            compositeTutorialDirectory.Add(new File("Program.cs", 50));

            //Get size
            Console.WriteLine(componentsDirectory.GetSize());
        }
Exemplo n.º 16
0
        private static void Composite()
        {
            var drive = new Drive("Drive");
            var a     = new Directory("A");
            var b     = new Directory("B");
            var c     = new Directory("C");
            var d     = new Directory("D");

            a.Add(new File("A1"));
            a.Add(new File("A2"));
            b.Add(new File("B1"));
            c.Add(b);
            d.Add(c);
            d.Add(a);
            drive.Add(d);
            drive.Display();
        }
        public IDirectory CreateMetaDirectory(IDirectory parentDirectory, IDirectory directory)
        {
            var newDirectory = new Directory(parentDirectory, directory.Name);

            foreach (var dir in directory.Directories)
            {
                newDirectory.Add(d => CreateMetaDirectory(d, dir));
            }

            foreach (var file in directory.Files)
            {
                newDirectory.Add(d => FilePropertiesFile.ForFile(d, file));
            }
            
            newDirectory.Add(d => DirectoryPropertiesFile.ForDirectory(d, directory));
            
            return newDirectory;
        }
Exemplo n.º 18
0
            ///-----------------------------------------------------------------
            public void AfterDeserialize(Directory parent)
            {
                if (directories == null)
                {
                    directories = new List <Directory>();
                }

                parent.Add(this);
            }
Exemplo n.º 19
0
        public virtual void setUp()
        {
            drive       = new Drive("C");
            rootDir     = drive.RootDirectory;
            fileInRoot1 = new File("FileInRoot1", "");
            rootDir.Add(fileInRoot1);
            fileInRoot2 = new File("FileInRoot2", "");
            rootDir.Add(fileInRoot2);

            subDir1 = new Directory("subDir1");
            rootDir.Add(subDir1);
            file1InDir1 = new File("File1InDir1", "");
            subDir1.Add(file1InDir1);
            file2InDir1 = new File("File2InDir1", "");
            subDir1.Add(file2InDir1);

            subDir2 = new Directory("subDir2");
            rootDir.Add(subDir2);
        }
Exemplo n.º 20
0
        public void ContextTest()
        {
            var rootDir = new Directory {
                Name = "root"
            };

            rootDir.Add(new File("name", "hello"));
            rootDir.Add(new File("name", "world"));
            rootDir.Add(new File("name", "design"));

            var testDir = new Directory {
                Name = "test"
            };

            rootDir.Add(testDir);
            testDir.Add(new File("name", "pattern"));

            rootDir.OutputList(_outputHelper.WriteLine);
        }
Exemplo n.º 21
0
        static public void Run()
        {
            Console.WriteLine("------------Composite------------");
            Directory documents = new Directory("Documents");
            Directory video     = new Directory("Video");
            Directory images    = new Directory("Images");

            documents.Add(video);
            documents.Add(images);
            File videoOne = new File("video one.mkv");
            File videoTwo = new File("video two.mkv");
            File image    = new File("image.jpg");

            video.Add(videoOne);
            video.Add(videoTwo);
            images.Add(image);

            documents.Display();
        }
Exemplo n.º 22
0
        public override void Execute(IOutputter outputter)
        {
            //creates some test dirs

            Drive.CurrentDirectory.Add(new File("File1InRoot", "an entry"));
            Drive.CurrentDirectory.Add(new File("File2InRoot", "a long entry in a file"));

            var subDir1 = new Directory("subDir1");

            Drive.CurrentDirectory.Add(subDir1);

            subDir1.Add(new File("File1InDir1", ""));
            subDir1.Add(new File("File2InDir1", ""));

            var subDir2 = new Directory("subDir2");

            Drive.CurrentDirectory.Add(subDir2);

            subDir2.Add(new Directory("subSubDir3"));
        }
Exemplo n.º 23
0
        public void FileAddTest()
        {
            Directory directory = new Directory(" ", 0);
            Component diskC     = new Directory("Диск С", 0);
            Component mkvFile   = new File("Видео.mkv", 5270);

            diskC.Add(mkvFile);
            int expected = 0;
            int actual   = directory.components.Count;

            Assert.AreEqual(expected, actual);
        }
Exemplo n.º 24
0
        public void DirectoryAddTest()
        {
            Directory directory   = new Directory(" ", 0);
            Component diskC       = new Directory("Диск С", 0);
            Component myDocuments = new Directory("Мои документы", 0);

            diskC.Add(myDocuments);
            int expected = 0;
            int actual   = directory.components.Count;

            Assert.AreEqual(expected, actual);
        }
        IDirectory Convert(IDirectory newParent, IDirectory toConvert)
        {            
            // determine name of new directory
            var newDirectoryName = toConvert.Name;
            foreach (var file in toConvert.Files)
            {
                var name = GetDirectoryNameDynamic(file);
                if (name != null)
                {
                    newDirectoryName = name;
                    break;
                }
            }
           
            var newDirectory = new Directory(newParent, newDirectoryName);            

            foreach (var childDirectory in toConvert.Directories)
            {
                var newChildDirectory = (IDirectory) ConvertDynamic(newDirectory, childDirectory);
                if (newChildDirectory != null)
                {
                    newDirectory.Add(_ => newChildDirectory);
                }

                
            }

            foreach (var file in toConvert.Files)
            {
                var newFile = (IFile) ConvertDynamic(newDirectory, file);
                if (newFile != null)
                {
                    newDirectory.Add(_ => newFile);
                }
            }


            return newDirectory;
        }
Exemplo n.º 26
0
    public static void Main(string[] args)
    {
        try
        {
            Console.WriteLine("Making root entries....");
            Directory rootDir = new Directory("root");
            Directory binDir  = new Directory("bin");
            Directory tmpDir  = new Directory("tmp");
            Directory usrDir  = new Directory("usr");

            rootDir.Add(binDir);
            rootDir.Add(tmpDir);
            rootDir.Add(usrDir);

            binDir.Add(new File("vi", 10000));
            binDir.Add(new File("latex", 20000));

            rootDir.Accept(new ListVisitor());

            Console.WriteLine("");
            Console.WriteLine("Making user entries....");
            Directory andy = new Directory("andy");
            Directory bob  = new Directory("bob");

            usrDir.Add(andy);
            andy.Add(new File("diary.html", 100));

            usrDir.Add(bob);
            bob.Add(new File("memo.tex", 300));
            bob.Add(new File("game.doc", 400));

            rootDir.Accept(new ListVisitor());
        }
        catch (FileTreatmentException e)
        {
            Console.WriteLine(e.StackTrace);
        }
    }
Exemplo n.º 27
0
        public override IDirectory Convert(IDirectory newParent, IDirectory toConvert)
        {
            var newDirectory = new Directory(newParent, toConvert.Name);

            foreach (var subDirectory in toConvert.Directories)
            {
                var newSubDirectory = (IDirectory) ConvertDynamic(newDirectory, subDirectory);
                if (newSubDirectory != null)
                {
                    newDirectory.Add(_ => newSubDirectory);
                }
            }

            foreach (var file in toConvert.Files)
            {
                var newFile = (IFile) ConvertDynamic(newDirectory, file);
                if (newFile != null)
                {
                    newDirectory.Add(_ => newFile);
                }
            }

            return newDirectory;
        }
        public static GitBasedMultiFileSystemSnapshot Create(Repository repository, BranchName branchName, IHistoryService historyService)
        {
            var directoryCreator = new LocalItemCreator();            

            var branch = repository.GetBranch(branchName);

            string commitId;
            using (var workingRepository = new TemporaryWorkingDirectory(repository.Info.Path, branch.FriendlyName))
            {

                var snapshotDirectory = new Directory(null, s_SnapshotDirectoryName);
                foreach (var fileSystemHistory in historyService.Items)
                {
                    var fileName = fileSystemHistory.Name + s_FileNameSuffix;
                    var content = fileSystemHistory.LatestFileSystemSnapshot?.Id ?? "";
                    snapshotDirectory.Add(d => new TextFile(d, fileName, content));
                }
                
                var snapshotDirectoryPath = Path.Combine(workingRepository.Location, s_SnapshotDirectoryName);
                directoryCreator.CreateDirectoryInPlace(snapshotDirectory, snapshotDirectoryPath, true);

                if (workingRepository.HasChanges)
                {
                    try
                    {
                        commitId = workingRepository.Commit("Created multi-filesystem snapshot");
                        workingRepository.Push();
                    }
                    catch (EmptyCommitException)
                    {
                        // no changes after all (HasChanges does not seem to be a 100% accurate)
                        commitId = repository.GetBranch(branchName).Tip.Sha;
                    }

                }
                else
                {
                    commitId = repository.GetBranch(branchName).Tip.Sha;
                }
            }

            var commit = repository.Lookup<Commit>(commitId);
            return IsSnapshot(commit) ? new GitBasedMultiFileSystemSnapshot(commit, historyService) : null;
        }
Exemplo n.º 29
0
 static void Main(string[] args)
 {
     SortedDictionary<string, Directory> _directory = new SortedDictionary<string, Directory>();
     string key, adress, Email;
     int numbr;
 start_again:
     for (int i = 0; i < 2; i++)
     {
         Console.WriteLine("enter name to be added in the directory");
         key = Console.ReadLine();
         Console.WriteLine("enter number to be added in the directory");
         numbr = Convert.ToInt32(Console.ReadLine());
         Console.WriteLine("enter address to be added in the directory");
         adress = Console.ReadLine();
         Console.WriteLine("enter your email-id to be added in the directory");
         Email = Console.ReadLine();
         
         Directory dir = new Directory();
         dir.Add(Email, adress);
         _directory.Add(key, dir);
     }
     Console.WriteLine("do you wish to continue-y/n?");
     char c = Convert.ToChar(Console.ReadLine());
     if (c == 'y')
     {
         Console.WriteLine("you said yes");
         goto start_again;
     }
     else
     {
         Console.WriteLine("no more entries can be added");
         Console.WriteLine("Name         Number          adress            email");
         foreach (KeyValuePair<string, Directory> d in _directory)
         {
             Console.WriteLine(string.Format("{0}, {1}, {2}", d.Key, d.Value.Addresses.First(), d.Value.EmailAddresses.First()));
         }
     }
     Console.ReadLine();
 }
Exemplo n.º 30
0
        static void Main(string[] args)
        {
            Console.WriteLine("1-decorator,2-adapter,3-composite");
            int number = 1;

            while (number != 0)
            {
                Console.WriteLine("enter pattern number");
                number = Convert.ToInt32(Console.ReadLine());
                switch (number)
                {
                case 1:
                    Console.WriteLine("enter pizza number");
                    Console.WriteLine("1-итальянская пицца с томатами,2- итальянская пиццы с сыром,3-итальянская пиццы с томатами и сыром");
                    int number1 = 1;
                    if (number1 != 0)
                    {
                        number1 = Convert.ToInt32(Console.ReadLine());
                        switch (number1)
                        {
                        case 1:
                            Console.WriteLine("итальянская пицца с томатами");
                            Pizza pizza1 = new ItalianPizza();
                            pizza1 = new TomatoPizza(pizza1);
                            Console.WriteLine("Название: {0}", pizza1.Name);
                            Console.WriteLine("Цена: {0}", pizza1.GetCost());
                            break;

                        case 2:
                            Console.WriteLine(" итальянская пиццы с сыром");
                            Pizza pizza2 = new ItalianPizza();
                            pizza2 = new CheesePizza(pizza2);
                            Console.WriteLine("Название: {0}", pizza2.Name);
                            Console.WriteLine("Цена: {0}", pizza2.GetCost());
                            break;

                        case 3:
                            Console.WriteLine("итальянская пиццы с томатами и сыром");
                            Pizza pizza3 = new ItalianPizza();
                            pizza3 = new TomatoPizza(pizza3);
                            pizza3 = new CheesePizza(pizza3);
                            Console.WriteLine("Название: {0}", pizza3.Name);
                            Console.WriteLine("Цена: {0}", pizza3.GetCost());
                            break;

                        default:
                            Console.WriteLine("error");
                            break;
                        }
                    }

                    break;

                case 2:
                    // путешественник
                    Driver driver = new Driver();
                    // машина
                    Auto auto = new Auto();
                    // отправляемся в путешествие
                    driver.Travel(auto);
                    // встретились пески, надо использовать верблюда
                    Camel camel = new Camel();
                    // используем адаптер
                    ITransport camelTransport = new CamelToTransportAdapter(camel);
                    // продолжаем путь по пескам пустыни
                    driver.Travel(camelTransport);
                    break;

                case 3:
                    Component fileSystem = new Directory("Файловая система");
                    // определяем новый диск
                    Component diskC = new Directory("Диск С");
                    // новые файлы
                    Component pngFile  = new File("12345.png");
                    Component docxFile = new File("Document.docx");
                    // добавляем файлы на диск С
                    diskC.Add(pngFile);
                    diskC.Add(docxFile);
                    // добавляем диск С в файловую систему
                    fileSystem.Add(diskC);
                    // выводим все данные
                    fileSystem.Print();
                    Console.WriteLine();
                    // удаляем с диска С файл
                    diskC.Remove(pngFile);
                    // создаем новую папку
                    Component docsFolder = new Directory("Мои Документы");
                    // добавляем в нее файлы
                    Component txtFile = new File("readme.txt");
                    Component csFile  = new File("Program.cs");
                    docsFolder.Add(txtFile);
                    docsFolder.Add(csFile);
                    diskC.Add(docsFolder);

                    fileSystem.Print();

                    break;

                default:
                    Console.WriteLine("error");
                    break;
                }
                number = 1;
            }
        }
Exemplo n.º 31
0
        public void BasicComposite()
        {
            Console.WriteLine("Composite Pattern Basic!!!");

            Directory root   = new Directory("Root");
            Directory cdrive = new Directory("C:");
            Directory ddrive = new Directory("D:");

            root.Add(cdrive);
            root.Add(ddrive);

            File cfile1 = new File("cfile1", 100);
            File cfile2 = new File("cfile2", 50);
            File cfile3 = new File("cfile3", 10);

            cdrive.Add(cfile1);
            cdrive.Add(cfile2);
            cdrive.Add(cfile3);
            File dfile1 = new File("dfile1", 110);
            File dfile2 = new File("dfile2", 70);
            File dfile3 = new File("dfile3", 150);

            ddrive.Add(dfile1);
            ddrive.Add(dfile2);
            ddrive.Add(dfile3);

            Directory cdriveFolder1 = new Directory("cdriveFolder1");
            Directory cdriveFolder2 = new Directory("cdriveFolder2");

            cdrive.Add(cdriveFolder1);
            cdrive.Add(cdriveFolder2);

            Directory ddriveFolder1 = new Directory("ddriveFolder1");
            Directory ddriveFolder2 = new Directory("ddriveFolder2");

            ddrive.Add(ddriveFolder1);
            ddrive.Add(ddriveFolder2);

            File cdriveFolder1file1 = new File("cdriveFolder1file1", 20);
            File cdriveFolder1file2 = new File("cdriveFolder1file2", 30);

            cdriveFolder1.Add(cdriveFolder1file1);
            cdriveFolder1.Add(cdriveFolder1file2);

            File cdriveFolder2file1 = new File("cdriveFolder2file1", 10);
            File cdriveFolder2file2 = new File("cdriveFolder2file2", 11);

            cdriveFolder2.Add(cdriveFolder2file1);
            cdriveFolder2.Add(cdriveFolder2file2);

            File ddriveFolder1file1 = new File("ddriveFolder1file1", 44);
            File ddriveFolder1file2 = new File("ddriveFolder1file2", 34);

            ddriveFolder1.Add(ddriveFolder1file1);
            ddriveFolder1.Add(ddriveFolder1file2);


            File ddriveFolder2file1 = new File("ddriveFolder2file1", 15);
            File ddriveFolder2file2 = new File("ddriveFolder2file2", 19);

            ddriveFolder2.Add(ddriveFolder2file1);
            ddriveFolder2.Add(ddriveFolder2file2);

            PrintDirectoryTreeSize(ddriveFolder2);
            Console.ReadLine();
        }
Exemplo n.º 32
0
 public void Add_GivenNull_ShouldThrowArgumentNullException()
 {
     Assert.Throws <ArgumentNullException>(() => directory.Add(null));
 }
Exemplo n.º 33
0
 void UpdateCurrentState()
 {
     var dir = new Directory(null, "root");
     foreach (var file in m_Files.Values)
     {
         dir.Add(d => file.WithParent(d));
     }
     CurrentState = dir;
 }
Exemplo n.º 34
0
        static void Main(string[] args)
        {
            //adapter
            Console.WriteLine("Pattern Adapter\n");
            ITarget target = new Adapter();

            Console.WriteLine("Adaptee interface is incompatible with the client.");
            Console.WriteLine("But with adapter client can call it's method.");
            List <string> list = target.GetFilmList();

            foreach (string s in list)
            {
                Console.WriteLine("Film: " + s + "\n");
            }

            //decorator
            Console.WriteLine("\n\nPattern Decorator\n");

            //film
            ConcreteComponentFilm ccFilm = new ConcreteComponentFilm();

            Console.WriteLine(ccFilm.GetName());


            // add effects
            EffectsDecorator eFilm = new EffectsDecorator(ccFilm);

            Console.WriteLine(eFilm.GetName());

            // add graphics
            GraphicsDecorator gFilm = new GraphicsDecorator(eFilm);

            Console.WriteLine(gFilm.GetName());

            // add subtitles
            SubTitlesDecorator sFilm = new SubTitlesDecorator(gFilm);

            Console.WriteLine(sFilm.GetName());

            // mult
            ConcreteComponentMult ccMult = new ConcreteComponentMult();

            Console.WriteLine(ccMult.GetName());
            // add effects, graphics and subtitles
            EffectsDecorator   eMult = new EffectsDecorator(ccMult);
            GraphicsDecorator  gMult = new GraphicsDecorator(eMult);
            SubTitlesDecorator sMult = new SubTitlesDecorator(gMult);

            Console.WriteLine(sMult.GetName());

            //composite
            Console.WriteLine("\n\nComposite\n");
            Component fileSystem = new Directory("File System");
            // определяем новый диск
            Component diskC = new Directory("Disk C");
            // новые файлы
            Component pngFile  = new File("12345.png");
            Component docxFile = new File("Document.docx");

            //добавляем диск С в файловую систему
            fileSystem.Add(diskC);
            // добавляем файлы на диск С
            diskC.Add(pngFile);
            diskC.Add(docxFile);
            // выводим все данные
            fileSystem.Print();
            Console.WriteLine("________________");
            // удаляем с диска С файл
            diskC.Remove(pngFile);
            // создаем новую папку в диске С
            Component docsFolder = new Directory("My Documents");
            // добавляем в нее файлы
            Component txtFile = new File("readme.txt");
            Component csFile  = new File("Program.cs");

            docsFolder.Add(txtFile);
            docsFolder.Add(csFile);
            diskC.Add(docsFolder);
            fileSystem.Print();

            //proxy
            Console.WriteLine("\n\nPattern Proxy\n");
            // Create proxy and request a service
            Proxy proxy = new Proxy();

            proxy.Play();

            //bridge
            Console.WriteLine("\n\nPattern Bridge\n");
            Product prFilm = new Film();

            Console.WriteLine("\nFilm\n");
            prFilm.WayToWatch = new TVWayToWatch();
            prFilm.watchProduct();
            prFilm.WayToWatch = new DVDWayToWatch();
            prFilm.watchProduct();

            Product prMult = new Mult();

            Console.WriteLine("\n\nMult\n");
            prMult.WayToWatch = new TVWayToWatch();
            prMult.watchProduct();
            prMult.WayToWatch = new DVDWayToWatch();
            prMult.watchProduct();

            Console.Read();
        }
Exemplo n.º 35
0
        static void Main(string[] args)
        {
            #region Creational
            //-Factory Method-
            Developer dev    = new PanelDeveloper("ООО КирпичСтрой");
            House     house2 = dev.Create();
            dev = new WoodDeveloper("Частный застройщик");
            House house = dev.Create();

            //-Abstract Factory-
            GofPatterns.Creational.Hero elf = new GofPatterns.Creational.Hero(new ElfFactory());
            elf.Hit();
            elf.Run();
            GofPatterns.Creational.Hero voin = new GofPatterns.Creational.Hero(new VoinFactory());
            voin.Hit();
            voin.Run();

            //-Singleton-
            Computer comp = new Computer();
            comp.Launch("Windows 8.1");
            Console.WriteLine(comp.OS.Name);

            // у нас не получится изменить ОС, так как объект уже создан
            comp.OS = OS.getInstance("Windows 10");

            //-Prototype-
            IFigure figure       = new Rectangle(30, 40);
            IFigure clonedFigure = figure.Clone();
            figure.GetInfo();
            clonedFigure.GetInfo();

            figure       = new Circle(30);
            clonedFigure = figure.Clone();
            figure.GetInfo();
            clonedFigure.GetInfo();

            //-Builder-
            // содаем объект пекаря
            Baker baker = new Baker();
            // создаем билдер для ржаного хлеба
            BreadBuilder builder = new RyeBreadBuilder();
            // выпекаем
            Bread ryeBread = baker.Bake(builder);
            Console.WriteLine(ryeBread.ToString());
            // оздаем билдер для пшеничного хлеба
            builder = new WheatBreadBuilder();
            Bread wheatBread = baker.Bake(builder);
            Console.WriteLine(wheatBread.ToString());
            #endregion

            #region Behavioral
            //-Strategy-
            Car auto = new Car(4, "Volvo", new PetrolMove());
            auto.Move();
            auto.Movable = new ElectricMove();
            auto.Move();


            //-Observer-
            Stock  stock  = new Stock();
            Bank   bank   = new Bank("ЮнитБанк", stock);
            Broker broker = new Broker("Иван Иваныч", stock);
            // имитация торгов
            stock.Market();
            // брокер прекращает наблюдать за торгами
            broker.StopTrade();
            // имитация торгов
            stock.Market();


            //-Strategy-
            Pult pult = new Pult();
            TV   tv   = new TV();
            pult.SetCommand(new TVOnCommand(tv));
            pult.PressButton();
            pult.PressUndo();

            Microwave microwave = new Microwave();
            // 5000 - время нагрева пищи
            pult.SetCommand(new MicrowaveCommand(microwave, 5000));
            pult.PressButton();


            //-Iterator-
            Library library = new Library();
            Reader  reader  = new Reader();
            reader.SeeBooks(library);


            //-State-
            Water water = new Water(new LiquidWaterState());
            water.Heat();
            water.Frost();
            water.Frost();


            //-ChainOfResponsibility-
            Handler h1 = new ConcreteHandler1();
            Handler h2 = new ConcreteHandler2();
            h1.Successor = h2;
            h1.HandleRequest(2);


            //-Interpreter-
            Context context = new Context();
            // определяем набор переменных
            int x = 5;
            int y = 8;
            int z = 2;
            // добавляем переменные в контекст
            context.SetVariable("x", x);
            context.SetVariable("y", y);
            context.SetVariable("z", z);
            // создаем объект для вычисления выражения x + y - z
            IExpression expression = new SubtractExpression(
                new AddExpression(
                    new NumberExpression("x"), new NumberExpression("y")
                    ),
                new NumberExpression("z")
                );
            int result = expression.Interpret(context);
            Console.WriteLine("результат: {0}", result);


            //-Mediator-
            ManagerMediator mediator   = new ManagerMediator();
            Colleague       customer   = new CustomerColleague(mediator);
            Colleague       programmer = new ProgrammerColleague(mediator);
            Colleague       tester     = new TesterColleague(mediator);
            mediator.Customer   = customer;
            mediator.Programmer = programmer;
            mediator.Tester     = tester;
            customer.Send("Есть заказ, надо сделать программу");
            programmer.Send("Программа готова, надо протестировать");
            tester.Send("Программа протестирована и готова к продаже");


            //-Memento-
            GofPatterns.Behavioral.Hero hero = new GofPatterns.Behavioral.Hero();
            hero.Shoot();                        // делаем выстрел, осталось 9 патронов
            GameHistory game = new GameHistory();
            game.History.Push(hero.SaveState()); // сохраняем игру
            hero.Shoot();                        //делаем выстрел, осталось 8 патронов
            hero.RestoreState(game.History.Pop());
            hero.Shoot();                        //делаем выстрел, осталось 8 патронов


            //-Visitor-
            var structure = new Bank1();
            structure.Add(new Person {
                Name = "Иван Алексеев", Number = "82184931"
            });
            structure.Add(new Company {
                Name = "Microsoft", RegNumber = "ewuir32141324", Number = "3424131445"
            });
            structure.Accept(new HtmlVisitor());
            structure.Accept(new XmlVisitor());
            #endregion

            #region Structural
            //-Decorator-
            Pizza pizza1 = new ItalianPizza();
            pizza1 = new TomatoPizza(pizza1); // итальянская пицца с томатами
            Console.WriteLine("Название: {0}", pizza1.Name);
            Console.WriteLine("Цена: {0}", pizza1.GetCost());

            Pizza pizza2 = new ItalianPizza();
            pizza2 = new CheesePizza(pizza2);// итальянская пиццы с сыром
            Console.WriteLine("Название: {0}", pizza2.Name);
            Console.WriteLine("Цена: {0}", pizza2.GetCost());

            Pizza pizza3 = new BulgerianPizza();
            pizza3 = new TomatoPizza(pizza3);
            pizza3 = new CheesePizza(pizza3);// болгарская пиццы с томатами и сыром
            Console.WriteLine("Название: {0}", pizza3.Name);
            Console.WriteLine("Цена: {0}", pizza3.GetCost());


            //-Adapter-
            // путешественник
            Driver driver = new Driver();
            // машина
            Auto auto1 = new Auto();
            // отправляемся в путешествие
            driver.Travel(auto1);
            // встретились пески, надо использовать верблюда
            Camel camel = new Camel();
            // используем адаптер
            ITransport camelTransport = new CamelToTransportAdapter(camel);
            // продолжаем путь по пескам пустыни
            driver.Travel(camelTransport);


            //-Facade-
            TextEditor         textEditor  = new TextEditor();
            Compiller          compiller   = new Compiller();
            CLR                clr         = new CLR();
            VisualStudioFacade ide         = new VisualStudioFacade(textEditor, compiller, clr);
            Programmer         programmer1 = new Programmer();
            programmer1.CreateApplication(ide);


            //-Composite-
            Component fileSystem = new Directory("Файловая система");
            // определяем новый диск
            Component diskC = new Directory("Диск С");
            // новые файлы
            Component pngFile  = new File("12345.png");
            Component docxFile = new File("Document.docx");
            // добавляем файлы на диск С
            diskC.Add(pngFile);
            diskC.Add(docxFile);
            // добавляем диск С в файловую систему
            fileSystem.Add(diskC);
            // выводим все данные
            fileSystem.Print();
            Console.WriteLine();
            // удаляем с диска С файл
            diskC.Remove(pngFile);
            // создаем новую папку
            Component docsFolder = new Directory("Мои Документы");
            // добавляем в нее файлы
            Component txtFile = new File("readme.txt");
            Component csFile  = new File("Program.cs");
            docsFolder.Add(txtFile);
            docsFolder.Add(csFile);
            diskC.Add(docsFolder);
            fileSystem.Print();


            //-Proxy-
            using (IBook book = new BookStoreProxy())
            {
                // читаем первую страницу
                Page page1 = book.GetPage(1);
                Console.WriteLine(page1.Text);
                // читаем вторую страницу
                Page page2 = book.GetPage(2);
                Console.WriteLine(page2.Text);
                // возвращаемся на первую страницу
                page1 = book.GetPage(1);
                Console.WriteLine(page1.Text);
            }


            //-Bridge-
            // создаем нового программиста, он работает с с++
            Programmer1 freelancer = new FreelanceProgrammer(new CPPLanguage());
            freelancer.DoWork();
            freelancer.EarnMoney();
            // пришел новый заказ, но теперь нужен c#
            freelancer.Language = new CSharpLanguage();
            freelancer.DoWork();
            freelancer.EarnMoney();


            //-Flyweight-
            double longitude = 37.61;
            double latitude  = 55.74;

            HouseFactory houseFactory = new HouseFactory();
            for (int i = 0; i < 5; i++)
            {
                House1 panelHouse = houseFactory.GetHouse("Panel");
                if (panelHouse != null)
                {
                    panelHouse.Build(longitude, latitude);
                }
                longitude += 0.1;
                latitude  += 0.1;
            }

            for (int i = 0; i < 5; i++)
            {
                House1 brickHouse = houseFactory.GetHouse("Brick");
                if (brickHouse != null)
                {
                    brickHouse.Build(longitude, latitude);
                }
                longitude += 0.1;
                latitude  += 0.1;
            }
            #endregion
        }