Exemple #1
0
        public void TestWantSomeFutureHandlersAlreadyBoundVolatile()
        {
            IInjector i = TangFactory.GetTang().NewInjector();

            i.BindVolatileInstance(GenericType <IAHandler> .Class, new AHandlerImpl());
            i.BindVolatileInstance(GenericType <IBHandler> .Class, new BHandlerImpl());
            i.GetInstance <WantSomeFutureHandlers>();
        }
        public void TestExternalLegacyConstructor()
        {
            ICsConfigurationBuilder cb = tang.NewConfigurationBuilder();

            cb.BindConstructor(GenericType <ExternalConstructorExample.Legacy> .Class, GenericType <ExternalConstructorExample.LegacyWrapper> .Class);
            IInjector i = tang.NewInjector(cb.Build());

            i.BindVolatileInstance(GenericType <int> .Class, 42);
            i.BindVolatileInstance(GenericType <string> .Class, "The meaning of life is ");
            ExternalConstructorExample.Legacy l = i.GetInstance <ExternalConstructorExample.Legacy>();
            Assert.AreEqual(42, l.X);
            Assert.AreEqual("The meaning of life is ", l.Y);
        }
Exemple #3
0
        public void TestObjectInjectDefault()
        {
            IInjector i = TangFactory.GetTang().NewInjector();

            i.BindVolatileInstance(GenericType <Integer> .Class, new Integer(42));
            i.BindVolatileInstance(GenericType <Float> .Class, new Float(42.0001f));
            ISet <INumber> actual   = ((Pool)i.GetInstance(typeof(Pool))).Numbers;
            ISet <INumber> expected = new HashSet <INumber>();

            expected.Add(new Integer(42));
            expected.Add(new Float(42.0001f));

            Assert.True(actual.Contains(new Integer(42)));
            Assert.True(actual.Contains(new Float(42.0001f)));
            Assert.Equal(actual.Count, expected.Count);
        }
Exemple #4
0
        public void TestInjectionExtension()
        {
            IInjector i = TangFactory.GetTang().NewInjector();

            i.BindVolatileInstance <Integer>(new Integer(1));
            i.BindVolatileInstance <Float>(new Float(2f));
            ISet <INumber> actual =
                (ISet <INumber>)
                i.GetNamedInstance <SetOfClassesDefaultClass, ISet <INumber> >();

            ISet <INumber> expected = new HashSet <INumber>();

            expected.Add(new Integer(1));
            Assert.Equal(expected.Count, actual.Count);
            Assert.True(actual.Contains(new Integer(1)));
        }
Exemple #5
0
        public void TestDefaultAsClass()
        {
            IInjector i = TangFactory.GetTang().NewInjector();

            i.BindVolatileInstance(GenericType <Integer> .Class, new Integer(1));
            i.BindVolatileInstance(GenericType <Float> .Class, new Float(2f));
            ISet <INumber> actual =
                (ISet <INumber>)
                i.GetNamedInstance <SetOfClassesDefaultClass, ISet <INumber> >(GenericType <SetOfClassesDefaultClass> .Class);

            ISet <INumber> expected = new HashSet <INumber>();

            expected.Add(new Integer(1));
            Assert.AreEqual(expected.Count, actual.Count);
            Assert.IsTrue(actual.Contains(new Integer(1)));
        }
Exemple #6
0
 public RootContextLauncher(string id, IConfiguration contextConfiguration,
     Optional<ServiceConfiguration> rootServiceConfig, Optional<IConfiguration> rootTaskConfig, IHeartBeatManager heartbeatManager)
 {
     Id = id;
     _rootContextConfiguration = contextConfiguration;
     _rootServiceInjector = InjectServices(rootServiceConfig);
     _rootServiceInjector.BindVolatileInstance(GenericType<IHeartBeatManager>.Class, heartbeatManager);
     RootTaskConfig = rootTaskConfig;
 }
Exemple #7
0
 public RootContextLauncher(string id, IConfiguration contextConfiguration,
                            Optional <IConfiguration> rootServiceConfig, Optional <IConfiguration> rootTaskConfig, IHeartBeatManager heartbeatManager)
 {
     Id = id;
     _rootContextConfiguration = contextConfiguration;
     _rootServiceInjector      = InjectServices(rootServiceConfig);
     _rootServiceInjector.BindVolatileInstance(GenericType <IHeartBeatManager> .Class, heartbeatManager);
     RootTaskConfig = rootTaskConfig;
 }
Exemple #8
0
        public void TestObjectInjectBound()
        {
            ICsConfigurationBuilder cb = TangFactory.GetTang().NewConfigurationBuilder();

            cb.BindSetEntry <SetOfClasses, Integer, INumber>(GenericType <SetOfClasses> .Class, GenericType <Integer> .Class);
            cb.BindSetEntry <SetOfClasses, Float, INumber>(GenericType <SetOfClasses> .Class, GenericType <Float> .Class);

            IInjector i = TangFactory.GetTang().NewInjector(cb.Build());

            i.BindVolatileInstance(GenericType <Integer> .Class, new Integer(4));
            i.BindVolatileInstance(GenericType <Float> .Class, new Float(42.0001f));

            ISet <INumber> actual   = i.GetInstance <Pool>().Numbers;
            ISet <INumber> expected = new HashSet <INumber>();

            expected.Add(new Integer(4));
            expected.Add(new Float(42.0001f));
            Assert.True(Utilities.Utilities.Equals <INumber>(actual, expected));
        }
Exemple #9
0
        public void TestObjectInjectWithTypeType()
        {
            IList <Type> injected = new List <Type>();

            injected.Add(typeof(TestSetInjection.Integer));
            injected.Add(typeof(TestSetInjection.Float));

            ICsConfigurationBuilder cb = TangFactory.GetTang().NewConfigurationBuilder();

            cb.BindList(typeof(ListOfClasses), injected);

            IInjector i = TangFactory.GetTang().NewInjector(cb.Build());

            i.BindVolatileInstance(GenericType <TestSetInjection.Integer> .Class, new TestSetInjection.Integer(42));
            i.BindVolatileInstance(GenericType <TestSetInjection.Float> .Class, new TestSetInjection.Float(42.0001f));
            IList <INumber> actual = ((PoolListClass)i.GetInstance(typeof(PoolListClass))).Numbers;

            Assert.True(actual.Contains(new TestSetInjection.Integer(42)));
            Assert.True(actual.Contains(new TestSetInjection.Float(42.0001f)));
        }
Exemple #10
0
        public void TestClassNameInjectWithNamedParameterName()
        {
            IList <string> injected = new List <string>();

            injected.Add(typeof(TestSetInjection.Integer).AssemblyQualifiedName);
            injected.Add(typeof(TestSetInjection.Float).AssemblyQualifiedName);

            IConfigurationBuilder cb = TangFactory.GetTang().NewConfigurationBuilder();

            cb.BindList(typeof(ListOfClasses).AssemblyQualifiedName, injected);

            IInjector i = TangFactory.GetTang().NewInjector(cb.Build());

            i.BindVolatileInstance(GenericType <TestSetInjection.Integer> .Class, new TestSetInjection.Integer(42));
            i.BindVolatileInstance(GenericType <TestSetInjection.Float> .Class, new TestSetInjection.Float(42.0001f));
            IList <INumber> actual = ((PoolListClass)i.GetInstance(typeof(PoolListClass))).Numbers;

            Assert.True(actual.Contains(new TestSetInjection.Integer(42)));
            Assert.True(actual.Contains(new TestSetInjection.Float(42.0001f)));
        }
Exemple #11
0
        public void TestLegacyConstructor()
        {
            ICsConfigurationBuilder cb = tang.NewConfigurationBuilder();

            IList <string> constructorArg = new List <string>();

            constructorArg.Add(ReflectionUtilities.GetAssemblyQualifiedName(typeof(int)));
            constructorArg.Add(ReflectionUtilities.GetAssemblyQualifiedName(typeof(string)));
            cb.RegisterLegacyConstructor(ReflectionUtilities.GetAssemblyQualifiedName(typeof(LegacyConstructor)), constructorArg);
            //cb.Bind(typeof(LegacyConstructor), typeof(LegacyConstructor));
            cb.BindImplementation(GenericType <LegacyConstructor> .Class, GenericType <LegacyConstructor> .Class);

            IInjector i = tang.NewInjector(cb.Build());

            i.BindVolatileInstance(GenericType <int> .Class, 42);
            i.BindVolatileInstance(GenericType <string> .Class, "The meaning of life is ");
            LegacyConstructor l = i.GetInstance <LegacyConstructor>();

            Assert.AreEqual(42, l.X);
            Assert.AreEqual("The meaning of life is ", l.Y);
        }
Exemple #12
0
        public void TestObjectInjectWithNames()
        {
            ICsClassHierarchy classH   = TangFactory.GetTang().GetDefaultClassHierarchy();
            IList <INode>     injected = new List <INode>();

            injected.Add(classH.GetNode(typeof(TestSetInjection.Integer)));
            injected.Add(classH.GetNode(typeof(TestSetInjection.Float)));

            IConfigurationBuilder cb = TangFactory.GetTang().NewConfigurationBuilder();

            cb.BindList(typeof(ListOfClasses).AssemblyQualifiedName, injected);

            IInjector i = TangFactory.GetTang().NewInjector(cb.Build());

            i.BindVolatileInstance(GenericType <TestSetInjection.Integer> .Class, new TestSetInjection.Integer(42));
            i.BindVolatileInstance(GenericType <TestSetInjection.Float> .Class, new TestSetInjection.Float(42.0001f));
            IList <INumber> actual = ((PoolListClass)i.GetInstance(typeof(PoolListClass))).Numbers;

            Assert.True(actual.Contains(new TestSetInjection.Integer(42)));
            Assert.True(actual.Contains(new TestSetInjection.Float(42.0001f)));
        }
Exemple #13
0
        public void TestExternalObject()
        {
            ITang tang = TangFactory.GetTang();
            ICsConfigurationBuilder cb = tang.NewConfigurationBuilder();

            IInjector injector = tang.NewInjector(cb.Build());

            // bind an object to the injetor so that Tang will get this instance from cache directly instead of inject it when injecting ClassWithExternalObject
            injector.BindVolatileInstance(GenericType <ExternalClass> .Class, new ExternalClass());
            ClassWithExternalObject o = injector.GetInstance <ClassWithExternalObject>();

            Assert.IsNotNull(o.ExternalObject is ExternalClass);
        }
        /// <summary>
        /// Instantiates an IInjector using the bridge configuration.
        /// </summary>
        /// <returns></returns>
        internal static IInjector GetBridgeInjector(IEvaluatorRequestor evaluatorRequestor)
        {
            lock (LockObject)
            {
                if (bridgeInjector == null)
                {
                    bridgeInjector = TangFactory.GetTang().NewInjector(GetBridgeConfiguration());
                    if (evaluatorRequestor != null)
                    {
                        bridgeInjector.BindVolatileInstance(GenericType <IEvaluatorRequestor> .Class, evaluatorRequestor);
                    }
                }

                return(bridgeInjector);
            }
        }
        /// <summary>
        /// Instantiates an IInjector using the bridge configuration.
        /// </summary>
        /// <returns></returns>
        internal static IInjector GetBridgeInjector(IEvaluatorRequestor evaluatorRequestor)
        {
            lock (LockObject)
            {
                if (BridgeInjector == null)
                {
                    BridgeInjector = TangFactory.GetTang().NewInjector(GetBridgeConfiguration());
                    if (evaluatorRequestor != null)
                    {
                        BridgeInjector.BindVolatileInstance(GenericType<IEvaluatorRequestor>.Class, evaluatorRequestor);
                    }
                }

                return BridgeInjector;
            }
        }