public void ShouldSerializeAndSerializeFileChange() { // Given var expected = new FileChange { Buffer = "buffer", FileName = "fileName", FromDisk = true }; expected.LineChanges.Add(new LineChange { StartColumn = 1, EndColumn = 2, StartLine = 3, EndLine = 4, NewText = "5" }); // When FileChangeSerializer.Serialize(_fixture.Writer, expected); _fixture.ResetStreamPosition(); var actual = FileChangeSerializer.Deserialize(_fixture.Reader); // Then Assert.NotNull(actual); Assert.Equal(expected.Buffer, actual.Buffer); Assert.Equal(expected.FileName, actual.FileName); Assert.Equal(expected.FromDisk, actual.FromDisk); Assert.Equal(expected.LineChanges, actual.LineChanges); }
public void ShouldThrowIfCakeScriptIsNull() { // Given, When var exception = Record.Exception(() => FileChangeSerializer.Serialize(_fixture.Writer, null)) as ArgumentNullException; // Then Assert.NotNull(exception); Assert.Equal("fileChange", exception.ParamName); }
public void ShouldThrowIfWriterIsNull() { // Given, When var exception = Record.Exception(() => FileChangeSerializer.Serialize(null, FileChange.Empty)) as ArgumentNullException; // Then Assert.NotNull(exception); Assert.Equal("writer", exception.ParamName); }
private async Task RunAsync(CancellationToken cancellationToken) { using (var client = new TcpClient()) { _logger.LogDebug("Connecting to tcp server on port {port}", _port); await client.ConnectAsync(IPAddress.Loopback, _port); _logger.LogDebug("Connected"); using (var stream = client.GetStream()) using (var reader = new BinaryReader(stream)) using (var writer = new BinaryWriter(stream)) { while (!cancellationToken.IsCancellationRequested) { while (!stream.DataAvailable) { if (!client.Client.IsConnected()) { OnDisconnected?.Invoke(this, EventArgs.Empty); return; } await Task.Delay(10, cancellationToken); } // Request _logger.LogDebug("Received reqeust from client"); var fileChange = FileChangeSerializer.Deserialize(reader); var cakeScript = CakeScript.Empty; try { cakeScript = _service.Generate(fileChange); } catch (Exception e) { _logger.LogError(0, e, "Unhandled Exception while processing request."); } // Response _logger.LogDebug("Sending response to client"); CakeScriptSerializer.Serialize(writer, cakeScript); writer.Flush(); } } } }
public CakeScript Generate(FileChange fileChange) { _initializedEvent.WaitOne(); lock (_sendReceiveLock) { // Send _logger.LogDebug("Sending request to server"); FileChangeSerializer.Serialize(_writer, fileChange, Constants.Protocol.Latest); _writer.Flush(); while (!_stream.DataAvailable) { Task.Delay(10).Wait(); } // Receive _logger.LogDebug("Received response from server"); return(CakeScriptSerializer.Deserialize(_reader)); } }
public void ShouldSerializeNullLineChangeAsEmpty() { // Given var expected = new FileChange(); expected.LineChanges.Add(new LineChange { StartColumn = 1, EndColumn = 2, StartLine = 3, EndLine = 4, NewText = "5" }); expected.LineChanges.Add(null); expected.LineChanges.Add(new LineChange { StartColumn = 6, EndColumn = 7, StartLine = 8, EndLine = 9, NewText = "10" }); // When FileChangeSerializer.Serialize(_fixture.Writer, expected, Constants.Protocol.Latest); _fixture.ResetStreamPosition(); var actual = FileChangeSerializer.Deserialize(_fixture.Reader, out var version); // Then Assert.NotNull(actual); Assert.Equal(Constants.Protocol.V2, version); Assert.Equal(expected.LineChanges.ElementAt(0), actual.LineChanges.ElementAt(0)); Assert.Equal(new LineChange { NewText = string.Empty }, actual.LineChanges.ElementAt(1)); Assert.Equal(expected.LineChanges.ElementAt(2), actual.LineChanges.ElementAt(2)); }
public void ShouldSerializeNewLine(string lineEnding) { // Given var expected = new FileChange(); expected.LineChanges.Add(new LineChange { StartColumn = 0, EndColumn = 0, StartLine = 0, EndLine = 0, NewText = lineEnding }); // When FileChangeSerializer.Serialize(_fixture.Writer, expected, Constants.Protocol.Latest); _fixture.ResetStreamPosition(); var actual = FileChangeSerializer.Deserialize(_fixture.Reader, out var version); // Then Assert.NotNull(actual); Assert.Equal(Constants.Protocol.V2, version); Assert.Equal(expected.LineChanges.ElementAt(0), actual.LineChanges.ElementAt(0)); }