public void Get_WithValidArguments_ReturnsExodataResolverResults() { var maxLength = new ExodataDeclaration<int>(7); var resolver = new StandardExodataResolver(); resolver.Bind(maxLength) .For<string>() .To(42); ExodataDeclaration.SetResolver(resolver); var value = maxLength.For<string>(); Assert.AreEqual(42, value); }
public void Get_WithNoExodataResolver_ReturnsDefault() { var maxLength = new ExodataDeclaration<int>(7); var value = maxLength.For<string>(); Assert.AreEqual(7, value); }
public void Get_WhenWithNoDefault_ThrowsException() { var maxLength = new ExodataDeclaration<int>(); Assert.Throws<InvalidOperationException>(() => maxLength.Get()); }
public void Get_OnGenericExodataWithDeclarationSubjectAndMember_ProvidesAllArgumentsToResolver() { var maxLength = new ExodataDeclaration<int>(7); string subject = "Hello, World!"; Expression<Func<string, object>> expression = x => x.Length; var member = expression.ExtractMemberInfoForExodata<string>(); var resolver = MockRepository.GenerateMock<IExodataResolver>(); resolver.Expect(x => x.TryResolve<int, object, string>(null)) .Callback<IExodataRequest<int, object, string>>(r => r.Symbol == maxLength && r.Context == Maybe<object>.NoValue && r.Subject == subject && r.Member == member) .Return(42.ToMaybe()); ExodataDeclaration.SetResolver(resolver); maxLength.For(subject, expression); resolver.VerifyAllExpectations(); }
public void Get_OnGenericExodataWithDeclaration_ProvidesAllArgumentsToResolver() { var maxLength = new ExodataDeclaration<int>(7); var resolver = MockRepository.GenerateMock<IExodataResolver>(); resolver.Expect(x => x.TryResolve<int, object, string>(null)) .Callback<IExodataRequest<int, object, string>>(r => r.Symbol == maxLength && r.Context == Maybe<object>.NoValue && r.Subject == Maybe<string>.NoValue && r.Member == null) .Return(42.ToMaybe()); ExodataDeclaration.SetResolver(resolver); maxLength.For<string>(); resolver.VerifyAllExpectations(); }
public void Get_WithNoExodataResolver_UsesResolverFromIoc() { var maxLength = new ExodataDeclaration<int>(7); var exodataResolver = new StandardExodataResolver(); exodataResolver.Bind(maxLength) .For<string>() .To(42); Ioc.SetDependencyResolver(new DependencyResolver(symbol => symbol.ToMaybe().OfType<IDependencySymbol>().Where(x => x.DependencyType == typeof(IExodataResolver)).Select(x => (object)exodataResolver))); var value = maxLength.For<string>(); Assert.AreEqual(42, value); }