public void FinishRegistrationTest()
        {
            var container = new Container();
            var registration = container.StartRegistration(typeof(TestType));

            container.FinishRegistration(typeof(ITestType1), registration);

            var sourceTypes = container.GetSourceTypes(typeof(ITestType1));

            Assert.AreEqual(1, sourceTypes.Count());
            Assert.AreEqual(typeof(TestType), sourceTypes.First());
        }
        public void FinishRegistrationNotAReferenceTypeTest()
        {
            var container = new Container();
            var registration = container.StartRegistration(typeof(TestType));

            try
            {
                container.FinishRegistration(typeof(int), registration);
                Assert.Fail();
            }
            catch (NotAReferenceTypeException)
            {
                return;
            }

            Assert.Fail();
        }
        public void FinishRegistrationTargetNotAssignableFromSourceTest()
        {
            var container = new Container();
            var registration = container.StartRegistration(typeof(TestType));

            try
            {
                container.FinishRegistration(typeof(ITestType4), registration);
                Assert.Fail();
            }
            catch (InvalidOperationException ex)
            {
                StringAssert.Contains(ex.Message, "is not assignable to");
                return;
            }

            Assert.Fail();
        }
        public void FinishRegistrationNotStartedTest()
        {
            var container = new Container();
            var registration = A.Dummy<IStartedRegistration>();
            A.CallTo(() => registration.SourceType).Returns(typeof(TestType));

            try
            {
                container.FinishRegistration(typeof(ITestType1), registration);
                Assert.Fail();
            }
            catch (InvalidOperationException ex)
            {
                StringAssert.Contains(ex.Message, "because it has never been started");
                return;
            }

            Assert.Fail();
        }
        public void StartRegistrationTest()
        {
            var container = new Container();
            var registration = container.StartRegistration(typeof(TestType));

            Assert.AreEqual(typeof(TestType), registration.SourceType);
        }