it('should detect multiple attributes', () => { var cssSelector = CssSelector.parse('input[type=text][control]')[0]; expect(cssSelector.element).toEqual('input'); expect(cssSelector.attrs).toEqual(['type', 'text', 'control', '']); expect(cssSelector.toString()).toEqual('input[type=text][control]'); });
function parse() { var result = []; for (var i = 0; i < count; i++) { result.push(CssSelector.parse(fixedSelectorStrings[i])); } return result; }
it('should select by class name case insensitive', () => { matcher.addSelectables(s1 = CssSelector.parse('.someClass'), 1); matcher.addSelectables(s2 = CssSelector.parse('.someClass.class2'), 2); expect(matcher.match(CssSelector.parse('.SOMEOTHERCLASS')[0], selectableCollector)) .toEqual(false); expect(matched).toEqual([]); expect(matcher.match(CssSelector.parse('.SOMECLASS')[0], selectableCollector)).toEqual(true); expect(matched).toEqual([s1[0], 1]); reset(); expect(matcher.match(CssSelector.parse('.someClass.class2')[0], selectableCollector)) .toEqual(true); expect(matched).toEqual([s1[0], 1, s2[0], 2]); });
it('should detect lists of selectors', () => { var cssSelectors = CssSelector.parse('.someclass,[attrname=attrvalue], sometag'); expect(cssSelectors.length).toEqual(3); expect(cssSelectors[0].classNames).toEqual(['someclass']); expect(cssSelectors[1].attrs).toEqual(['attrname', 'attrvalue']); expect(cssSelectors[2].element).toEqual('sometag'); });
it('should detect multiple parts', () => { var cssSelector = CssSelector.parse('sometag[attrname=attrvalue].someclass')[0]; expect(cssSelector.element).toEqual('sometag'); expect(cssSelector.attrs).toEqual(['attrname', 'attrvalue']); expect(cssSelector.classNames).toEqual(['someclass']); expect(cssSelector.toString()).toEqual('sometag.someclass[attrname=attrvalue]'); });
it('should detect :not without truthy', () => { var cssSelector = CssSelector.parse(':not([attrname=attrvalue].someclass)')[0]; expect(cssSelector.element).toEqual("*"); var notSelector = cssSelector.notSelector; expect(notSelector.attrs).toEqual(['attrname', 'attrvalue']); expect(notSelector.classNames).toEqual(['someclass']); expect(cssSelector.toString()).toEqual('*:not(.someclass[attrname=attrvalue])'); });
it('should detect lists of selectors with :not', () => { var cssSelectors = CssSelector.parse('input[type=text], :not(textarea), textbox:not(.special)'); expect(cssSelectors.length).toEqual(3); expect(cssSelectors[0].element).toEqual('input'); expect(cssSelectors[0].attrs).toEqual(['type', 'text']); expect(cssSelectors[1].element).toEqual('*'); expect(cssSelectors[1].notSelector.element).toEqual('textarea'); expect(cssSelectors[2].element).toEqual('textbox'); expect(cssSelectors[2].notSelector.classNames).toEqual(['special']); });
constructor(parser: Parser, directives:List<DirectiveMetadata>) { super(); this._parser = parser; this._selectorMatcher = new SelectorMatcher(); this._directives = directives; for (var i=0; i<directives.length; i++) { var selector = CssSelector.parse(directives[i].selector); this._selectorMatcher.addSelectables(selector, i); } }
it('should detect :not', () => { var cssSelector = CssSelector.parse('sometag:not([attrname=attrvalue].someclass)')[0]; expect(cssSelector.element).toEqual('sometag'); expect(cssSelector.attrs.length).toEqual(0); expect(cssSelector.classNames.length).toEqual(0); var notSelector = cssSelector.notSelector; expect(notSelector.element).toEqual(null); expect(notSelector.attrs).toEqual(['attrname', 'attrvalue']); expect(notSelector.classNames).toEqual(['someclass']); expect(cssSelector.toString()).toEqual('sometag:not(.someclass[attrname=attrvalue])'); });
constructor(parser: Parser, directives: List<DirectiveMetadata>) { this._parser = parser; this._selectorMatcher = new SelectorMatcher(); this._directives = directives; for (var i = 0; i < directives.length; i++) { var directive = directives[i]; var selector = CssSelector.parse(directive.selector); this._ensureComponentOnlyHasElementSelector(selector, directive); this._selectorMatcher.addSelectables(selector, i); } }