예제 #1
0
    public async Task Flush_FlushesUnderlyingStream(bool async)
    {
        var monitoredStream = new InstrumentedStream(this.underlyingStream);
        int flushed         = 0;

        monitoredStream.DidFlush += (s, e) => flushed++;

        const int bufferSize      = 4;
        var       substreamBuffer = this.GetRandomBuffer(bufferSize);
        var       substream       = monitoredStream.WriteSubstream(64);

        await this.WriteSyncOrAsync(substream, async, substreamBuffer, 0, substreamBuffer.Length, this.TimeoutToken);

        Assert.Equal(0, flushed);
        await this.FlushSyncOrAsync(substream, async);

        Assert.Equal(1, flushed);
    }
예제 #2
0
    public async Task Dispose_FlushesFinalBytes(bool async)
    {
        var monitoredStream = new InstrumentedStream(this.underlyingStream);
        int lastOperation   = 0;

        monitoredStream.DidWrite       += (s, e) => lastOperation = 1;
        monitoredStream.DidWriteMemory += (s, e) => lastOperation = 1;
        monitoredStream.DidWriteSpan   += (s, e) => lastOperation = 1;
        monitoredStream.DidWriteByte   += (s, e) => lastOperation = 1;
        monitoredStream.DidFlush       += (s, e) => lastOperation = 2;

        const int bufferSize      = 64;
        var       substream       = monitoredStream.WriteSubstream(bufferSize);
        var       substreamBuffer = this.GetRandomBuffer(256);

        await this.DisposeSyncOrAsync(substream, async);

        Assert.Equal(2, lastOperation);
    }