public void ExtractStaticMembers_ClassWithStatics_ExtractsStatics()
        {
            IExtractor extractor = new Extractor(typeof(ClassWithStatics));

            const string interfaceName = "Custom.Namespace.IStaticMyClass";
            const string implementationName = "Custom.Namespace.SStaticMyClass";
            var actualInterface = extractor.ExtractInterfaceForStaticMembers(interfaceName);
            var actualImplementation = extractor.ExtractImplementationForStaticMembers(interfaceName, implementationName);
            write_output(actualInterface, actualImplementation);

            var expected = @"
            namespace Custom.Namespace
            {
            public interface IStaticMyClass
            {
            System.Int32 DoSomething();
            System.Int32 GetProperty { get; }
            System.Int32 GetSetProperty { get; set; }
            System.Int32 SetProperty { set; }
            }
            }";
            Assert.That(actualInterface.RemoveWhitespace(), Is.EqualTo(expected.RemoveWhitespace()), "failed on interface creation");

            expected = @"
            namespace Custom.Namespace
            {
            public class SStaticMyClass : Custom.Namespace.IStaticMyClass
            {
            private readonly Core.Fixtures.Fakes.ClassWithStatics instance;

            public System.Int32 DoSomething()
            {
            return Core.Fixtures.Fakes.ClassWithStatics.DoSomething();
            }

            public System.Int32 GetProperty
            {
            get
            {
                return Core.Fixtures.Fakes.ClassWithStatics.GetProperty;
            }
            }

            public System.Int32 GetSetProperty
            {
            get
            {
                return Core.Fixtures.Fakes.ClassWithStatics.GetSetProperty;
            }
            set
            {
                Core.Fixtures.Fakes.ClassWithStatics.GetSetProperty = value;
            }
            }

            public System.Int32 SetProperty
            {
            set
            {
                Core.Fixtures.Fakes.ClassWithStatics.SetProperty = value;
            }
            }
            }
            }";
            Assert.That(actualImplementation.RemoveWhitespace(), Is.EqualTo(expected.RemoveWhitespace()), "failed on implementation creation");
        }
        public void ExtractStaticMembers_StaticClass_DoNotExtractAnyInstanceMembers()
        {
            IExtractor extractor = new Extractor(typeof(StaticClass));

            const string interfaceName = "Custom.Namespace.IStaticMyClass";
            const string implementationName = "Custom.Namespace.SStaticMyClass";
            var actualInterface = extractor.ExtractInterfaceForStaticMembers(interfaceName);
            var actualImplementation = extractor.ExtractImplementationForStaticMembers(interfaceName, implementationName);
            write_output(actualInterface, actualImplementation);

            var expected = @"
            namespace Custom.Namespace
            {
            public interface IStaticMyClass
            {
            void DoSomething();
            }
            }";
            Assert.That(actualInterface.RemoveWhitespace(), Is.EqualTo(expected.RemoveWhitespace()), "failed on interface creation");

            expected = @"
            namespace Custom.Namespace
            {
            public class SStaticMyClass : Custom.Namespace.IStaticMyClass
            {
            public void DoSomething()
            {
            Core.Fixtures.Fakes.StaticClass.DoSomething();
            }
            }
            }";
            Assert.That(actualImplementation.RemoveWhitespace(), Is.EqualTo(expected.RemoveWhitespace()), "failed on implementation creation");
        }
        public void ExtractMembers_TypeOfDateTime_JustWriteItToConsole()
        {
            IExtractor extractor = new Extractor(typeof (DateTime));

            var interfaceName = "Custom.Namespace.IDateTime";
            var implementationName = "Custom.Namespace.DateTimeImplementation";
            var extracted = extractor.ExtractInterfaceForInstanceMembers(interfaceName);
            Console.WriteLine(extracted);
            extracted = extractor.ExtractImplementationForInstanceMembers(interfaceName, implementationName);
            Console.WriteLine(extracted);

            interfaceName = "Custom.Namespace.IDateTimeStatics";
            implementationName = "Custom.Namespace.DateTimeStaticsImplementation";
            extracted = extractor.ExtractInterfaceForStaticMembers(interfaceName);
            Console.WriteLine(extracted);
            extracted = extractor.ExtractImplementationForStaticMembers(interfaceName, implementationName);
            Console.WriteLine(extracted);

            Console.WriteLine();
        }