public void Flush()
    {
        var mockedUnderlyingStream = new Mock <Stream>(MockBehavior.Strict);

        mockedUnderlyingStream.Setup(s => s.Flush());
        var monitoringStream = new MonitoringStream(mockedUnderlyingStream.Object);

        monitoringStream.Flush();
        mockedUnderlyingStream.VerifyAll();
    }
    public void Flush()
    {
        var mockedUnderlyingStream = new Mock <Stream>(MockBehavior.Strict);

        mockedUnderlyingStream.Setup(s => s.Flush());
        var  monitoringStream = new MonitoringStream(mockedUnderlyingStream.Object);
        bool didFlushRaised   = false;

        monitoringStream.DidFlush += (s, e) => didFlushRaised = true;
        monitoringStream.Flush();
        Assert.True(didFlushRaised);
        mockedUnderlyingStream.VerifyAll();
    }