Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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"));
        }
Beispiel #6
0
        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"));
        }
Beispiel #7
0
        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"));
		}
Beispiel #9
0
        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"));
		}