예제 #1
0
            public void ShouldThrowIfCakeScriptIsNull()
            {
                // Given, When
                var exception = Record.Exception(() => CakeScriptSerializer.Serialize(_fixture.Writer, null)) as ArgumentNullException;

                // Then
                Assert.NotNull(exception);
                Assert.Equal("script", exception.ParamName);
            }
예제 #2
0
            public void ShouldThrowIfWriterIsNull()
            {
                // Given, When
                var exception = Record.Exception(() => CakeScriptSerializer.Serialize(null, CakeScript.Empty)) as ArgumentNullException;

                // Then
                Assert.NotNull(exception);
                Assert.Equal("writer", exception.ParamName);
            }
예제 #3
0
            public void ShouldSerializeAndSerializeUtf8TestData(string resource)
            {
                // Given
                var expected = _fixture.CreateCakeScriptFromResource(resource, 0, 0);

                // When
                CakeScriptSerializer.Serialize(_fixture.Writer, expected);
                _fixture.ResetStreamPosition();
                var actual = CakeScriptSerializer.Deserialize(_fixture.Reader);

                // Then
                Assert.NotNull(actual);
                Assert.Equal(expected.Source, actual.Source);
                Assert.Equal(expected.References, actual.References);
                Assert.Equal(expected.Usings, actual.Usings);
            }
예제 #4
0
            public void ShouldSerializeAndSerializeEmpty()
            {
                // Given
                var expected = CakeScript.Empty;

                // When
                CakeScriptSerializer.Serialize(_fixture.Writer, expected, Constants.Protocol.Latest);
                _fixture.ResetStreamPosition();
                var actual = CakeScriptSerializer.Deserialize(_fixture.Reader);

                // Then
                Assert.NotNull(actual);
                Assert.Equal(expected.Source, actual.Source);
                Assert.Equal(expected.References, actual.References);
                Assert.Equal(expected.Usings, actual.Usings);
            }
예제 #5
0
        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();
                            }
                        }
            }
        }