示例#1
0
        public void OpenReadStream_ReturnsStreamWhoseDisposalReleasesTheJSObject()
        {
            // Arrange: JS runtime that always returns a specific mock IJSStreamReference
            var jsRuntime         = new Mock <IJSRuntime>(MockBehavior.Strict);
            var jsStreamReference = new Mock <IJSStreamReference>();

            jsRuntime.Setup(x => x.InvokeAsync <IJSStreamReference>(It.IsAny <string>(), It.IsAny <CancellationToken>(), It.IsAny <object[]>()))
            .Returns(ValueTask.FromResult(jsStreamReference.Object));

            // Arrange: InputFile
            var inputFile = new InputFile {
                JSRuntime = jsRuntime.Object
            };
            var file = new BrowserFile {
                Owner = inputFile, Size = 5
            };
            var stream = file.OpenReadStream();

            // Assert 1: IJSStreamReference isn't disposed yet
            jsStreamReference.Verify(x => x.DisposeAsync(), Times.Never);

            // Act
            _ = stream.DisposeAsync();

            // Assert: IJSStreamReference is disposed now
            jsStreamReference.Verify(x => x.DisposeAsync());
        }
示例#2
0
        public void OpenReadStream_ThrowsIfFileSizeIsLargerThanAllowedSize()
        {
            // Arrange
            var file = new BrowserFile {
                Size = 100
            };

            // Act & Assert
            var ex = Assert.Throws <IOException>(() => file.OpenReadStream(80));

            Assert.Equal("Supplied file with size 100 bytes exceeds the maximum of 80 bytes.", ex.Message);
        }
示例#3
0
        public async Task OpenReadStream_ReturnsStreamWhoseDisposalReleasesTheJSObject_ToleratesDisposalException()
        {
            // Arrange: JS runtime that always returns a specific mock IJSStreamReference whose disposal throws
            var jsRuntime         = new Mock <IJSRuntime>(MockBehavior.Strict);
            var jsStreamReference = new Mock <IJSStreamReference>();

            jsRuntime.Setup(x => x.InvokeAsync <IJSStreamReference>(It.IsAny <string>(), It.IsAny <CancellationToken>(), It.IsAny <object[]>()))
            .Returns(ValueTask.FromResult(jsStreamReference.Object));
            jsStreamReference.Setup(x => x.DisposeAsync()).Throws(new InvalidTimeZoneException());

            // Arrange: InputFile
            var inputFile = new InputFile {
                JSRuntime = jsRuntime.Object
            };
            var file = new BrowserFile {
                Owner = inputFile, Size = 5
            };
            var stream = file.OpenReadStream();

            // Act/Assert. Not throwing is success here.
            await stream.DisposeAsync();
        }