Exemplo n.º 1
0
        public void ColorValidLengthLongString()
        {
            HtmlColor hc;
            var       color  = "fffabc";
            var       result = HtmlColor.TryFromHex(color, out hc);

            Assert.IsTrue(result);
        }
Exemplo n.º 2
0
        public void ColorInvalidLengthString()
        {
            HtmlColor hc;
            var       color  = "abcd";
            var       result = HtmlColor.TryFromHex(color, out hc);

            Assert.IsFalse(result);
        }
Exemplo n.º 3
0
        public void ColorInvalidHexDigitString()
        {
            HtmlColor hc;
            var       color  = "BCDEFG";
            var       result = HtmlColor.TryFromHex(color, out hc);

            Assert.IsFalse(result);
        }
Exemplo n.º 4
0
        public void Color_with_leading_hashtag_can_be_parsed_by_try()
        {
            HtmlColor color;
            bool      result = HtmlColor.TryFromHex("#FF0000", out color);

            Assert.IsTrue(result);
            Assert.AreEqual(new HtmlColor(255, 0, 0), color);
        }
Exemplo n.º 5
0
        private bool ParseSingleValueHexColor(string color)
        {
            HtmlColor htmlColor;

            if (HtmlColor.TryFromHex(color, out htmlColor))
            {
                return(AddTerm(htmlColor));
            }
            return(false);
        }
Exemplo n.º 6
0
        public void Null_color_does_not_throw()
        {
            bool result = true;

            Assert.DoesNotThrow(() =>
            {
                HtmlColor color;
                result = HtmlColor.TryFromHex(null, out color);
            });
            Assert.IsFalse(result);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Creates a single value from the given source.
        /// </summary>
        /// <param name="source">The token iterator.</param>
        /// <returns>The value or NULL.</returns>
        CSSValue CreateValue(IEnumerator <CssToken> source)
        {
            CSSValue value = null;

            switch (source.Current.Type)
            {
            case CssTokenType.String:    // 'i am a string'
                value = new CSSPrimitiveValue(UnitType.String, ((CssStringToken)source.Current).Data);
                break;

            case CssTokenType.Url:    // url('this is a valid URL')
                value = new CSSPrimitiveValue(UnitType.Uri, ((CssStringToken)source.Current).Data);
                break;

            case CssTokenType.Ident:     // ident
                value = new CSSPrimitiveValue(UnitType.Ident, ((CssKeywordToken)source.Current).Data);
                break;

            case CssTokenType.Percentage:     // 5%
                value = new CSSPrimitiveValue(UnitType.Percentage, ((CssUnitToken)source.Current).Data);
                break;

            case CssTokenType.Dimension:     // 3px
                value = new CSSPrimitiveValue(((CssUnitToken)source.Current).Unit, ((CssUnitToken)source.Current).Data);
                break;

            case CssTokenType.Number:     // 173
                value = new CSSPrimitiveValue(UnitType.Number, ((CssNumberToken)source.Current).Data);
                break;

            case CssTokenType.Hash:     // #string
                HtmlColor color;

                if (HtmlColor.TryFromHex(((CssKeywordToken)source.Current).Data, out color))
                {
                    value = new CSSPrimitiveValue(color);
                }

                break;

            case CssTokenType.Delim:     // e.g. #0F3, #012345, ...
                if (((CssDelimToken)source.Current).Data == '#')
                {
                    String hash = String.Empty;

                    while (source.MoveNext())
                    {
                        var stop = false;

                        switch (source.Current.Type)
                        {
                        case CssTokenType.Number:
                        case CssTokenType.Dimension:
                        case CssTokenType.Ident:
                            var rest = source.Current.ToValue();

                            if (hash.Length + rest.Length <= 6)
                            {
                                hash += rest;
                            }
                            else
                            {
                                stop = true;
                            }

                            break;

                        default:
                            stop = true;
                            break;
                        }

                        if (stop || hash.Length == 6)
                        {
                            break;
                        }
                    }

                    if (HtmlColor.TryFromHex(hash, out color))
                    {
                        value = new CSSPrimitiveValue(color);
                    }
                }
                break;

            case CssTokenType.Function:     // rgba(255, 255, 20, 0.5)
                value = CreateFunction(source);
                break;
            }

            return(value);
        }