File: Windows\Win32\System\Com\ComManagedStreamTests.cs
Web Access
Project: src\src\System.Private.Windows.Core\tests\System.Private.Windows.Core.Tests\System.Private.Windows.Core.Tests.csproj (System.Private.Windows.Core.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace Windows.Win32.System.Com.Tests;
 
public class ComManagedStreamTests
{
    [Fact]
    public void Ctor_NonSeekableStream_WrapsWithSeekableStreamAtPositionZero()
    {
        using TestStream nonSeekableStream = new(canSeek: false, numBytes: 4);
        ComManagedStream comManagedStream = new(nonSeekableStream, makeSeekable: true);
        comManagedStream.GetDataStream().CanSeek.Should().Be(true);
        comManagedStream.GetDataStream().Position.Should().Be(0);
    }
 
    [Fact]
    public void Ctor_SeekableStream_UsesOriginalStream()
    {
        using TestStream seekableStream = new(canSeek: true, numBytes: 4);
        ComManagedStream comManagedStream = new(seekableStream, makeSeekable: true);
        comManagedStream.GetDataStream().Should().BeSameAs(seekableStream);
    }
 
    private class TestStream : MemoryStream
    {
        private readonly bool _canSeek;
 
        public override bool CanSeek => _canSeek;
 
        public TestStream(bool canSeek, int numBytes) : base(new byte[numBytes])
        {
            _canSeek = canSeek;
        }
    }
}