Inheritance: ISourcePackageRepositoryFactory
        public static void ShouldCreateRemoteRepository()
        {
            var factory = new SourcePackageRepositoryFactory(new PackageSource("http://donkey.com"));
            var repository = factory.CreatePackageRepository();

            repository.Should().BeOfType<DataServicePackageRepository>();
        }
        public static int Main(string[] args)
        {
            try
            {
                var arguments = Args.InvokeAction<Arguments>(args).Args;
                IPackageSourceFileFactory packageSourceFileFactory = new PackageSourceFileFactory();
                var packageSourceFile = packageSourceFileFactory.CreatePackageSourceFile();
                var packageManager = new PackageManagerModule(packageSourceFile);
                var packageSource = string.IsNullOrWhiteSpace(arguments.Source)
                                            ? packageManager.ActiveSource
                                            : packageManager.GetSource(arguments.Source);
                var sourceFactory = new SourcePackageRepositoryFactory(packageSource);
                IPackageInstallerFactory factory = new PackageInstallerFactory(
                    sourceFactory, new SystemConfigurationManager(), new PhysicalDirectorySystem());
                var installer = factory.CreatePackageInstaller(arguments.Destination, arguments.Configuration);
                var program = new Console(arguments, installer);

                return program.Start();
            }
            catch (Exception)
            {
                System.Console.WriteLine(ArgUsage.GetUsage<Arguments>());
                return 1;
            }
        }
        public static void ShouldCreateLocalRepository()
        {
            var factory = new SourcePackageRepositoryFactory(new PackageSource("C:\\Donkey"));
            var repository = factory.CreatePackageRepository();

            repository.Should().BeOfType<LocalPackageRepository>();
        }