public void Resolve_RegisteredType_ReturnsSameInstance() { // arrange var sut = new ScopedObjectRegistry(); sut.Register <GoodObject>(); // act var result1 = sut.Resolve(typeof(GoodObject)); var result2 = sut.Resolve(typeof(GoodObject)); // assert Assert.Same(result1, result2); }
private Session CreateSession( Action <ScopedObjectRegistry> sessionObjectsConfigurator = null, params Type[] commandTypes) { var parser = new Parser(); var nameValidator = new NameValidator(); var descriptorGenerator = new CommandAttributeInspector(); var registry = new CommandRegistry(nameValidator, descriptorGenerator); foreach (var commandType in commandTypes) { registry.Register(commandType); } var services = new CommandServices(); var scopedObjects = new ScopedObjectRegistry(); scopedObjects.Register <VariableCollection>(); sessionObjectsConfigurator?.Invoke(scopedObjects); var factory = new CommandFactory(registry, services, scopedObjects); var variables = scopedObjects.Resolve(typeof(VariableCollection)) as VariableCollection; var replacer = new VariableReplacer(); var binder = new CommandParameterBinder(registry, replacer, variables); return(new Session(parser, factory, binder)); }
public void Resolve_TypeNotRegistered_ReturnsNull() { // arrange var sut = new ScopedObjectRegistry(); // act var result = sut.Resolve(typeof(GoodObject)); // assert Assert.Null(result); }
public void Resolve_RegisteredType_ReturnsInstance() { // arrange var sut = new ScopedObjectRegistry(); sut.Register <GoodObject>(); // act var result = sut.Resolve(typeof(GoodObject)); // assert Assert.IsType <GoodObject>(result); }
public void CreateScope_WhenCalled_ExcludesInstances() { // arrange var sut = new ScopedObjectRegistry(); sut.Register <GoodObject>(); var result1 = sut.Resolve(typeof(GoodObject)); // act var scope = sut.CreateScope(); // assert var result2 = scope.Resolve(typeof(GoodObject)); Assert.NotSame(result1, result2); }