using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using NUnit.Framework; using Rhino.Mocks; //[assembly: InternalsVisibleTo("Rhino.Mocks")] //[assembly: InternalsVisibleTo("Castle.DynamicProxy")] [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] namespace SpielWiese { internal interface IReportSender { void Send(string report); } internal class UnterTest :IEnumerable { private readonly IReportSender reporter; private readonly List messages = new List(); public UnterTest(IReportSender reporter) { this.reporter = reporter; } public void Add(string msg) { messages.Add(msg); } public void BuildMessageReport() { reporter.Send(messages.First()); messages.RemoveAt(0); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public IEnumerator GetEnumerator() { return messages.GetEnumerator(); } } [TestFixture] public class TestSomething { [Test(Description = "Expect that the messages are one by one given to the message-sender")] public void ExpectReportsSend() { var mockRepo = new MockRepository(); var senderMock = mockRepo.StrictMock(); senderMock.Send("first"); senderMock.Send("second"); senderMock.Send("third"); mockRepo.ReplayAll(); var toTests = new UnterTest(senderMock) {"first", "second","third"}; toTests.BuildMessageReport(); toTests.BuildMessageReport(); toTests.BuildMessageReport(); mockRepo.VerifyAll(); } } }