public void SerializeWithEmptyPattern() { RegexSelector selector = new RegexSelector(); XmlElement serialized = selector.Serialize(); Assert.Equals(SerializedEmptyPattern, serialized.OwnerDocument.InnerXml); }
public void Deserialize() { RegexSelector selector = new RegexSelector(); selector.Deserialize(SerializedContent); Assert.Equals(@".*Foo.*", selector.Pattern); }
public void CanAssignEmptyPatternString() { RegexSelector selector = new RegexSelector(); selector.Pattern = string.Empty; Assert.Equals(string.Empty, selector.Pattern); }
public void DeserializeWithSpecialCharacters() { RegexSelector selector = new RegexSelector(); selector.Deserialize(SerializedSpecialCharacters); Assert.Equals(".*<.*", selector.Pattern); }
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); }
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); }
public void DeserializeWithEmptyPattern() { RegexSelector selector = new RegexSelector(); selector.Deserialize(SerializedEmptyPattern); Assert.Equals(string.Empty, selector.Pattern); }
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()))); }
public void RegexException() { Assert.Throws <ArgumentException>(() => { var selector = new RegexSelector("\\d+("); selector.Select(""); }); }
public void TestRegexWithLeftBracketQuoted() { string regex = "\\(.+"; string source = "(hello world"; RegexSelector regexSelector = new RegexSelector(regex); string select = regexSelector.Select(source); Assert.Equal(select, source); }
public void SerializeWithSpecialCharacters() { RegexSelector selector = new RegexSelector(); selector.Pattern = ".*<.*"; XmlElement serialized = selector.Serialize(); Assert.Equals(SerializedSpecialCharacters, serialized.OwnerDocument.InnerXml); }
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)); }
private static void SetUpRegexSelector(CmdLineHandler clh, IRecipe recipe) { if (clh.HasOption("pattern")) { var selector = new RegexSelector { Pattern = clh.GetOptionValueFor("pattern") }; recipe.RegisterSelector(selector); } }
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); } }
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); } } }
/// <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); }
public void IncludesFixtureWithEmptyPattern() { RegexSelector selector = new RegexSelector(); Assert.True(selector.Includes(new TestFixture(typeof(Foo)))); }
private static void SetUpRegexSelector(CmdLineHandler clh, IRecipe recipe) { if(clh.HasOption("pattern")) { var selector = new RegexSelector { Pattern = clh.GetOptionValueFor( "pattern" ) }; recipe.RegisterSelector(selector); } }