public void Directory_should_identify_types_in_each_assembly_found_in_directory_specified_by_path()
        {
            using (var factory = new AssemblyFactory())
            {
                factory.Build(@"public class Foo { }");
                factory.Build(@"public class Bar { }");

                var configurator =
                    new TypeScannerConfigurator();

                configurator.Directory(factory.AssemblyDirectory.FullName);

                var scanner =
                    configurator.GetTypeScanner();

                var results =
                    scanner.GetTypes(x => true);

                results.Count().ShouldEqual(2);
            }
        }
        public void Directory_should_return_reference_to_same_configurator()
        {
            var configurator =
                new TypeScannerConfigurator();

            var reference =
                configurator.Directory(Environment.CurrentDirectory);

            reference.ShouldBeSameAs(configurator);
        }
        public void Directory_should_throw_argumentoutofrangeexcetion_when_called_with_empty_path()
        {
            var configurator =
                new TypeScannerConfigurator();

            var exception =
                Catch.Exception(() => configurator.Directory(string.Empty));

            exception.ShouldBeOfType<ArgumentOutOfRangeException>();
        }
        public void Directory_should_throw_directorynotfoundexception_when_called_with_invalid_path()
        {
            var invalidDirectoryPath =
                Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows),
                    Path.GetFileNameWithoutExtension(Path.GetRandomFileName()));

            var configurator =
                new TypeScannerConfigurator();

            var exception =
                Catch.Exception(() => configurator.Directory(invalidDirectoryPath));

            exception.ShouldBeOfType<DirectoryNotFoundException>();
        }
        public void Directory_should_throw_argumentnullexception_when_called_with_null_path()
        {
            var configurator =
                new TypeScannerConfigurator();

            var exception =
                Catch.Exception(() => configurator.Directory(null));

            exception.ShouldBeOfType<ArgumentNullException>();
        }