Example #1
0
        public void SerializeWithEmptyPattern()
        {
            RegexSelector selector   = new RegexSelector();
            XmlElement    serialized = selector.Serialize();

            Assert.Equals(SerializedEmptyPattern, serialized.OwnerDocument.InnerXml);
        }
Example #2
0
        public void Deserialize()
        {
            RegexSelector selector = new RegexSelector();

            selector.Deserialize(SerializedContent);
            Assert.Equals(@".*Foo.*", selector.Pattern);
        }
Example #3
0
        public void CanAssignEmptyPatternString()
        {
            RegexSelector selector = new RegexSelector();

            selector.Pattern = string.Empty;
            Assert.Equals(string.Empty, selector.Pattern);
        }
Example #4
0
        public void DeserializeWithSpecialCharacters()
        {
            RegexSelector selector = new RegexSelector();

            selector.Deserialize(SerializedSpecialCharacters);
            Assert.Equals(".*<.*", selector.Pattern);
        }
Example #5
0
        public static ISelector GetSelector(ExtractByAttribute extractBy)
        {
            var       value    = extractBy.Value;
            ISelector selector = null;

            switch (extractBy.Type)
            {
            case ExtractType.Css:
                selector = new CssSelector(value);
                break;

            case ExtractType.Regex:
                selector = new RegexSelector(value);
                break;

            case ExtractType.XPath:
                selector = new XPathSelector(value);
                break;

            case ExtractType.JsonPath:
                selector = new JsonPathSelector(value);
                break;
            }
            return(selector);
        }
Example #6
0
        public static ISelector GetSelector(ExtractBy extractBy)
        {
            string    value = extractBy.Value;
            ISelector selector;

            switch (extractBy.Type)
            {
            case ExtractBy.ExtracType.Css:
                selector = new CssSelector(value);
                break;

            case ExtractBy.ExtracType.Regex:
                selector = new RegexSelector(value);
                break;

            case ExtractBy.ExtracType.XPath:
                selector = GetXpathSelector(value);
                break;

            case ExtractBy.ExtracType.JsonPath:
                selector = new JsonPathSelector(value);
                break;

            case ExtractBy.ExtracType.Enviroment:
                selector = new EnviromentSelector(value);
                break;

            default:
                selector = GetXpathSelector(value);
                break;
            }
            return(selector);
        }
Example #7
0
        public void DeserializeWithEmptyPattern()
        {
            RegexSelector selector = new RegexSelector();

            selector.Deserialize(SerializedEmptyPattern);
            Assert.Equals(string.Empty, selector.Pattern);
        }
Example #8
0
        public void RunFixture()
        {
            RegexSelector selector = new RegexSelector();

            selector.Pattern = @".*Foo.*";
            Assert.True(selector.Includes(new TestFixture(typeof(Foo))));
            Assert.False(selector.Includes(new TestFixture(GetType())));
        }
Example #9
0
 public void RegexException()
 {
     Assert.Throws <ArgumentException>(() =>
     {
         var selector = new RegexSelector("\\d+(");
         selector.Select("");
     });
 }
Example #10
0
        public void TestRegexWithLeftBracketQuoted()
        {
            string        regex         = "\\(.+";
            string        source        = "(hello world";
            RegexSelector regexSelector = new RegexSelector(regex);
            string        select        = regexSelector.Select(source);

            Assert.Equal(select, source);
        }
Example #11
0
        public void SerializeWithSpecialCharacters()
        {
            RegexSelector selector = new RegexSelector();

            selector.Pattern = ".*<.*";
            XmlElement serialized = selector.Serialize();

            Assert.Equals(SerializedSpecialCharacters, serialized.OwnerDocument.InnerXml);
        }
Example #12
0
        public void Serialize()
        {
            RegexSelector selector = new RegexSelector();

            selector.Pattern = @".*Foo.*";
            XmlElement serialized = selector.Serialize();

            Assert.Equals(SerializedContent, serialized.OwnerDocument.InnerXml);
        }
        public override TextUtils.TextIndexList Ranges(string text)
        {
            RegexSelector rs = new RegexSelector()
            {
                RegexString = rString
            };

            return(rs.SelectIndexes(text));
        }
Example #14
0
 private static void SetUpRegexSelector(CmdLineHandler clh, IRecipe recipe)
 {
     if (clh.HasOption("pattern"))
     {
         var selector = new RegexSelector {
             Pattern = clh.GetOptionValueFor("pattern")
         };
         recipe.RegisterSelector(selector);
     }
 }
Example #15
0
        public void RegexException()
        {
            try
            {
                var selector = new RegexSelector("\\d+(");
                selector.Select("");

                throw new Exception("Test case failed");
            }
            catch (Exception e)
            {
                Assert.Equal("Invalid pattern '\\d+(' at offset 4. Not enough )'s.", e.Message);
            }
        }
Example #16
0
        public void SimplePattern()
        {
            int result = CsUnitApp.Main(new[] { "/pattern:.*Foo.*", RecipeOption });

            Assert.Equals(0, result);
            Assert.ContainsType(typeof(RegexSelector), RecipeMock._selectors);
            foreach (ISelector selector in RecipeMock._selectors)
            {
                RegexSelector regexSelector = selector as RegexSelector;
                if (regexSelector != null)
                {
                    Assert.Equals(@".*Foo.*", regexSelector.Pattern);
                }
            }
        }
Example #17
0
        /// <summary>
        /// parse selector
        /// </summary>
        /// <param name="expression">selectors expression</param>
        /// <returns>selector</returns>
        public static ISelector ParserSelector(string expression)
        {
            expression = expression.Trim();
            var sp = expression.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);

            if (sp.Length == 0)
            {
                return(null);
            }

            var cmd    = sp[0];
            var remove = Regex.IsMatch(expression, @".*\-r$");
            var p      = Regex.Replace(expression, "^" + cmd, "");

            p = Regex.Replace(p, @"\-r$", "").Trim();

            switch (cmd)
            {
            case "clear":
            {
                var tags = p.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).ToArray();
                if (tags.Length == 0)
                {
                    return(null);
                }

                var selector = new ClearTagSelector(tags);
                selector.Remove = remove;

                return(selector);
            }

            case "css":
            {
                var selector = new CssSelector();
                selector.Remove = remove;

                if (p.EndsWith(":ohtml"))
                {
                    selector.Type     = CssTypeEnum.OUTERHTML;
                    selector.Selector = Regex.Replace(p, ":ohtml$", "").Trim();
                }
                else if (p.EndsWith(":html"))
                {
                    selector.Type     = CssTypeEnum.INNERHTML;
                    selector.Selector = Regex.Replace(p, ":html$", "").Trim();
                }
                else if (p.EndsWith(":text"))
                {
                    selector.Type     = CssTypeEnum.TEXT;
                    selector.Selector = Regex.Replace(p, ":text$", "").Trim();
                }
                else
                {
                    selector.Type = CssTypeEnum.ATTR;
                    var ms = Regex.Match(p, @"(.*):\[(.*?)\]$");
                    if (ms.Groups.Count == 3)
                    {
                        selector.Selector = ms.Groups[1].Value.Trim();
                        selector.AttrName = ms.Groups[2].Value.Trim();
                    }
                    else
                    {
                        selector.Type     = CssTypeEnum.OUTERHTML;
                        selector.Selector = Regex.Replace(p, ":ohtml$", "").Trim();
                    }
                }

                return(selector);
            }

            case "ex":
            {
                var selector = new ExcludeSelector();
                selector.Remove  = remove;
                selector.Pattern = Regex.Replace(p, @"\-[bea]?$", "").Trim();
                if (selector.Pattern.StartsWith("/"))
                {
                    selector.Pattern = selector.Pattern.Trim('/');
                }

                if (p.EndsWith("-b"))
                {
                    selector.Type = ExcludeTypeEnum.BEGIN;
                }
                else if (p.EndsWith("-e"))
                {
                    selector.Type = ExcludeTypeEnum.END;
                }
                else
                {
                    selector.Type = ExcludeTypeEnum.ALL;
                }

                return(selector);
            }

            case "exp":
            {
                var selector = new ExpressionSelector();
                selector.Remove     = remove;
                selector.Expression = p;
                var ssp = p.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                if (ssp.Length == 2)
                {
                    selector.Expression = ssp[0];
                    selector.Split      = ssp[1].Trim('/');
                }

                return(selector);
            }

            case "reg":
            {
                var selector = new RegexSelector();
                selector.Remove = remove;

                var ms = Regex.Match(p, @"/?(.*)/([\d\s]*)");
                if (ms.Groups.Count == 2)
                {
                    selector.Pattern = ms.Groups[0].Value;
                    return(selector);
                }
                if (ms.Groups.Count == 3)
                {
                    selector.Pattern = ms.Groups[1].Value;
                    selector.Index   = ms.Groups[2].Value.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).Select(m => Convert.ToInt32(m)).ToArray();

                    return(selector);
                }
                return(null);
            }

            case "regR":
            {
                var selector = new RegexReplaceSelector();
                selector.Remove = remove;

                var ms = Regex.Match(p, @"^/(.*?)/[\s]+(.*)");

                if (ms.Groups.Count == 2)
                {
                    selector.Pattern   = ms.Groups[1].Value;
                    selector.NewString = "";
                    return(selector);
                }
                if (ms.Groups.Count == 3)
                {
                    selector.Pattern   = ms.Groups[1].Value;
                    selector.NewString = ms.Groups[2].Value;

                    return(selector);
                }
                return(null);
            }

            case "regS":
            {
                var selector = new RegexSplitSelector();
                selector.Remove = remove;

                var ms = Regex.Match(p, @"/?(.*)/([\d\s]*)");
                if (ms.Groups.Count == 3)
                {
                    selector.Pattern = ms.Groups[1].Value;
                    selector.Index   = ms.Groups[2].Value.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).Select(m => Convert.ToInt32(m)).ToArray();
                    return(selector);
                }

                return(null);
            }

            case "text":
            {
                var selector = new TextRangeSelector();
                selector.Remove = remove;

                var ms = Regex.Matches(p, @"/(.*?[^\\\/])/");

                if (ms.Count == 2)
                {
                    selector.Begin = ms[0].Value.Trim('/');
                    selector.End   = ms[1].Value.Trim('/');

                    return(selector);
                }

                return(null);
            }

            case "xpath":
            {
                var selector = new XPathSelector();
                selector.Remove = remove;

                if (p.EndsWith(":oxml"))
                {
                    selector.Type  = XPathTypeEnum.OUTERXML;
                    selector.XPath = Regex.Replace(p, ":oxml", "").Trim();
                }
                else if (p.EndsWith(":xml"))
                {
                    selector.Type  = XPathTypeEnum.INNERXML;
                    selector.XPath = Regex.Replace(p, ":xml$", "").Trim();
                }
                else if (p.EndsWith(":text"))
                {
                    selector.Type  = XPathTypeEnum.TEXT;
                    selector.XPath = Regex.Replace(p, ":text$", "").Trim();
                }
                else
                {
                    selector.Type = XPathTypeEnum.ATTR;
                    var ms = Regex.Match(p, @"(.*):\[(.*?)\]$");
                    if (ms.Groups.Count == 3)
                    {
                        selector.XPath    = ms.Groups[1].Value.Trim();
                        selector.AttrName = ms.Groups[2].Value.Trim();
                    }
                    else
                    {
                        selector.Type  = XPathTypeEnum.OUTERXML;
                        selector.XPath = Regex.Replace(p, ":oxml$", "").Trim();
                    }
                }

                return(selector);
            }

            case "jpath":
            {
                var selector = new JsonPathSelector();
                selector.Remove   = remove;
                selector.JsonPath = p;

                return(selector);
            }

            case "proc":
            {
                var selector = new FunctionSelector();
                selector.Remove = remove;
                selector.Name   = p;

                return(selector);
            }
            }

            return(null);
        }
Example #18
0
 public void DeserializeWithEmptyPattern() {
    RegexSelector selector = new RegexSelector();
    selector.Deserialize(SerializedEmptyPattern);
    Assert.Equals(string.Empty, selector.Pattern);
 }
Example #19
0
 public void SerializeWithSpecialCharacters() {
    RegexSelector selector = new RegexSelector();
    selector.Pattern = ".*<.*";
    XmlElement serialized = selector.Serialize();
    Assert.Equals(SerializedSpecialCharacters, serialized.OwnerDocument.InnerXml);
 }
Example #20
0
 public void Deserialize() {
    RegexSelector selector = new RegexSelector();
    selector.Deserialize(SerializedContent);
    Assert.Equals(@".*Foo.*", selector.Pattern);
 }
Example #21
0
 public void IncludesFixtureWithEmptyPattern() {
    RegexSelector selector = new RegexSelector();
    Assert.True(selector.Includes(new TestFixture(typeof(Foo))));
 }
Example #22
0
        public void IncludesFixtureWithEmptyPattern()
        {
            RegexSelector selector = new RegexSelector();

            Assert.True(selector.Includes(new TestFixture(typeof(Foo))));
        }
Example #23
0
 public void CanAssignEmptyPatternString() {
    RegexSelector selector = new RegexSelector();
    selector.Pattern = string.Empty;
    Assert.Equals(string.Empty, selector.Pattern);
 }
Example #24
0
 public void SerializeWithEmptyPattern() {
    RegexSelector selector = new RegexSelector();
    XmlElement serialized = selector.Serialize();
    Assert.Equals(SerializedEmptyPattern, serialized.OwnerDocument.InnerXml);
 }
Example #25
0
 public void RunFixture() {
    RegexSelector selector = new RegexSelector();
    selector.Pattern = @".*Foo.*";
    Assert.True(selector.Includes(new TestFixture(typeof(Foo))));
    Assert.False(selector.Includes(new TestFixture(GetType())));
 }
Example #26
0
 public void Serialize() {
    RegexSelector selector = new RegexSelector();
    selector.Pattern = @".*Foo.*";
    XmlElement serialized = selector.Serialize();
    Assert.Equals(SerializedContent, serialized.OwnerDocument.InnerXml);
 }
Example #27
0
 public void DeserializeWithSpecialCharacters() {
    RegexSelector selector = new RegexSelector();
    selector.Deserialize(SerializedSpecialCharacters);
    Assert.Equals(".*<.*", selector.Pattern);
 }
Example #28
0
 private static void SetUpRegexSelector(CmdLineHandler clh, IRecipe recipe) {
    if(clh.HasOption("pattern")) {
       var selector = new RegexSelector {  
          Pattern = clh.GetOptionValueFor( "pattern" )
       };
       recipe.RegisterSelector(selector);
    }
 }