public void GetDependencies() { var advice1 = ObjectMother.GetAdvice(name: "1"); var advice2 = ObjectMother.GetAdvice(name: "2"); var advice3 = ObjectMother.GetAdvice(name: "3"); var orderingProviderMock1 = MockRepository.GenerateStrictMock <IAdviceOrderingProvider>(); var orderingProviderMock2 = MockRepository.GenerateStrictMock <IAdviceOrderingProvider>(); var orderingMock1 = MockRepository.GenerateStrictMock <IOrdering>(); var orderingMock2 = MockRepository.GenerateStrictMock <IOrdering>(); var orderingMock3 = MockRepository.GenerateStrictMock <IOrdering>(); orderingProviderMock1.Expect(x => x.GetOrderings()).Return(new[] { orderingMock1, orderingMock2 }.AsOneTime()); orderingProviderMock2.Expect(x => x.GetOrderings()).Return(new[] { orderingMock3 }.AsOneTime()); var provider = new AdviceDependencyProvider(new[] { orderingProviderMock1, orderingProviderMock2 }); orderingMock1.Expect(x => x.DependVisit(provider, advice1, advice2)).Return(false); orderingMock1.Expect(x => x.DependVisit(provider, advice2, advice1)).Return(true); orderingMock1.Expect(x => x.DependVisit(provider, advice2, advice3)).Return(false); orderingMock1.Expect(x => x.DependVisit(provider, advice3, advice2)).Return(false); orderingMock1.Expect(x => x.DependVisit(provider, advice1, advice3)).Return(false); orderingMock1.Expect(x => x.DependVisit(provider, advice3, advice1)).Return(false); orderingMock2.Expect(x => x.DependVisit(provider, advice1, advice2)).Return(false); orderingMock2.Expect(x => x.DependVisit(provider, advice2, advice1)).Return(false); orderingMock2.Expect(x => x.DependVisit(provider, advice2, advice3)).Return(false); orderingMock2.Expect(x => x.DependVisit(provider, advice3, advice2)).Return(false); orderingMock2.Expect(x => x.DependVisit(provider, advice1, advice3)).Return(true); orderingMock2.Expect(x => x.DependVisit(provider, advice3, advice1)).Return(false); orderingMock3.Expect(x => x.DependVisit(provider, advice1, advice2)).Return(false); orderingMock3.Expect(x => x.DependVisit(provider, advice2, advice1)).Return(false); orderingMock3.Expect(x => x.DependVisit(provider, advice2, advice3)).Return(true); orderingMock3.Expect(x => x.DependVisit(provider, advice3, advice2)).Return(false); orderingMock3.Expect(x => x.DependVisit(provider, advice1, advice3)).Return(false); orderingMock3.Expect(x => x.DependVisit(provider, advice3, advice1)).Return(false); var result = provider.GetDependencies(new[] { advice1, advice2, advice3 }).ToArray(); orderingProviderMock1.VerifyAllExpectations(); orderingProviderMock2.VerifyAllExpectations(); orderingMock1.VerifyAllExpectations(); orderingMock2.VerifyAllExpectations(); orderingMock3.VerifyAllExpectations(); var dependency1 = Tuple.Create(advice2, advice1); var dependency2 = Tuple.Create(advice1, advice3); var dependency3 = Tuple.Create(advice2, advice3); Assert.That(result, Is.EquivalentTo(new[] { dependency1, dependency2, dependency3 })); }
public void GetDependencies_HashSet() { var advice1 = ObjectMother.GetAdvice(name: "1"); var advice2 = ObjectMother.GetAdvice(name: "2"); var orderingProviderMock = MockRepository.GenerateStrictMock <IAdviceOrderingProvider> (); var orderingMock1 = MockRepository.GenerateStrictMock <IOrdering>(); var orderingMock2 = MockRepository.GenerateStrictMock <IOrdering>(); orderingProviderMock.Expect(x => x.GetOrderings()).Return(new[] { orderingMock1, orderingMock2 }); var provider = new AdviceDependencyProvider(new[] { orderingProviderMock }); orderingMock1.Expect(x => x.DependVisit(provider, advice1, advice2)).Return(true); orderingMock1.Expect(x => x.DependVisit(provider, advice2, advice1)).Return(false); orderingMock2.Expect(x => x.DependVisit(provider, advice1, advice2)).Return(true); orderingMock2.Expect(x => x.DependVisit(provider, advice2, advice1)).Return(false); var result = provider.GetDependencies(new[] { advice1, advice2 }).ToArray(); Assert.That(result, Has.Length.EqualTo(1)); }