@Test public void translate() { // given CssSelector cssSelector = ParseTreeBuilder.parse("a b").firstSelector(); assertThat(cssSelector, instanceOf(CssDescendantSelector.class)); // when CssSelector ancestorSelector = ((CssDescendantSelector) cssSelector).getAncestorSelector(); CssSelector descendantSelector = ((CssDescendantSelector) cssSelector).getDescendantSelector(); // then assertThat(ancestorSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) ancestorSelector).getTagName(), is("a")); assertThat(descendantSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) descendantSelector).getTagName(), is("b")); }
/** * "a b c" becomes: * * /\ * /\ \ * a b c */ @Test public void translate_with_another_descendant() { // given CssSelector cssSelector = ParseTreeBuilder.parse("a b c").firstSelector(); assertThat(cssSelector, instanceOf(CssDescendantSelector.class)); // when CssSelector ancestorSelector = ((CssDescendantSelector) cssSelector).getAncestorSelector(); CssSelector descendantSelector = ((CssDescendantSelector) cssSelector).getDescendantSelector(); // then assertThat(ancestorSelector, instanceOf(CssDescendantSelector.class)); CssSelector ancestorAncestorSelector = ((CssDescendantSelector) ancestorSelector).getAncestorSelector(); CssSelector ancestorDescendantSelector = ((CssDescendantSelector) ancestorSelector).getDescendantSelector(); assertThat(ancestorAncestorSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) ancestorAncestorSelector).getTagName(), is("a")); assertThat(ancestorAncestorSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) ancestorDescendantSelector).getTagName(), is("b")); assertThat(descendantSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) descendantSelector).getTagName(), is("c")); }
@Test public void translate_with_condition() { // given CssSelector cssSelector = ParseTreeBuilder.parse("a b.condition").firstSelector(); assertThat(cssSelector, instanceOf(CssDescendantSelector.class)); // when CssSelector ancestorSelector = ((CssDescendantSelector) cssSelector).getAncestorSelector(); CssSelector descendantSelector = ((CssDescendantSelector) cssSelector).getDescendantSelector(); // then assertThat(ancestorSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) ancestorSelector).getTagName(), is("a")); assertThat(descendantSelector, instanceOf(CssConditionalSelector.class)); CssSelector sqCssSelector = ((CssConditionalSelector) descendantSelector).getCssSelector(); CssCondition cssCondition = ((CssConditionalSelector) descendantSelector).getCssCondition(); assertThat(sqCssSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) sqCssSelector).getTagName(), is("b")); assertThat(cssCondition, instanceOf(CssClassAttributeCondition.class)); assertThat(((CssClassAttributeCondition) cssCondition).getClassName(), is("condition")); }