public void MakeSureEnumeratorUnregistersItselWhenLeftUndisposed()
        {
            var mockRepository = new MockRepository();

            IFolderEnumeratorRegistry registryMock     = mockRepository.DynamicMock <IFolderEnumeratorRegistry>();
            IFilesAndFoldersProvider  fileProviderStub = mockRepository.Stub <IFilesAndFoldersProvider>();

            var folderInfo = new FolderInfo(new FolderNode("dsf", Guid.NewGuid(), 1, 2, new DataStreamDefinition(12, 0), new DataStreamDefinition(11, 0), DateTime.UtcNow, Guid.NewGuid()), "\\folder");
            var enumerator = new FolderContentsEnumerator(folderInfo, "*", registryMock, fileProviderStub);

            using (mockRepository.Unordered())
            {
                registryMock.Unregister(null);
                LastCall.IgnoreArguments().Repeat.Once();
            }

            mockRepository.ReplayAll();

            enumerator = null;

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            mockRepository.VerifyAll();
        }
Beispiel #2
0
        public FileManager(IVirtualDisk virtualDisk, FileSystemNodeStorage fileSystemNodeStorage, IEqualityComparer <string> namesComparer, NodeResolver nodeResolver, IFreeBlockManager freeBlockManager, IFolderEnumeratorRegistry folderEnumeratorRegistry, IFileSystemObjectLockingManager lockingManager, BlockReferenceListsEditor blockReferenceListsEditor, PathBuilder pathBuilder, IFileSystemArtifactNamesValidator nameValidator, IPathValidator pathValidator)
        {
            if (virtualDisk == null)
            {
                throw new ArgumentNullException("virtualDisk");
            }
            if (fileSystemNodeStorage == null)
            {
                throw new ArgumentNullException("fileSystemNodeStorage");
            }
            if (namesComparer == null)
            {
                throw new ArgumentNullException("namesComparer");
            }
            if (nodeResolver == null)
            {
                throw new ArgumentNullException("nodeResolver");
            }
            if (freeBlockManager == null)
            {
                throw new ArgumentNullException("freeBlockManager");
            }
            if (folderEnumeratorRegistry == null)
            {
                throw new ArgumentNullException("folderEnumeratorRegistry");
            }
            if (lockingManager == null)
            {
                throw new ArgumentNullException("lockingManager");
            }
            if (blockReferenceListsEditor == null)
            {
                throw new ArgumentNullException("blockReferenceListsEditor");
            }
            if (pathBuilder == null)
            {
                throw new ArgumentNullException("pathBuilder");
            }
            if (nameValidator == null)
            {
                throw new ArgumentNullException("nameValidator");
            }
            if (pathValidator == null)
            {
                throw new ArgumentNullException("pathValidator");
            }

            _virtualDisk               = virtualDisk;
            _pathValidator             = pathValidator;
            _nameValidator             = nameValidator;
            _pathBuilder               = pathBuilder;
            _blockReferenceListsEditor = blockReferenceListsEditor;
            _lockingManager            = lockingManager;
            _folderEnumeratorRegistry  = folderEnumeratorRegistry;
            _freeBlockManager          = freeBlockManager;
            _nodeResolver              = nodeResolver;
            _namesComparer             = namesComparer;
            _fileSystemNodeStorage     = fileSystemNodeStorage;
        }
        public static void InvalidateEnumeratorsFor(this IFolderEnumeratorRegistry enumeratorRegistry, IEnumerable <FolderNode> folders)
        {
            if (enumeratorRegistry == null)
            {
                throw new ArgumentNullException("enumeratorRegistry");
            }
            if (folders == null)
            {
                throw new ArgumentNullException("folders");
            }

            foreach (FolderNode folderNode in folders)
            {
                enumeratorRegistry.InvalidateEnumeratorsForFolder(folderNode.Id);
            }
        }
        public static void InvalidateEnumeratorsFor(this IFolderEnumeratorRegistry enumeratorRegistry, IEnumerable <Guid> idsOfFolders)
        {
            if (enumeratorRegistry == null)
            {
                throw new ArgumentNullException("enumeratorRegistry");
            }
            if (idsOfFolders == null)
            {
                throw new ArgumentNullException("idsOfFolders");
            }

            foreach (Guid id in idsOfFolders)
            {
                enumeratorRegistry.InvalidateEnumeratorsForFolder(id);
            }
        }
Beispiel #5
0
        private VirtualFileSystem(
            IVirtualDisk virtualDisk,
            VirtualFileSystemInfo fileSystemInfo,
            FileSystemNodeStorage fileSystemNodeStorage,
            IEqualityComparer <string> namesComparer,
            NodeResolver nodeResolver,
            IFreeBlockManager freeBlockManager,
            IFolderEnumeratorRegistry folderEnumeratorRegistry,
            BlockReferenceListsEditor blockReferenceListsEditor,
            PathBuilder pathBuilder,
            IFileSystemArtifactNamesValidator nameValidator,
            IPathValidator pathValidator,
            FileManager fileManager,
            FolderManager folderManager)
        {
            if (fileSystemInfo == null)
            {
                throw new ArgumentNullException("fileSystemInfo");
            }
            if (fileSystemNodeStorage == null)
            {
                throw new ArgumentNullException("fileSystemNodeStorage");
            }
            if (namesComparer == null)
            {
                throw new ArgumentNullException("namesComparer");
            }
            if (nodeResolver == null)
            {
                throw new ArgumentNullException("nodeResolver");
            }
            if (freeBlockManager == null)
            {
                throw new ArgumentNullException("freeBlockManager");
            }
            if (folderEnumeratorRegistry == null)
            {
                throw new ArgumentNullException("folderEnumeratorRegistry");
            }
            if (blockReferenceListsEditor == null)
            {
                throw new ArgumentNullException("blockReferenceListsEditor");
            }
            if (pathBuilder == null)
            {
                throw new ArgumentNullException("pathBuilder");
            }
            if (nameValidator == null)
            {
                throw new ArgumentNullException("nameValidator");
            }
            if (pathValidator == null)
            {
                throw new ArgumentNullException("pathValidator");
            }
            if (folderManager == null)
            {
                throw new ArgumentNullException("folderManager");
            }

            _virtualDisk              = virtualDisk;
            _folderManager            = folderManager;
            _folderManager            = folderManager;
            _folderManager            = folderManager;
            _folderManager            = folderManager;
            _fileManager              = fileManager;
            _pathBuilder              = pathBuilder;
            _folderEnumeratorRegistry = folderEnumeratorRegistry;
            _nodeResolver             = nodeResolver;
            _freeBlockManager         = freeBlockManager;
            _fileSystemInfo           = fileSystemInfo;
            _namesComparer            = namesComparer;
        }