protected override void Render(HtmlTextWriter writer)
        {
            base.Render(writer);

            if (IotContext.TestSuiteState.MessageTestStates == null)
            {
                return;
            }

            writer.WriteLine("<h2>Verification Results</h2>");
            writer.WriteLine("<table class=\"grid\">");
            writer.WriteLine("<tr><th>State</th><th>Message Name</th><th>Bytes</th><th>Candidate Bytes</th></tr>");

            int totalItems  = 0;
            int passedItems = 0;

            foreach (MessageTestState item in IotContext.TestSuiteState.MessageTestStates.Values)
            {
                totalItems++;
                writer.WriteLine("<tr>");
                if (item.Result.HasValue)
                {
                    if (item.Result == true)
                    {
                        writer.WriteLine("<td><img src=\"Images\\passed.png\"></td>");
                    }
                    else
                    {
                        writer.WriteLine("<td><img src=\"Images\\failed.png\"></td>");
                    }
                }
                else
                {
                    writer.WriteLine("<td><img src=\"Images\\missing.png\"></td>");
                }
                writer.WriteLine("<td>" + item.MessageName + "</td>");
                if (item.Result.HasValue)
                {
                    if (item.Result == true)
                    {
                        writer.WriteLine("<td colspan=\"2\"></td>");
                        passedItems++;
                    }
                    else
                    {
                        writer.WriteLine("<td class=\"bytes\">" + RenderUtil.RenderByteArray(item.ReferenceBytes, item.DifferenceIndexes, 10) + "</td>");
                        writer.WriteLine("<td class=\"bytes\">" + RenderUtil.RenderByteArray(item.CandidateBytes, item.DifferenceIndexes, 10) + "</td>");
                    }
                }
                else
                {
                    writer.WriteLine("<td colspan=\"2\"></td>");
                }
            }
            writer.WriteLine("</table>");
        }
        protected override void Render(HtmlTextWriter writer)
        {
            base.Render(writer);

            writer.WriteLine("<h2>Reference Messages</h2>");
            writer.WriteLine("<div class=\"code\">");
            writer.WriteLine("<table class=\"grid\">");
            writer.WriteLine("<tr><th>Message Name</th><th>File Name</th><th width=\"300\">Content</th><th width=\"300\">Bytes</th></tr>");
            foreach (ReferenceMessage item in ReferenceMessageLoader.Current.ReferenceMessages.Values)
            {
                writer.WriteLine("<tr>");
                writer.WriteLine("<td>" + item.MessageName + "</td>");
                writer.WriteLine("<td>" + item.MessageFileName + "</td>");
                writer.WriteLine("<td nowrap>" + RenderUtil.FixedWrapString(item.StringValue, 60) + "</td>");
                writer.WriteLine("<td nowrap>" + RenderUtil.RenderByteArray(item.ByteValue, new List <int>(), 20) + "</td>");
                writer.WriteLine("</tr>");
            }
            writer.WriteLine("</table>");
            writer.WriteLine("</div>");
        }