private void AssertOptionList(bool withNullValue, TestEnum?selectedValue, bool isDisabled, bool withStyle, bool autoPostBack)
        {
            var renderer = new BocEnumValueQuirksModeRenderer(_resourceUrlFactory);

            renderer.Render(new BocEnumValueRenderingContext(HttpContext, Html.Writer, _enumValue));

            var document = Html.GetResultDocument();
            var div      = GetAssertedSpan(document, false, false, false, renderer);

            var select = Html.GetAssertedChildElement(div, "select", 0);

            Html.AssertAttribute(select, "id", c_valueName);
            Html.AssertAttribute(select, "name", c_valueName);

            if (withStyle)
            {
                Html.AssertStyleAttribute(select, "width", "100%");
                Html.AssertStyleAttribute(select, "height", "100%");
            }
            else
            {
                Html.AssertStyleAttribute(select, "width", "150pt");
            }

            if (isDisabled)
            {
                Html.AssertAttribute(select, "disabled", "disabled");
            }

            if (withNullValue)
            {
                AssertNullOption(select, !selectedValue.HasValue);
            }

            if (autoPostBack)
            {
                Html.AssertAttribute(select, "onchange", string.Format("javascript:__doPostBack('{0}','')", c_valueName));
            }

            int index = withNullValue ? 1 : 0;

            foreach (TestEnum value in Enum.GetValues(typeof(TestEnum)))
            {
                AssertOption(select, value.ToString(), value.ToString(), index, selectedValue == value);
                ++index;
            }
        }
        private void AssertLabel(TestEnum?value, bool withStyle)
        {
            var renderer = new BocEnumValueQuirksModeRenderer(_resourceUrlFactory);

            renderer.Render(new BocEnumValueRenderingContext(HttpContext, Html.Writer, _enumValue));

            var     document = Html.GetResultDocument();
            XmlNode div      = GetAssertedSpan(document, true, false, false, renderer);

            var span = Html.GetAssertedChildElement(div, "span", 0);

            Html.AssertAttribute(span, "id", c_valueName);

            if (withStyle)
            {
                Html.AssertStyleAttribute(span, "width", _width.ToString());
                Html.AssertStyleAttribute(span, "height", "100%");
            }

            Html.AssertTextNode(span, value.HasValue ? value.Value.ToString() : HtmlHelper.WhiteSpace, 0);
        }
        private XmlNode GetAssertedSpan(XmlDocument document, bool isReadOnly, bool isDisabled, bool withStyle, BocEnumValueQuirksModeRenderer renderer)
        {
            var    div      = Html.GetAssertedChildElement(document, "span", 0);
            string cssClass = _enumValue.CssClass;

            if (string.IsNullOrEmpty(cssClass))
            {
                cssClass = _enumValue.Attributes["class"];
            }
            if (string.IsNullOrEmpty(cssClass))
            {
                cssClass = renderer.CssClassBase;
            }

            Html.AssertAttribute(div, "id", "MyEnumValue");
            Html.AssertAttribute(div, "class", cssClass, HtmlHelperBase.AttributeValueCompareMode.Contains);
            if (isReadOnly)
            {
                Html.AssertAttribute(div, "class", renderer.CssClassReadOnly, HtmlHelperBase.AttributeValueCompareMode.Contains);
            }
            if (isDisabled)
            {
                Html.AssertAttribute(div, "class", renderer.CssClassDisabled, HtmlHelperBase.AttributeValueCompareMode.Contains);
            }

            if (withStyle)
            {
                Html.AssertStyleAttribute(div, "height", _height.ToString());
                Html.AssertStyleAttribute(div, "width", _width.ToString());
            }

            return(div);
        }