public void TestInvalidJSON()
        {
            var ex = Assert.Throws <JsonHtmlException>(() =>
            {
                var document = JsonHtmlConverter.ConvertFromJson("dummy text");
            });

            Assert.Equal(JsonHtmlException.Error.InvalidJSONInput, ex.ErrorCode);
            Assert.Matches("dummy text", ex.Message);
        }
示例#2
0
        private static void Main(string[] args)
        {
            //TODO: have a class (provider) handle logging configuration (possibly from config file)
            var config        = new LoggingConfiguration();               //configuration for NLog starting here
            var consoleTarget = new ColoredConsoleTarget("consoleTarget") //output to console
            {
                Layout = @"${date:format=HH\:mm\:ss} ${level} ${message} ${exception}"
            };

            config.AddTarget(consoleTarget);

            var fileTarget = new FileTarget("fileTarget") //output to file
            {
                ArchiveOldFileOnStartup = true,
                FileName = "${basedir}/log.txt",
                Layout   = "${longdate} ${level} ${message} ${exception}",
            };

            config.AddTarget(fileTarget);
            config.AddRuleForAllLevels(consoleTarget); //output everything
            config.AddRuleForAllLevels(fileTarget);

            LogManager.Configuration = config;                  //initialize with configuration

            Logger logger = LogManager.GetLogger("Program");    //logger for current class

            var json = File.ReadAllText("input.json");          //read predefined JSON string (from file)
            var html = JsonHtmlConverter.ConvertFromJson(json); //parse and convert to Document

            logger.Debug($"{html}");

            using (var ms = new MemoryStream()) //only for log output (via string)
            {
                using (var sw = new StreamWriter(ms))
                {
                    html.Render(sw);
                }

                logger.Info($"Generated HTML:{Environment.NewLine}{Encoding.UTF8.GetString(ms.ToArray())}");
            }

            Console.ReadKey(); //don't quit immediately
        }
        public void TestNestedTag(string jsonInput)
        {
            var item = JsonHtmlConverter.ConvertFromJson(jsonInput);

            Assert.NotNull(item);
            Assert.IsType <Document>(item);
            Assert.Equal(2, ((Document)item).Children.Count);

            var doctype = ((Document)item).Children.First();

            Assert.IsType <Doctype>(doctype);

            var head = ((Document)item).Children.Last();

            Assert.IsType <Head>(head);

            Assert.Single(head.Children);
            var meta = head.Children.First();

            Assert.IsType <Meta>(meta);
            Assert.Matches("foo", meta.GetValue());
        }
        public void TestDoctypeAttributeValue(string jsonInput, string generatedHtml)
        {
            var document = JsonHtmlConverter.ConvertFromJson(jsonInput);

            Assert.NotNull(document);
            Assert.IsType <Document>(document);
            Assert.Single(((Document)document).Children);

            var doctype = ((Document)document).Children.First();

            Assert.IsType <Doctype>(doctype);

            string html;

            using (var ms = new MemoryStream())
            {
                using (var st = new StreamWriter(ms))
                {
                    document.Render(st);
                }
                html = Encoding.UTF8.GetString(ms.ToArray());
            }
            Assert.Equal(generatedHtml, html);
        }
        public void TestInvalidTag(string jsonInput, IHtmlItem htmlItem)
        {
            var item = JsonHtmlConverter.ConvertFromJson(jsonInput);

            Assert.Null(htmlItem);
        }