public void CanStartHost()
        {
            using (var subject = new TsHost(30050, 30100, 3000))
            {
                Action action = () => subject.Start();

                action.Should().NotThrow();
            }
        }
        public void CanReadTsFile()
        {
            var fileName = Path.Combine(this.BasePath, "TestData\\Test.ts");

            using (var subject = new TsHost(30050, 30100, 3000))
            {
                var result = subject.ReadFile(fileName);

                result.Statements.Should().NotBeNull();
                result.Statements.Count().Should().Be(1);
            }
        }
        public void CanParseJson()
        {
            var payload = this.ReadTestJsonFile();

            using (var subject = new TsHost(30050, 30100, 3000))
            {
                var result = subject.Parse(payload, ScriptKind.JSON);

                result.Should().NotBeNull();
                result.Count().Should().Be(1);
            }
        }
        public void CanPrintTypescript()
        {
            var ast = this.GetTestAst();

            using (var subject = new TsHost(30050, 30100, 3000))
            {
                var result = subject.Print(ast.ToArray(), ScriptKind.TS);

                var expectedContent = this.ReadExpectedWriteFileOutput();

                result.Should().Be(expectedContent);
            }
        }
        public void CanParseTypescript()
        {
            var fileName = Path.Combine(this.BasePath, "TestData\\Test.ts");

            var payload = File.ReadAllText(fileName);

            using (var subject = new TsHost(30050, 30100, 3000))
            {
                var result = subject.Parse(payload, ScriptKind.TS);

                result.Should().NotBeNull();
                result.Count().Should().Be(1);
            }
        }
        public void CanWriteTsFile()
        {
            var outputPath = Path.Combine(this.BasePath, "TestOutput");
            var fileName   = "WriteTestOutput.ts";
            var filePath   = Path.Combine(outputPath, fileName);

            if (File.Exists(filePath))
            {
                File.Delete(filePath);
            }

            if (!Directory.Exists(outputPath))
            {
                Directory.CreateDirectory(outputPath);
            }

            var ast = this.GetTestAst();

            using (var subject = new TsHost(30050, 30100, 3000))
            {
                var fileInput = new TsFile()
                {
                    FileName   = fileName,
                    Path       = filePath,
                    Statements = ast
                };

                subject.WriteFile(fileInput);
            }

            File.Exists(filePath).Should().BeTrue("Output file must exist.");

            var expectedContent = this.ReadExpectedWriteFileOutput();

            var content = File.ReadAllText(filePath);

            content.Should().Be(expectedContent);
        }