bool ISerialPortToStream.Initialize(int baudRate, int parity, int dataBits, int stopBits, int flowValue)
            {
                var spy = new SpyStream();

                spy.OnWrite += (o, args) => OnWrite(o, args);
                Stream       = spy;
                return(true);
            }
        public async Task Deserialize_Throws_WhenReadingEmptyStream()
        {
            using (var stream = new SpyStream())
            {
                _streamProviderMock.Setup(x => x.GetStreamForRead())
                .Returns(Task.FromResult((Stream)stream));

                var validation = new Func <Task>(() => _serializer.Deserialize());

                await Assert.ThrowsAsync <InvalidDataException>(validation);
            }
        }
        public async Task Serialize_WritesIntoSettingsStream()
        {
            using (var stream = new SpyStream())
            {
                _streamProviderMock.Setup(x => x.GetEmptyStreamForWrite())
                .Returns(Task.FromResult((Stream)stream));

                await _serializer.Serialize(GetSampleSettings());

                Assert.Equal(ExpectedSerializedSampleSettings(), stream.ToString());
            }
        }
        public async Task Deserialize_ReturnsSettingsFromStream()
        {
            using (var stream = new SpyStream(ExpectedSerializedSampleSettings()))
            {
                _streamProviderMock.Setup(x => x.GetStreamForRead())
                .Returns(Task.FromResult((Stream)stream));

                var settings = await _serializer.Deserialize();

                Assert.Equal(1, settings.Get <int>("number"));
                Assert.Equal(false, settings.Get <bool>("condition"));
                Assert.Equal(2.05, settings.Get <double>("double number"));
                Assert.Equal("hello world!", settings.Get <string>("text"));
            }
        }
 bool ISerialPortToStream.Initialize(int baudRate, int parity, int dataBits, int stopBits, int flowValue)
 {
     var spy = new SpyStream();
     spy.OnWrite += (o, args) => OnWrite(o, args);
     Stream = spy;
     return true;
 }