예제 #1
0
        public void Then_the_dictionary_value_and_key_must_be_injected_with_registered_types()
        {
            const string keyidentifier = "keyidentifier";
            const string dictionaryId  = "dicid";

            FluentApplicationContext.Register <TestObject>()
            .Bind(x => x.PropertyX).To(keyidentifier);

            FluentApplicationContext.Register <TestObject>(dictionaryId)
            .Bind(x => x.TestObjectKeyValueDictionary).ToDefinition(
                Inline.Dictionary <TestObject, TestObject>()
                .AddEntry()
                .WithKey <TestObject>()
                .AndValue <TestObject>()
                );

            IApplicationContext applicationContext = _applicationContextContainer.InitialiseContext();

            var initialisedObject = applicationContext.GetObject <TestObject>(dictionaryId);

            var keyObject = applicationContext.GetObject <TestObject>();

            Assert.IsTrue(initialisedObject.TestObjectKeyValueDictionary.ContainsKey(keyObject));
            Assert.AreSame(keyObject, initialisedObject.TestObjectKeyValueDictionary[keyObject]);
        }
예제 #2
0
        public void Then_the_dictionary_key_and_value_must_be_injected_with_inline_objects()
        {
            const string dictionaryId = "dicid";

            FluentApplicationContext.Register <TestObject>(dictionaryId)
            .Bind(x => x.TestObjectKeyValueDictionary).ToDefinition(
                Inline.Dictionary <TestObject, TestObject>()
                .AddEntry()
                .WithKeyDefinition(
                    Inline.Object <TestObject>()
                    .Bind(x => x.PropertyX).To("somekeyvalue")
                    )
                .AndValueDefinition(
                    Inline.Object <TestObject>()
                    .Bind(x => x.PropertyX).To("somevalue"))
                );

            IApplicationContext applicationContext = _applicationContextContainer.InitialiseContext();

            var initialisedObject = applicationContext.GetObject <TestObject>(dictionaryId);

            Assert.IsTrue(initialisedObject.TestObjectKeyValueDictionary.Keys.Where(l => l.PropertyX.Equals("somekeyvalue")).Count() > 0);
            Assert.IsTrue(initialisedObject.TestObjectKeyValueDictionary.Values.Where(l => l.PropertyX.Equals("somevalue")).Count() > 0);
            Assert.AreEqual("somevalue", initialisedObject.TestObjectKeyValueDictionary.Where(k => k.Value.PropertyX.Equals("somevalue")).Single().Value.PropertyX);
        }
예제 #3
0
        public void Then_the_dictionary_must_be_injected()
        {
            const string identifier = "myobjectname";

            FluentApplicationContext.Register <ObjectWithProperties>(identifier)
            .Bind(x => x.ADictionaryProperty).ToDefinition(
                Inline.Dictionary <string, string>()
                .AddEntry().WithKey("myvalue").AndValue("somevalue"));

            IApplicationContext applicationContext = _applicationContextContainer.InitialiseContext();

            var initialisedObject = (ObjectWithProperties)applicationContext.GetObject(identifier);

            Assert.IsTrue(initialisedObject.ADictionaryProperty.ContainsKey("myvalue"));
            Assert.AreEqual("somevalue", initialisedObject.ADictionaryProperty["myvalue"]);
        }
예제 #4
0
        public void Then_the_dictionary_key_must_be_injected_with_registered_object()
        {
            const string identifier   = "myobjectname";
            const string dictionaryId = "dicid";

            FluentApplicationContext.Register <TestObject>(identifier)
            .Bind(x => x.PropertyX).To("somevalue");

            FluentApplicationContext.Register <TestObject>(dictionaryId)
            .Bind(x => x.TestObjectKeyDictionary).ToDefinition(
                Inline.Dictionary <TestObject, string>()
                .AddEntry().WithKey <TestObject>(identifier).AndValue("somevalue"));

            IApplicationContext applicationContext = _applicationContextContainer.InitialiseContext();

            var keyTestObject     = applicationContext.GetObject <TestObject>(identifier);
            var initialisedObject = applicationContext.GetObject <TestObject>(dictionaryId);

            Assert.IsTrue(initialisedObject.TestObjectKeyDictionary.ContainsKey(keyTestObject));
            Assert.AreEqual("somevalue", initialisedObject.TestObjectKeyDictionary[keyTestObject]);
        }
예제 #5
0
        public void Demo()
        {
            FluentApplicationContext.Register <TestObject>()
            .AsNonSingleton()
            .Bind(x => x.PropertyX).To("a value");


            FluentApplicationContext.Register <TestObject>().Bind(x => x.PropertyX).To <String>();

            FluentApplicationContext.Register <TestObject>().Bind(x => x.PropertyX).To <String>("something");

            FluentApplicationContext.Register <TestObject>().Bind(x => x.PropertyX).To("something");

            FluentApplicationContext.Register <TestObject>().Bind(x => x.SomeDictionary).ToDefinition(
                Inline.Dictionary <string, String>()
                .AddEntry().WithKey <String>().AndValue("adsf")
                .AddEntry().WithKey("asdfasdf").AndValue <String>()
                .AddEntry().WithKey("asdfasdf").AndValueDefinition(
                    Inline.Object <String>()
                    .Bind(x => x.ToString()).To("1"))
                .AddEntry()
                .WithKeyDefinition(
                    Inline.Object <string>())
                .AndValueDefinition(
                    Inline.Object <String>()
                    .Bind(x => x.ToString()).To("1"))
                );

            Inline.Dictionary <string, string>()
            .AddEntry().WithKey <String>().AndValue("adsf")
            .AddEntry().WithKey("asdfasdf").AndValue <String>();

            FluentApplicationContext.Register <TestObject>()
            .BindConstructorArgument <String>()
            .ToDefinition(Inline.Object <String>());

            FluentApplicationContext.Bind <IDictionary <string, string> >()
            .To <Dictionary <string, string> >().When(Is.RunningEnvironment("PROD"));
        }
예제 #6
0
        public void Then_the_associated_repository_must_be_used()
        {
            FluentApplicationContext.Register <TestObjectRepository>();
            FluentApplicationContext.Register <TestObject>();

            FluentApplicationContext.Register <Repositories>()
            .Bind(x => x.Registry).ToDefinition(
                Inline.Dictionary <string, IRepository>()
                .AddEntry()
                .WithKey(typeof(TestObject).FullName).AndValue <TestObjectRepository>()
                );

            IApplicationContext context = _applicationContextContainer.InitialiseContext();

            string id = "1";

            var otherTestObject = context.GetObject <TestObject>();
            var testObject      = context.GetObjectById <TestObject>(id);

            Assert.AreNotEqual(otherTestObject, testObject);
            Assert.AreEqual(id, testObject.PropertyX);
        }
예제 #7
0
        public void Then_the_dictionary_value_must_be_injected_with_registered_object()
        {
            const string identifier   = "myobjectname";
            const string dictionaryId = "dicid";

            FluentApplicationContext.Register <TestObject>(identifier)
            .Bind(x => x.PropertyX).To("somevalue");

            FluentApplicationContext.Register <TestObject>(dictionaryId)
            .Bind(x => x.TestObjectValueDictionary).ToDefinition(
                Inline.Dictionary <string, TestObject>()
                .AddEntry()
                .WithKey("mykey")
                .AndValue <TestObject>(identifier)
                );

            IApplicationContext applicationContext = _applicationContextContainer.InitialiseContext();

            var initialisedObject = applicationContext.GetObject <TestObject>(dictionaryId);

            Assert.IsTrue(initialisedObject.TestObjectValueDictionary.Values.Where(l => l.PropertyX.Equals("somevalue")).Count() > 0);
            Assert.AreEqual("somevalue", initialisedObject.TestObjectValueDictionary.Where(k => k.Value.PropertyX.Equals("somevalue")).Single().Value.PropertyX);
        }