public void WithTypeTrace() { var tpp = new TraceParameterProvider(); tpp.For <IEmailer>() .With <IEmail>() .Trace(e => e.From) .Trace(e => e.To); var builders = tpp.Builders.ToArray(); Assert.That(builders.Length, Is.EqualTo(2)); Assert.That(builders[0].Alias, Is.EqualTo("From")); ValidateValue(builders[0].Values.First(), "From", null, true); Assert.That(builders[1].Alias, Is.EqualTo("To")); ValidateValue(builders[1].Values.First(), "To", null, true); }
public void AndExpressionWithNameAlternateSyntax() { var tpp = new TraceParameterProvider(); tpp.For <IEmailer>() .With <IEmail>() .Trace("email", e => e.From, e => e.To) .EndWith(); var builders = tpp.Builders.ToArray(); Assert.That(builders.Length, Is.EqualTo(1)); Assert.That(builders[0].Alias, Is.EqualTo("email")); var values = builders[0].Values.ToArray(); ValidateValue(values[0], "From", "email", true); ValidateValue(values[1], "To", "email", true); }
public void AndExpressionAlternateSyntaxWithRename() { var tpp = new TraceParameterProvider(); tpp.For <IEmailer>() .With <IEmail>() .Trace(e => e.From, e => e.To).As("Sender", "Recipient") .TogetherAs("metadata") .EndWith(); var builders = tpp.Builders.ToArray(); Assert.That(builders.Length, Is.EqualTo(1)); Assert.That(builders[0].Alias, Is.EqualTo("metadata")); var values = builders[0].Values.ToArray(); ValidateValue(values[0], "Sender", null, true); ValidateValue(values[1], "Recipient", null, true); }
public void AndTracesAs() { var tpp = new TraceParameterProvider(); tpp.For <IEmailer>() .With <IEmail>() .Trace(email => email.From).As("Sender") .And(email => email.To).As("Recipient") .EndWith(); var builders = tpp.Builders.ToArray(); Assert.That(builders.Length, Is.EqualTo(1)); Assert.That(builders[0].Alias, Is.EqualTo("Sender")); var values = builders[0].Values.ToArray(); ValidateValue(values[0], "Sender", null, true); ValidateValue(values[1], "Recipient", null, true); }
public void IgnoreParameterByType() { var tpp = new TraceParameterProvider(); tpp.For <IEmailer>().Ignore <IEmail>(); var proxy = (IEmailer) new TypeImplementer(typeof(IEmailer), tpp).EventSource; EnableLogging(proxy); proxy.Send(new EMail("from", "to", "subject", "body", new byte[][] { new byte[] { 1 } }), DateTime.Parse("1/1/2000")); // look at the events again var events = _listener.Events.ToArray(); Assert.AreEqual(1, events.Length); var payload = events[0].Payload.Select(o => o.ToString()).ToArray(); Assert.AreEqual(1, payload.Length); Assert.That(payload.Contains("1/1/2000 12:00:00 AM")); }
public void TestEverythingTogether() { var tpp = new TraceParameterProvider(); tpp .For <IEmailer>(m => m.Send(Any <IEmail> .Value, Any <DateTime> .Value)) .With <IEmail>() .Trace(e => e.From).As("sender") .Trace(e => e.To).As("recipient") .Trace(e => e.Subject).As("s") .And(e => e.Body).As("b") .TogetherAs("message") .Trace(e => String.Join("/", e.Attachments.Select(Convert.ToBase64String).ToArray())) .As("attachments") .EndWith() .Trace("when") .ForAnything() .AddContext("context", () => "testing"); var proxy = (IEmailer) new TypeImplementer(typeof(IEmailer), tpp).EventSource; EnableLogging(proxy); proxy.Send(new EMail("from", "to", "subject", "body", new byte[][] { new byte[] { 1 } }), DateTime.Parse("1/1/2000")); // look at the events again var events = _listener.Events.ToArray(); Assert.AreEqual(1, events.Length); var payload = events[0].Payload.Select(o => o.ToString()).ToArray(); Assert.AreEqual(6, payload.Length); Assert.That(payload[0], Is.EqualTo("from")); Assert.That(payload[1], Is.EqualTo("to")); Assert.That(payload[2], Is.EqualTo("{\"s\":\"subject\",\"b\":\"body\"}")); Assert.That(payload[3], Is.EqualTo("AQ==")); Assert.That(payload[4], Is.EqualTo("2000-01-01T00:00:00")); Assert.That(payload[5], Is.EqualTo("testing")); }
public void TraceOverridesDefault() { // specify how to trace an email object var tpp = new TraceParameterProvider(); tpp.For <IEmailer>().With <IEmail>().Trace(e => e.From); var proxy = (IEmailer) new TypeImplementer(typeof(IEmailer), tpp).EventSource; EnableLogging(proxy); proxy.Send(new EMail("from", "to", "subject", "body", new byte[][] { new byte[] { 1 } }), DateTime.Parse("1/1/2000")); // look at the events again var events = _listener.Events.ToArray(); Assert.AreEqual(1, events.Length); var payload = events[0].Payload.Select(o => o.ToString()).ToArray(); Assert.AreEqual(2, payload.Length); Assert.That(payload, Contains.Item("from")); Assert.That(payload, Contains.Item("2000-01-01T00:00:00")); }
public void TestEverythingTogether() { var tpp = new TraceParameterProvider(); tpp .For<IEmailer>(m => m.Send(Any<IEmail>.Value, Any<DateTime>.Value)) .With<IEmail>() .Trace(e => e.From).As("sender") .Trace(e => e.To).As("recipient") .Trace(e => e.Subject).As("s") .And(e => e.Body).As("b") .TogetherAs("message") .Trace(e => String.Join("/", e.Attachments.Select(Convert.ToBase64String).ToArray())) .As("attachments") .EndWith() .Trace("when") .ForAnything() .AddContext("context", () => "testing"); var proxy = (IEmailer)new TypeImplementer(typeof(IEmailer), tpp).EventSource; EnableLogging(proxy); proxy.Send(new EMail("from", "to", "subject", "body", new byte[][] { new byte[] { 1 } }), DateTime.Parse("1/1/2000")); // look at the events again var events = _listener.Events.ToArray(); Assert.AreEqual(1, events.Length); var payload = events[0].Payload.Select(o => o.ToString()).ToArray(); Assert.AreEqual(6, payload.Length); Assert.That(payload[0] == ("from")); Assert.That(payload[1] == ("to")); Assert.That(payload[2] == ("{\"s\":\"subject\",\"b\":\"body\"}")); Assert.That(payload[3] == ("AQ==")); Assert.That(payload[4] == ("1/1/2000 12:00:00 AM")); Assert.That(payload[5] == ("testing")); }
public void WithChained() { var tpp = new TraceParameterProvider(); tpp.For <IEmailer>() .With <IEmail>("email") .Trace(e => e.From) .Trace(e => e.To) .With <OtherClass>() .Trace(c => c.ToString()).As("other"); var builders = tpp.Builders.ToArray(); Assert.That(builders.Length, Is.EqualTo(3)); Assert.That(builders[0].Alias, Is.EqualTo("From")); ValidateValue(builders[0].Values.First(), "From", "email", true); Assert.That(builders[0].Values.First().ParameterType, Is.EqualTo(typeof(IEmail))); Assert.That(builders[1].Alias, Is.EqualTo("To")); Assert.That(builders[1].Values.First().ParameterType, Is.EqualTo(typeof(IEmail))); ValidateValue(builders[1].Values.First(), "To", "email", true); Assert.That(builders[2].Alias, Is.EqualTo("other")); Assert.That(builders[2].Values.First().ParameterType, Is.EqualTo(typeof(OtherClass))); }
public void TwoNameTraces() { var tpp = new TraceParameterProvider(); tpp.For<IEmailer>() .Trace("email") .Trace("when"); var builders = tpp.Builders.ToArray(); Assert.That(builders.Length, Is.EqualTo(2)); ValidateValue(builders[0].Values.First(), "email", "email", false); ValidateValue(builders[1].Values.First(), "when", "when", false); }
public void AndTracesTogetherAs() { var tpp = new TraceParameterProvider(); tpp.For<IEmailer>() .With<IEmail>() .Trace(email => email.From) .And(email => email.To) .As("Sender", "Recipient") .TogetherAs("Metadata") .EndWith(); var builders = tpp.Builders.ToArray(); Assert.That(builders.Length, Is.EqualTo(1)); Assert.That(builders[0].Alias, Is.EqualTo("Metadata")); var values = builders[0].Values.ToArray(); ValidateValue(values[0], "Sender", null, true); ValidateValue(values[1], "Recipient", null, true); }
public void AndExpressionAlternateSyntaxWithRename() { var tpp = new TraceParameterProvider(); tpp.For<IEmailer>() .With<IEmail>() .Trace(e => e.From, e => e.To).As("Sender", "Recipient") .TogetherAs("metadata") .EndWith(); var builders = tpp.Builders.ToArray(); Assert.That(builders.Length, Is.EqualTo(1)); Assert.That(builders[0].Alias, Is.EqualTo("metadata")); var values = builders[0].Values.ToArray(); ValidateValue(values[0], "Sender", null, true); ValidateValue(values[1], "Recipient", null, true); }
public void AndNameAlternateSyntax() { var tpp = new TraceParameterProvider(); tpp.For<IEmailer>() .Trace("email", "when"); var builders = tpp.Builders.ToArray(); Assert.That(builders.Length, Is.EqualTo(1)); Assert.That(builders[0].Alias, Is.EqualTo("email")); var values = builders[0].Values.ToArray(); ValidateValue(values[0], "email", "email", false); ValidateValue(values[1], "when", "when", false); }
public void AndExpressionWithNameAlternateSyntax() { var tpp = new TraceParameterProvider(); tpp.For<IEmailer>() .With<IEmail>() .Trace("email", e => e.From, e => e.To) .EndWith(); var builders = tpp.Builders.ToArray(); Assert.That(builders.Length, Is.EqualTo(1)); Assert.That(builders[0].Alias, Is.EqualTo("email")); var values = builders[0].Values.ToArray(); ValidateValue(values[0], "From", "email", true); ValidateValue(values[1], "To", "email", true); }
public void WithTypeAndNameTrace() { var tpp = new TraceParameterProvider(); tpp.For<IEmailer>() .With<IEmail>("email") .Trace(e => e.From) .Trace(e => e.To); var builders = tpp.Builders.ToArray(); Assert.That(builders.Length, Is.EqualTo(2)); Assert.That(builders[0].Alias, Is.EqualTo("From")); ValidateValue(builders[0].Values.First(), "From", "email", true); Assert.That(builders[1].Alias, Is.EqualTo("To")); ValidateValue(builders[1].Values.First(), "To", "email", true); }
public void WithChained() { var tpp = new TraceParameterProvider(); tpp.For<IEmailer>() .With<IEmail>("email") .Trace(e => e.From) .Trace(e => e.To) .With<OtherClass>() .Trace(c => c.ToString()).As("other"); var builders = tpp.Builders.ToArray(); Assert.That(builders.Length, Is.EqualTo(3)); Assert.That(builders[0].Alias, Is.EqualTo("From")); ValidateValue(builders[0].Values.First(), "From", "email", true); Assert.That(builders[0].Values.First().ParameterType, Is.EqualTo(typeof(IEmail))); Assert.That(builders[1].Alias, Is.EqualTo("To")); Assert.That(builders[1].Values.First().ParameterType, Is.EqualTo(typeof(IEmail))); ValidateValue(builders[1].Values.First(), "To", "email", true); Assert.That(builders[2].Alias, Is.EqualTo("other")); Assert.That(builders[2].Values.First().ParameterType, Is.EqualTo(typeof(OtherClass))); }
public void TwoTracesRenamed() { var tpp = new TraceParameterProvider(); tpp.For<IEmailer>() .With<IEmail>() .Trace(email => email.From).As("Sender") .Trace(email => email.To).As("Recipient") .EndWith(); var builders = tpp.Builders.ToArray(); Assert.That(builders.Length, Is.EqualTo(2)); ValidateValue(builders[0].Values.First(), "Sender", null, true); ValidateValue(builders[1].Values.First(), "Recipient", null, true); }
public void IgnoreParameterByType() { var tpp = new TraceParameterProvider(); tpp.For<IEmailer>().Ignore<IEmail>(); var proxy = (IEmailer)new TypeImplementer(typeof(IEmailer), tpp).EventSource; EnableLogging(proxy); proxy.Send(new EMail("from", "to", "subject", "body", new byte[][] { new byte[] { 1 } }), DateTime.Parse("1/1/2000")); // look at the events again var events = _listener.Events.ToArray(); Assert.AreEqual(1, events.Length); var payload = events[0].Payload.Select(o => o.ToString()).ToArray(); Assert.AreEqual(1, payload.Length); Assert.That(payload.Contains("1/1/2000 12:00:00 AM")); }