public async Task GivenPipeOnSuperClass_WhenResolvingToInterface_ItShouldReturnSuperType() { // pre-arrange var instanceClassA = new TestClassA(); var instanceSuperClassB = new TestSuperClassB(); // arrange var builder = new SemanticBuilder(); builder.InstallPipe <TestClassA, IEnumerable <TestSuperClassB> >( (@as, broker) => { Assert.AreSame(instanceClassA, @as); return(new[] { instanceSuperClassB }); }); var semanticBroker = builder.CreateBroker(); // act var returnedInstance = await semanticBroker.On(instanceClassA).Output <IEnumerable <ITestInterface> >(); // assert var result = returnedInstance.Single(); Assert.AreSame(instanceSuperClassB, result); }
public async Task GivenPipeOnSuperClass_WhenResolvingToInterface_ItShouldReturnSuperType() { // pre-arrange var instanceClassA = new TestClassA(); var instanceSuperClassB = new TestSuperClassB(); // arrange var builder = new SemanticBuilder(); builder.InstallPipe<TestClassA, IEnumerable<TestSuperClassB>>( (@as, broker) => { Assert.AreSame(instanceClassA, @as); return new[] { instanceSuperClassB }; }); var semanticBroker = builder.CreateBroker(); // act var returnedInstance = await semanticBroker.On(instanceClassA).Output<IEnumerable<ITestInterface>>(); // assert var result = returnedInstance.Single(); Assert.AreSame(instanceSuperClassB, result); }