public void Should_replace_a_definition() { Func <SomePluginContext, bool> predicate4 = x => true; Func <SomePluginContext, bool> predicate5 = x => true; var instance2 = new SomeImplementation2(); var instance4 = new SomeImplementation4(); _definitions.Append <SomeImplementation1>() .Append(instance2) .Append <SomeImplementation3>(); _definitions.Replace <SomeImplementation1>().With(instance4, predicate4); _definitions.Replace <SomeImplementation2>().With <SomeImplementation5>(predicate5, true); var definitions = _definitions.ToList(); _definitions.Count().ShouldEqual(3); definitions[0].HasInstance.ShouldBeTrue(); definitions[0].Instance.ShouldEqual(instance4); definitions[0].Singleton.ShouldBeFalse(); definitions[0].AppliesTo.ShouldEqual(predicate4); definitions[1].HasInstance.ShouldBeFalse(); definitions[1].Type.ShouldEqual(typeof(SomeImplementation5)); definitions[1].Singleton.ShouldBeTrue(); definitions[1].AppliesTo.ShouldEqual(predicate5); definitions[2].HasInstance.ShouldBeFalse(); definitions[2].Type.ShouldEqual(typeof(SomeImplementation3)); }
public void Should_prepend_a_plugin_before_another_and_remove_existing() { var instance2 = new SomeImplementation2(); var instance3 = new SomeImplementation3(); _definitions.Append <SomeImplementation1>() .Append(instance2) .Append <SomeImplementation3>() .Append <SomeImplementation4>(); _definitions.Prepend(instance3).Before <SomeImplementation1>(); _definitions.Prepend <SomeImplementation4>().Before <SomeImplementation2>(); var definitions = _definitions.ToList(); _definitions.Count().ShouldEqual(4); definitions[0].HasInstance.ShouldBeTrue(); definitions[0].Instance.ShouldEqual(instance3); definitions[1].HasInstance.ShouldBeFalse(); definitions[1].Type.ShouldEqual(typeof(SomeImplementation1)); definitions[2].HasInstance.ShouldBeFalse(); definitions[2].Type.ShouldEqual(typeof(SomeImplementation4)); definitions[3].HasInstance.ShouldBeTrue(); definitions[3].Instance.ShouldEqual(instance2); }
public void Should_get_definition_from_instance() { var instance2 = new SomeImplementation2(); _definitions.Append <SomeImplementation1>() .Append(instance2); _definitions.Get(new SomeImplementation2()).Type.ShouldEqual(typeof(SomeImplementation2)); }
public void Should_get_order_from_type() { var instance2 = new SomeImplementation2(); _definitions.Append <SomeImplementation1>() .Append(instance2); _definitions.Order(typeof(SomeImplementation1)).ShouldEqual(0); _definitions.Order(typeof(SomeImplementation2)).ShouldEqual(1); }
public void Should_get_order_from_generic_type_param() { var instance2 = new SomeImplementation2(); _definitions.Append <SomeImplementation1>() .Append(instance2); _definitions.Order <SomeImplementation1>().ShouldEqual(0); _definitions.Order <SomeImplementation2>().ShouldEqual(1); }
public void Should_get_definition_from_generic_type_param() { var instance2 = new SomeImplementation2(); _definitions.Append <SomeImplementation1>() .Append(instance2); _definitions.Get <SomeImplementation1>().Type.ShouldEqual(typeof(SomeImplementation1)); _definitions.Get <SomeImplementation2>().Type.ShouldEqual(typeof(SomeImplementation2)); }
public void Should_remove_a_definition() { var instance2 = new SomeImplementation2(); _definitions.Append <SomeImplementation1>() .Append(instance2) .Append <SomeImplementation3>(); _definitions.Remove <SomeImplementation3>(); _definitions.Count().ShouldEqual(2); _definitions.Get <SomeImplementation1>().ShouldNotBeNull(); _definitions.Get <SomeImplementation2>().ShouldNotBeNull(); _definitions.Get <SomeImplementation3>().ShouldBeNull(); }
public void Should_append_a_definition_and_remove_existing() { var instance2 = new SomeImplementation2(); _definitions.Prepend <SomeImplementation1>() .Prepend <SomeImplementation2>(); _definitions.Append <SomeImplementation1>() .Append(instance2); var definitions = _definitions.ToList(); _definitions.Count().ShouldEqual(2); definitions[0].HasInstance.ShouldBeFalse(); definitions[0].Type.ShouldEqual(typeof(SomeImplementation1)); definitions[1].HasInstance.ShouldBeTrue(); definitions[1].Instance.ShouldEqual(instance2); }
public void Should_prepend_a_plugin() { Func <SomePluginContext, bool> predicate1 = x => true; Func <SomePluginContext, bool> predicate2 = x => true; var instance2 = new SomeImplementation2(); _definitions.Prepend <SomeImplementation1>(predicate1, true); _definitions.Prepend(instance2, predicate2); var definitions = _definitions.ToList(); _definitions.Count().ShouldEqual(2); definitions[0].HasInstance.ShouldBeTrue(); definitions[0].Instance.ShouldEqual(instance2); definitions[0].Singleton.ShouldBeFalse(); definitions[0].AppliesTo.ShouldEqual(predicate2); definitions[1].HasInstance.ShouldBeFalse(); definitions[1].Type.ShouldEqual(typeof(SomeImplementation1)); definitions[1].Singleton.ShouldBeTrue(); definitions[1].AppliesTo.ShouldEqual(predicate1); }