/*******************************************************************************
* Copyright 2012-present Pixate, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package com.pixate.pxengine.styling.selectors;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.xml.namespace.NamespaceContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import android.os.Environment;
import android.test.AndroidTestCase;
import android.util.Log;
import com.pixate.pxengine.styling.PXStyleUtils;
import com.pixate.pxengine.styling.PXStylesheet;
import com.pixate.pxengine.styling.PXStylesheet.PXStyleSheetOrigin;
import com.pixate.util.CollectionUtil;
import com.pixate.util.StringUtil;
public class W3CSelectorTests extends AndroidTestCase {
private static final boolean WRITE_TO_DISC = false;
private static final boolean OVERWRITE = true;
// NOTE: This needs to be changed locally for a run that is writing the
// results.
private static final String RESULT_FILES_ASSETS_PATH = "W3C/Selectors Level 3/results/";
private static final String TEST_FILES_ASSETS_PATH = "W3C/Selectors Level 3/source/";
private static final char[] READ_BUFFER = new char[1024];
// We remove that string from the results. It being injected by Java since
// we use DocumentBuilderFactory#setNamespaceAware(true);
private static final String NAMESPACE_STRING = "\\s+xmlns=\\\"http://www.w3.org/1999/xhtml\\\"";
// prepare the xpath expressions
private static XPathExpression TITLE_EXPRESSION;
private static XPathExpression STYLE_EXPRESSION;
private static XPathExpression TEST_BODY_EXPRESSION;
private static XPathExpression ALL_EXPRESSION;
static {
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
xpath.setNamespaceContext(new TestNamespaceContext());
// find title node
try {
TITLE_EXPRESSION = xpath.compile("/ns:html/ns:head/ns:title");
STYLE_EXPRESSION = xpath.compile("/ns:html/ns:head/ns:style");
TEST_BODY_EXPRESSION = xpath.compile("/ns:html/ns:body/ns:div/ns:div");
ALL_EXPRESSION = xpath.compile("//*");
} catch (XPathExpressionException e) {
Log.e(W3CSelectorTests.class.getSimpleName(), "XPath compilation error", e);
}
}
private static ErrorHandler ERROR_HANDLER = new ErrorHandler() {
@Override
public void warning(SAXParseException exception) throws SAXException {
Log.w(W3CSelectorTests.class.getSimpleName(), exception.getMessage());
}
@Override
public void fatalError(SAXParseException exception) throws SAXException {
Log.e(W3CSelectorTests.class.getSimpleName(), exception.getMessage());
}
@Override
public void error(SAXParseException exception) throws SAXException {
Log.e(W3CSelectorTests.class.getSimpleName(), exception.getMessage());
}
};
private static class TestNamespaceContext implements NamespaceContext {
public String getNamespaceURI(String prefix) {
if ("ns".equals(prefix)) {
return "http://www.w3.org/1999/xhtml";
}
return null;
}
public String getPrefix(String namespaceURI) {
return null;
}
@SuppressWarnings("rawtypes")
public Iterator getPrefixes(String namespaceURI) {
return null;
}
}
private DocumentBuilder builder;
@Override
protected void setUp() throws Exception {
super.setUp();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// IMPORTANT since we use namespaces in our selectors
factory.setNamespaceAware(true);
// convert CDATA nodes to text nodes.
factory.setCoalescing(true);
builder = factory.newDocumentBuilder();
builder.setErrorHandler(ERROR_HANDLER);
}
private void assertStyleForFilename(String fileName) throws Exception, SAXException,
IOException {
assertStyleForFilename(fileName, 0);
}
private void assertStyleForFilename(String fileName, int errorCount) throws Exception {
Document doc = builder.parse(getContext().getAssets().open(
TEST_FILES_ASSETS_PATH + fileName + ".xml"));
// Document doc = builder.parse(new File(TEST_FILES_ASSETS_PATH +
// fileName + ".xml"));
// find title node
NodeList nl = (NodeList) TITLE_EXPRESSION.evaluate(doc, XPathConstants.NODESET);
Node titleNode = null;
if (nl.getLength() > 0) {
titleNode = nl.item(0);
}
// find style node
nl = (NodeList) STYLE_EXPRESSION.evaluate(doc, XPathConstants.NODESET);
Node styleNode = null;
if (nl.getLength() > 0) {
styleNode = nl.item(0);
}
// find test body
Node bodyNode = null;
nl = (NodeList) TEST_BODY_EXPRESSION.evaluate(doc, XPathConstants.NODESET);
for (int i = 0; i < nl.getLength(); i++) {
Node n = nl.item(i).getAttributes().getNamedItem("class");
if (n != null && "testText".equals(n.getNodeValue())) {
bodyNode = nl.item(i);
break;
}
}
// grab style text
String styleText = styleNode.getTextContent();
// create stylesheet
PXStylesheet stylesheet = PXStylesheet.getStyleSheetFromSource(styleText,
PXStyleSheetOrigin.APPLICATION);
List<String> errors = stylesheet.getErrors();
int errorsSize = CollectionUtil.isEmpty(errors) ? 0 : errors.size();
if (errorsSize == errorCount) {
// TODO? [Pixate applyStylesheets];
}
// Some checks
assertNotNull("title should not be null", titleNode);
assertNotNull("style should not be null", styleText);
assertNotNull("body should not be null", bodyNode);
// create a flattened list of all nodes in the body
NodeList nodes = (NodeList) ALL_EXPRESSION.evaluate(bodyNode, XPathConstants.NODESET);
// style each element node
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
PXStyleUtils.updateStyle(node);
}
}
// Use a Transformer for output
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
// Check for CDATA nodes and replace them with a regular text nodes.
// For some reason, setCoalescing(true) doesn't work well...
List<Node> cdataToRemove = new ArrayList<Node>(3);
NodeList childNodes = styleNode.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
Node n = childNodes.item(i);
if (n.getNodeType() == Node.CDATA_SECTION_NODE) {
cdataToRemove.add(n);
}
}
for (Node n : cdataToRemove) {
styleNode.replaceChild(doc.createTextNode(n.getTextContent()), n);
}
Element root = doc.createElement("test");
root.appendChild(titleNode);
root.appendChild(styleNode);
root.appendChild(bodyNode);
root.normalize();
DOMSource source = new DOMSource(root);
StringWriter sw = new StringWriter();
StreamResult sr = new StreamResult(sw);
transformer.transform(source, sr);
// For now, just write it back if needed
String resultFileName = getResultFileName(fileName);
String currentResult = sw.toString().replaceAll(NAMESPACE_STRING, StringUtil.EMPTY);
if (WRITE_TO_DISC) {
writeText(resultFileName, currentResult, OVERWRITE);
} else {
// Compare the result to the 'golden'.
assertFileContent(resultFileName, currentResult);
}
}
private void assertFileContent(String resultFileName, String currentResult) throws IOException {
InputStreamReader reader = null;
try {
reader = new InputStreamReader(getContext().getAssets().open(
RESULT_FILES_ASSETS_PATH + resultFileName));
StringBuilder expected = new StringBuilder();
int read = -1;
while ((read = reader.read(READ_BUFFER)) != -1) {
expected.append(READ_BUFFER, 0, read);
}
assertEquals("Expected equal output", expected.toString(), currentResult.trim());
} finally {
if (reader != null) {
reader.close();
}
}
}
private void writeText(String fileName, String resultText, boolean overwrite)
throws IOException {
// This will write to the device/emulator card. Later, those results
// have to be copied into the project's assets directory manually to run
// the test in a "non-writing" mode.
File writeTarget = new File(Environment.getExternalStorageDirectory(), "results");
writeTarget.mkdirs();
File file = new File(writeTarget, fileName);
if (file.exists() && !overwrite) {
return;
}
FileWriter writer = null;
try {
writer = new FileWriter(file);
writer.write(resultText.trim());
writer.flush();
} finally {
if (writer != null) {
writer.close();
}
}
}
private String getResultFileName(String fileName) {
return fileName + "-result.xml";
}
/**
* Groups of selectors
*/
public void test1() throws Exception {
// verified
assertStyleForFilename("css3-modsel-1");
}
/**
* Type element selectors
*/
public void test2() throws Exception {
// verified
assertStyleForFilename("css3-modsel-2");
}
/**
* Universal selector
*/
public void test3() throws Exception {
// verified
assertStyleForFilename("css3-modsel-3");
}
/**
* Universal selector (no namespaces)
*/
public void test3a() throws Exception {
// verified
assertStyleForFilename("css3-modsel-3a");
}
/**
* Omitted universal selector
*/
public void test4() throws Exception {
// verified
assertStyleForFilename("css3-modsel-4");
}
/**
* Attribute existence selector
*/
public void test5() throws Exception {
// verified
assertStyleForFilename("css3-modsel-5");
}
/**
* Attribute value selector
*/
public void test6() throws Exception {
// verified
assertStyleForFilename("css3-modsel-6");
}
/**
* Attribute multivalue selector
*/
public void test7() throws Exception {
// verified
assertStyleForFilename("css3-modsel-7");
}
/**
* Attribute multivalue selector
*/
public void test7b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-7b");
}
/**
* Attribute value selectors (hyphen-separated attributes)
*/
public void test8() throws Exception {
// verified
assertStyleForFilename("css3-modsel-8");
}
/**
* Substring matching attribute selector (beginning)
*/
public void test9() throws Exception {
// verified
assertStyleForFilename("css3-modsel-9");
}
/**
* Substring matching attribute selector (end)
*/
public void test10() throws Exception {
// verified
assertStyleForFilename("css3-modsel-10");
}
/**
* Substring matching attribute selector (contains)
*/
public void test11() throws Exception {
// verified
assertStyleForFilename("css3-modsel-11");
}
/**
* Class selectors
*/
public void test13() throws Exception {
// verified
assertStyleForFilename("css3-modsel-13");
}
/**
* More than one class selector
*/
public void test14() throws Exception {
// verified
assertStyleForFilename("css3-modsel-14");
}
/**
* More than one class selector
*/
public void test14b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-14b");
}
/**
* More than one class selector
*/
public void test14c() throws Exception {
// verified
assertStyleForFilename("css3-modsel-14c");
}
/**
* NEGATED More than one class selector
*/
public void test14d() throws Exception {
// verified
assertStyleForFilename("css3-modsel-14d");
}
/**
* NEGATED More than one class selector
*/
public void test14e() throws Exception {
// verified
assertStyleForFilename("css3-modsel-14e");
}
/**
* ID selectors
*/
public void test15() throws Exception {
// verified
assertStyleForFilename("css3-modsel-15");
}
/**
* Multiple ID selectors
*/
public void test15b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-15b");
}
/**
* Multiple IDs Treating as invalid. This test requires support for two or
* more of XHTML, xml:id, and DOM3 Core. It also uses Javascript to alter
* nodes, which is required for the test to pass.
*/
/*
* public void test15c() throws Exception {
* assertStyleForFilename("css3-modsel-15c");
* //STFail(@"xml:id not supported"); }
*/
/**
* :link pseudo-class Treating as invalid. We don't have a "link" concept
*/
/*
* public void test16() throws Exception {
* assertStyleForFilename("css3-modsel-16");
* //STFail(@":link pseudo-class not implemented"); }
*/
/**
* :visited pseudo-class Treating as invalid. We don't have a "visited"
* concept
*/
/*
* public void test17() throws Exception {
* assertStyleForFilename("css3-modsel-17");
* //STFail(@":visited pseudo-class not implemented"); }
*/
/**
* :hover pseudo-class Treating as invalid. We don't have a "hover" concept
*/
/*
* public void test18() throws Exception {
* assertStyleForFilename("css3-modsel-18");
* //STFail(@":hover pseudo-class not implemented"); }
*/
/**
* :hover pseudo-class on links Treating as invalid. We don't have a "hover"
* concept
*/
/*
* public void test18a() throws Exception {
* assertStyleForFilename("css3-modsel-18a");
* //STFail(@":hover pseudo-class not implemented"); }
*/
/**
* :hover pseudo-class Treating as invalid. We don't have a "hover" concept
*/
/*
* public void test18b() throws Exception {
* assertStyleForFilename("css3-modsel-18b");
* //STFail(@":hover pseudo-class not implemented"); }
*/
/**
* :hover pseudo-class on links Treating as invalid. We don't have a "hover"
* concept
*/
/*
* public void test18c() throws Exception {
* assertStyleForFilename("css3-modsel-18c");
* //STFail(@":hover pseudo-class not implemented"); }
*/
/**
* :active pseudo-class Treating as invalid. We don't have an "active"
* concept
*/
/*
* public void test19() throws Exception {
* assertStyleForFilename("css3-modsel-19");
* //STFail(@":active pseudo-class not implemented"); }
*/
/**
* :active pseudo-class on controls Treating as invalid. We don't have a
* "active" concept
*/
/*
* public void test19b() throws Exception {
* assertStyleForFilename("css3-modsel-19b");
* //STFail(@":active pseudo-class not implemented"); }
*/
/**
* :focus pseudo-class Treating as invalid. We don't have a "focus" concept
*/
/*
* public void test20() throws Exception {
* assertStyleForFilename("css3-modsel-20");
* //STFail(@":focus pseudo-class not implemented"); }
*/
/**
* :target pseudo-class Treating as invalid. We don't have a "target"
* concept
*/
/*
* public void test21() throws Exception {
* assertStyleForFilename("css3-modsel-21");
* //STFail(@":target pseudo-class not implemented"); }
*/
/**
* :target pseudo-class Treating as invalid. We don't have a "target"
* concept
*/
/*
* public void test21b() throws Exception {
* assertStyleForFilename("css3-modsel-21b");
* //STFail(@":target pseudo-class not implemented"); }
*/
/**
* :target pseudo-class Treating as invalid. We don't have a "target"
* concept
*/
/*
* public void test21c() throws Exception {
* assertStyleForFilename("css3-modsel-21c");
* //STFail(@":target pseudo-class not implemented"); }
*/
/**
* :lang() pseudo-class Treating as invalid. We don't have a "lang" concept
*/
/*
* public void test22() throws Exception {
* assertStyleForFilename("css3-modsel-22");
* //STFail(@":lang() pseudo-class not implemented"); }
*/
/**
* :enabled pseudo-class Treating as invalid. We don't have an "enabled"
* concept
*/
/*
* public void test23() throws Exception {
* assertStyleForFilename("css3-modsel-23");
* //STFail(@":enabled pseudo-class not implemented"); }
*/
/**
* :disabled pseudo-class Treating as invalid. We don't have a "disabled"
* concept
*/
/*
* public void test24() throws Exception {
* assertStyleForFilename("css3-modsel-24");
* //STFail(@":disabled pseudo-class not implemented"); }
*/
/**
* :checked pseudo-class Treating as invalid. We don't have a "checked"
* concept
*/
/*
* public void test25() throws Exception {
* assertStyleForFilename("css3-modsel-25");
* //STFail(@":checked pseudo-class not implemented"); }
*/
/**
* :root pseudo-class
*/
public void test27() throws Exception {
// verified
assertStyleForFilename("css3-modsel-27");
}
/**
* Impossible rules (:root:first-child, etc)
*/
public void test27a() throws Exception {
// verified
assertStyleForFilename("css3-modsel-27a");
}
/**
* Impossible rules (* html, * :root)
*/
public void test27b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-27b");
}
/**
* :nth-child() pseudo-class
*/
public void test28() throws Exception {
// verified
assertStyleForFilename("css3-modsel-28");
}
/**
* :nth-child() pseudo-class
*/
public void test28b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-28b");
}
/**
* :nth-last-child() pseudo-class
*/
public void test29() throws Exception {
// verified
assertStyleForFilename("css3-modsel-29");
}
/**
* :nth-last-child() pseudo-class
*/
public void test29b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-29b");
}
/**
* :nth-of-type() pseudo-class
*/
public void test30() throws Exception {
// verified
assertStyleForFilename("css3-modsel-30");
}
/**
* :nth-last-of-type() pseudo-class not supported
*/
public void test31() throws Exception {
// verified
assertStyleForFilename("css3-modsel-31");
}
/**
* :first-child pseudo-class
*/
public void test32() throws Exception {
// verified
assertStyleForFilename("css3-modsel-32");
}
/**
* :last-child pseudo-class
*/
public void test33() throws Exception {
// verified
assertStyleForFilename("css3-modsel-33");
}
/**
* :first-of-type pseudo-class
*/
public void test34() throws Exception {
// verified
assertStyleForFilename("css3-modsel-34");
}
/**
* :last-of-type pseudo-class
*/
public void test35() throws Exception {
// verified
assertStyleForFilename("css3-modsel-35");
}
/**
* :only-child pseudo-class
*/
public void test36() throws Exception {
// verified
assertStyleForFilename("css3-modsel-36");
}
/**
* :only-of-type pseudo-class
*/
public void test37() throws Exception {
// verified
assertStyleForFilename("css3-modsel-37");
}
/**
* ::first-line pseudo-element not supported
*/
/*
* public void test38() throws Exception {
* assertStyleForFilename("css3-modsel-38");
* //STFail(@"::first-line pseudo-element not implemented"); }
*/
/**
* ::first-letter pseudo-element not supported
*/
/*
* public void test39() throws Exception {
* assertStyleForFilename("css3-modsel-39");
* //STFail(@"::first-letter pseudo-element not implemented"); }
*/
/**
* ::first-letter pseudo-element with ::before pseudo-element not supported
*/
/*
* public void test39a() throws Exception {
* assertStyleForFilename("css3-modsel-39a");
* //STFail(@"::first-letter pseudo-element not implemented"); }
*/
/**
* ::first-letter pseudo-element not supported
*/
/*
* public void test39b() throws Exception {
* assertStyleForFilename("css3-modsel-39b");
* //STFail(@"::first-letter pseudo-element not implemented"); }
*/
/**
* ::first-letter pseudo-element with ::before pseudo-element not supported
*/
/*
* public void test39c() throws Exception {
* assertStyleForFilename("css3-modsel-39c");
* //STFail(@"::first-letter pseudo-element not implemented"); }
*/
/**
* ::before pseudo-element not supported
*/
/*
* public void test41() throws Exception {
* assertStyleForFilename("css3-modsel-41");
* //STFail(@"::before pseudo-element not implemented"); }
*/
/**
* :before pseudo-element not supported
*/
/*
* public void test41a() throws Exception {
* assertStyleForFilename("css3-modsel-41a");
* //STFail(@"::before pseudo-element not implemented"); }
*/
/**
* ::after pseudo-element not supported
*/
/*
* public void test42() throws Exception {
* assertStyleForFilename("css3-modsel-42");
* //STFail(@"::after pseudo-element not implemented"); }
*/
/**
* :after pseudo-element not supported
*/
/*
* public void test42a() throws Exception {
* assertStyleForFilename("css3-modsel-42a");
* //STFail(@"::after pseudo-element not implemented"); }
*/
/**
* Descendant combinator
*/
public void test43() throws Exception {
// verified
assertStyleForFilename("css3-modsel-43");
}
/**
* Descendant combinator
*/
public void test43b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-43b");
}
/**
* Child combinator
*/
public void test44() throws Exception {
// verfied
assertStyleForFilename("css3-modsel-44");
}
/**
* Child combinator
*/
public void test44b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-44b");
}
/**
* Child combinator and classes
*/
public void test44c() throws Exception {
// verified
assertStyleForFilename("css3-modsel-44c");
}
/**
* Child combinatior and IDs
*/
public void test44d() throws Exception {
// verified
assertStyleForFilename("css3-modsel-44d");
}
/**
* Direct adjacent combinator
*/
public void test45() throws Exception {
// verified
assertStyleForFilename("css3-modsel-45");
}
/**
* Direct adjacent combinator
*/
public void test45b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-45b");
}
/**
* Direct adjacent combinator and classes
*/
public void test45c() throws Exception {
// verified
assertStyleForFilename("css3-modsel-45c");
}
/**
* Indirect adjacent combinator
*/
public void test46() throws Exception {
// verified
assertStyleForFilename("css3-modsel-46");
}
/**
* Indirect adjacent combinator
*/
public void test46b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-46b");
}
/**
* NEGATED type element selector
*/
public void test47() throws Exception {
// verified
assertStyleForFilename("css3-modsel-47");
}
/**
* NEGATED universal selector
*/
public void test48() throws Exception {
// verified
assertStyleForFilename("css3-modsel-48");
}
/**
* NEGATED omitted universal selector is forbidden
*/
public void test49() throws Exception {
// verified
assertStyleForFilename("css3-modsel-49");
}
/**
* NEGATED attribute existence selector
*/
public void test50() throws Exception {
// verified
assertStyleForFilename("css3-modsel-50");
}
/**
* NEGATED attribute value selector
*/
public void test51() throws Exception {
// verified
assertStyleForFilename("css3-modsel-51");
}
/**
* NEGATED attribute space-separated value selector
*/
public void test52() throws Exception {
// verified
assertStyleForFilename("css3-modsel-52");
}
/**
* NEGATED attribute dash-separated value selector
*/
public void test53() throws Exception {
// verified
assertStyleForFilename("css3-modsel-53");
}
/**
* NEGATED substring matching attribute selector on beginning
*/
public void test54() throws Exception {
// verified
assertStyleForFilename("css3-modsel-54");
}
/**
* NEGATED substring matching attribute selector on end
*/
public void test55() throws Exception {
// verified
assertStyleForFilename("css3-modsel-55");
}
/**
* NEGATED substring matching attribute selector on middle
*/
public void test56() throws Exception {
// verified
assertStyleForFilename("css3-modsel-56");
}
/**
* NEGATED Attribute existence selector with declared namespace
*/
public void test57() throws Exception {
// verified
assertStyleForFilename("css3-modsel-57");
}
/**
* NEGATED Attribute existence selector with declared namespace
*/
public void test57b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-57b");
}
/**
* NEGATED class selector
*/
public void test59() throws Exception {
// verified
assertStyleForFilename("css3-modsel-59");
}
/**
* NEGATED ID selector
*/
public void test60() throws Exception {
// verified
assertStyleForFilename("css3-modsel-60");
}
/**
* NEGATED :link pseudo-class
*/
public void test61() throws Exception {
// verified
assertStyleForFilename("css3-modsel-61");
}
/**
* NEGATED :visited pseudo-class
*/
public void test62() throws Exception {
// verified
assertStyleForFilename("css3-modsel-62");
}
/**
* NEGATED :hover pseudo-class
*/
/*
* public void test63() throws Exception {
* assertStyleForFilename("css3-modsel-63");
* //STFail(@":hover pseudo-class not implemented"); }
*/
/**
* NEGATED :active pseudo-class
*/
public void test64() throws Exception {
// verified
assertStyleForFilename("css3-modsel-64");
}
/**
* NEGATED :focus pseudo-class
*/
/*
* public void test65() throws Exception {
* assertStyleForFilename("css3-modsel-65");
* //STFail(@":focus pseudo-class not implemented"); }
*/
/**
* NEGATED :target pseudo-class
*/
public void test66() throws Exception {
// verified
assertStyleForFilename("css3-modsel-66");
}
/**
* NEGATED :target pseudo-class
*/
public void test66b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-66b");
}
/**
* NEGATED :lang() pseudo-class
*/
/*
* public void test67() throws Exception {
* assertStyleForFilename("css3-modsel-67");
* //STFail(@":lang() pseudo-class not implemented"); }
*/
/**
* NEGATED :enabled pseudo-class
*/
public void test68() throws Exception {
// verified
assertStyleForFilename("css3-modsel-68");
}
/**
* NEGATED :disabled pseudo-class
*/
public void test69() throws Exception {
// verified
assertStyleForFilename("css3-modsel-69");
}
/**
* NEGATED :checked pseudo-class
*/
public void test70() throws Exception {
// verified
assertStyleForFilename("css3-modsel-70");
}
/**
* NEGATED :root pseudo-class
*/
public void test72() throws Exception {
// verified
assertStyleForFilename("css3-modsel-72");
}
/**
* NEGATED :root pseudo-class
*/
public void test72b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-72b");
}
/**
* NEGATED :nth-child() pseudo-class
*/
public void test73() throws Exception {
// verified
assertStyleForFilename("css3-modsel-73");
}
/**
* NEGATED :nth-child() pseudo-class
*/
public void test73b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-73b");
}
/**
* NEGATED :nth-last-child() pseudo-class
*/
public void test74() throws Exception {
// verified
assertStyleForFilename("css3-modsel-74");
}
/**
* NEGATED :nth-last-child() pseudo-class
*/
public void test74b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-74b");
}
/**
* NEGATED :nth-of-type() pseudo-class
*/
public void test75() throws Exception {
// verified
assertStyleForFilename("css3-modsel-75");
}
/**
* NEGATED :nth-of-type() pseudo-class
*/
public void test75b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-75b");
}
/**
* NEGATED :nth-last-of-type() pseudo-class
*/
public void test76() throws Exception {
// verified
assertStyleForFilename("css3-modsel-76");
}
/**
* NEGATED :nth-last-of-type() pseudo-class
*/
public void test76b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-76b");
}
/**
* NEGATED :first-child pseudo-class
*/
public void test77() throws Exception {
// verified
assertStyleForFilename("css3-modsel-77");
}
/**
* NEGATED :first-child pseudo-class
*/
public void test77b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-77b");
}
/**
* NEGATED :last-child pseudo-class
*/
public void test78() throws Exception {
// verified
assertStyleForFilename("css3-modsel-78");
}
/**
* NEGATED :last-child pseudo-class
*/
public void test78b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-78b");
}
/**
* NEGATED :first-of-type pseudo-class
*/
public void test79() throws Exception {
// verified
assertStyleForFilename("css3-modsel-79");
}
/**
* NEGATED :last-of-type pseudo-class
*/
public void test80() throws Exception {
// verified
assertStyleForFilename("css3-modsel-80");
}
/**
* NEGATED :only-child pseudo-class
*/
public void test81() throws Exception {
// verified
assertStyleForFilename("css3-modsel-81");
}
/**
* NEGATED :only-child pseudo-class
*/
public void test81b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-81b");
}
/**
* NEGATED :only-of-type pseudo-class
*/
public void test82() throws Exception {
// verified
assertStyleForFilename("css3-modsel-82");
}
/**
* NEGATED :only-of-type pseudo-class
*/
public void test82b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-82b");
}
/**
* Negation pseudo-class cannot be an argument of itself
*/
public void test83() throws Exception {
// verified
assertStyleForFilename("css3-modsel-83", 1);
}
/**
* Nondeterministic matching of descendant and child combinators
*/
public void test86() throws Exception {
// verified
assertStyleForFilename("css3-modsel-86");
}
/**
* Nondeterministic matching of direct and indirect adjacent combinators
*/
public void test87() throws Exception {
// verified
assertStyleForFilename("css3-modsel-87");
}
/**
* Nondeterministic matching of direct and indirect adjacent combinators
*/
public void test87b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-87b");
}
/**
* Nondeterministic matching of descendant and direct adjacent combinators
*/
public void test88() throws Exception {
// verified
assertStyleForFilename("css3-modsel-88");
}
/**
* Nondeterministic matching of descendant and direct adjacent combinators
*/
public void test88b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-88b");
}
/**
* Simple combination of descendant and child combinators
*/
public void test89() throws Exception {
// verified
assertStyleForFilename("css3-modsel-89");
}
/**
* Simple combination of direct and indirect adjacent combinators
*/
public void test90() throws Exception {
// verified
assertStyleForFilename("css3-modsel-90");
}
/**
* Simple combination of direct and indirect adjacent combinators
*/
public void test90b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-90b");
}
/**
* Type element selector with declared namespace
*/
public void test91() throws Exception {
// verified
assertStyleForFilename("css3-modsel-91");
}
/**
* Type element selector with universal namespace
*/
public void test92() throws Exception {
// verified
assertStyleForFilename("css3-modsel-92");
}
/**
* Type element selector without declared namespace
*/
public void test93() throws Exception {
// verified
assertStyleForFilename("css3-modsel-93");
}
/**
* Universal selector with declared namespace
*/
public void test94() throws Exception {
// verified
assertStyleForFilename("css3-modsel-94");
}
/**
* Universal selector with declared namespace
*/
public void test94b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-94b");
}
/**
* Universal selector with universal namespace
*/
public void test95() throws Exception {
// verified
assertStyleForFilename("css3-modsel-95");
}
/**
* Universal selector without declared namespace
*/
public void test96() throws Exception {
// verified
assertStyleForFilename("css3-modsel-96");
}
/**
* Universal selector without declared namespace
*/
public void test96b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-96b");
}
/**
* Attribute existence selector with declared namespace
*/
public void test97() throws Exception {
// verified
assertStyleForFilename("css3-modsel-97");
}
/**
* Attribute existence selector with declared namespace
*/
public void test97b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-97b");
}
/**
* Attribute value selector with declared namespace
*/
public void test98() throws Exception {
// verified
assertStyleForFilename("css3-modsel-98");
}
/**
* Attribute value selector with declared namespace
*/
public void test98b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-98b");
}
/**
* Attribute space-separated value selector with declared namespace
*/
public void test99() throws Exception {
// verified
assertStyleForFilename("css3-modsel-99");
}
/**
* Attribute space-separated value selector with declared namespace
*/
public void test99b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-99b");
}
/**
* Attribute dash-separated value selector with declared namespace
*/
public void test100() throws Exception {
// verified
assertStyleForFilename("css3-modsel-100");
}
/**
* Attribute dash-separated value selector with declared namespace
*/
public void test100b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-100b");
}
/**
* Substring matching attribute value selector on beginning with declared
* namespace
*/
public void test101() throws Exception {
// verified
assertStyleForFilename("css3-modsel-101");
}
/**
* Substring matching attribute value selector on beginning with declared
* namespace
*/
public void test101b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-101b");
}
/**
* Substring matching attribute value selector on end with declared
* namespace
*/
public void test102() throws Exception {
// verified
assertStyleForFilename("css3-modsel-102");
}
/**
* Substring matching attribute value selector on end with declared
* namespace
*/
public void test102b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-102b");
}
/**
* Substring matching attribute value selector on middle with declared
* namespace
*/
public void test103() throws Exception {
// verified
assertStyleForFilename("css3-modsel-103");
}
/**
* Substring matching attribute value selector on middle with declared
* namespace
*/
public void test103b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-103b");
}
/**
* Attribute existence selector with universal namespace
*/
public void test104() throws Exception {
// verified
assertStyleForFilename("css3-modsel-104");
}
/**
* Attribute existence selector with universal namespace
*/
public void test104b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-104b");
}
/**
* Attribute value selector with universal namespace
*/
public void test105() throws Exception {
// verified
assertStyleForFilename("css3-modsel-105");
}
/**
* Attribute value selector with universal namespace
*/
public void test105b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-105b");
}
/**
* Attribute space-separated value selector with universal namespace
*/
public void test106() throws Exception {
// verified
assertStyleForFilename("css3-modsel-106");
}
/**
* Attribute space-separated value selector with universal namespace
*/
public void test106b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-106b");
}
/**
* Attribute dash-separated value selector with universal namespace
*/
public void test107() throws Exception {
// verified
assertStyleForFilename("css3-modsel-107");
}
/**
* Attribute dash-separated value selector with universal namespace
*/
public void test107b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-107b");
}
/**
* Substring matching attribute selector on beginning with universal
* namespace
*/
public void test108() throws Exception {
// verified
assertStyleForFilename("css3-modsel-108");
}
/**
* Substring matching attribute selector on beginning with universal
* namespace
*/
public void test108b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-108b");
}
/**
* Substring matching attribute selector on end with universal namespace
*/
public void test109() throws Exception {
// verified
assertStyleForFilename("css3-modsel-109");
}
/**
* Substring matching attribute selector on end with universal namespace
*/
public void test109b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-109b");
}
/**
* Substring matching attribute selector on middle with universal namespace
*/
public void test110() throws Exception {
// verified
assertStyleForFilename("css3-modsel-110");
}
/**
* Substring matching attribute selector on middle with universal namespace
*/
public void test110b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-110b");
}
/**
* Attribute existence selector without declared namespace
*/
public void test111() throws Exception {
// verified
assertStyleForFilename("css3-modsel-111");
}
/**
* Attribute existence selector without declared namespace
*/
public void test111b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-111b");
}
/**
* Attribute value selector without declared namespace
*/
public void test112() throws Exception {
// verified
assertStyleForFilename("css3-modsel-112");
}
/**
* Attribute value selector without declared namespace
*/
public void test112b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-112b");
}
/**
* Attribute space-separated value selector without declared namespace
*/
public void test113() throws Exception {
// verified
assertStyleForFilename("css3-modsel-113");
}
/**
* Attribute space-separated value selector without declared namespace
*/
public void test113b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-113b");
}
/**
* Attribute dash-separated value selector without declared namespace
*/
public void test114() throws Exception {
// verified
assertStyleForFilename("css3-modsel-114");
}
/**
* Attribute dash-separated value selector without declared namespace
*/
public void test114b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-114b");
}
/**
* Substring matching attribute selector on beginning without declared
* namespace
*/
public void test115() throws Exception {
// verified
assertStyleForFilename("css3-modsel-115");
}
/**
* Substring matching attribute selector on beginning without declared
* namespace
*/
public void test115b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-115b");
}
/**
* Substring matching attribute selector on end without declared namespace
*/
public void test116() throws Exception {
// verified
assertStyleForFilename("css3-modsel-116");
}
/**
* Substring matching attribute selector on end without declared namespace
*/
public void test116b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-116b");
}
/**
* Substring matching attribute selector on middle without declared
* namespace
*/
public void test117() throws Exception {
// verified
assertStyleForFilename("css3-modsel-117");
}
/**
* Substring matching attribute selector on middle without declared
* namespace
*/
public void test117b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-117b");
}
/**
* NEGATED type element selector with declared namespace
*/
public void test118() throws Exception {
// verified
assertStyleForFilename("css3-modsel-118");
}
/**
* NEGATED type element selector with universal namespace
*/
public void test119() throws Exception {
// verified
assertStyleForFilename("css3-modsel-119");
}
/**
* NEGATED type element selector without declared namespace
*/
public void test120() throws Exception {
// verified
assertStyleForFilename("css3-modsel-120");
}
/**
* NEGATED universal selector with declared namespace
*/
public void test121() throws Exception {
// verified
assertStyleForFilename("css3-modsel-121");
}
/**
* NEGATED universal selector with universal namespace
*/
public void test122() throws Exception {
// verified
assertStyleForFilename("css3-modsel-122");
}
/**
* NEGATED universal selector with declared namespace
*/
public void test123() throws Exception {
// verified
assertStyleForFilename("css3-modsel-123");
}
/**
* NEGATED universal selector with declared namespace
*/
public void test123b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-123b");
}
/**
* NEGATED Attribute value selector with declared namespace
*/
public void test124() throws Exception {
// verified
assertStyleForFilename("css3-modsel-124");
}
/**
* NEGATED Attribute value selector with declared namespace
*/
public void test124b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-124b");
}
/**
* NEGATED Attribute space-separated value selector with declared namespace
*/
public void test125() throws Exception {
// verified
assertStyleForFilename("css3-modsel-125");
}
/**
* NEGATED Attribute space-separated value selector with declared namespace
*/
public void test125b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-125b");
}
/**
* NEGATED Attribute dash-separated value selector with declared namespace
*/
public void test126() throws Exception {
// verified
assertStyleForFilename("css3-modsel-126");
}
/**
* NEGATED Attribute dash-separated value selector with declared namespace
*/
public void test126b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-126b");
}
/**
* NEGATED Substring matching attribute value selector on beginning with
* declared namespace
*/
public void test127() throws Exception {
// verified
assertStyleForFilename("css3-modsel-127");
}
/**
* NEGATED Substring matching attribute value selector on beginning with
* declared namespace
*/
public void test127b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-127b");
}
/**
* NEGATED Substring matching attribute value selector on end with declared
* namespace
*/
public void test128() throws Exception {
// verified
assertStyleForFilename("css3-modsel-128");
}
/**
* NEGATED Substring matching attribute value selector on end with declared
* namespace
*/
public void test128b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-128b");
}
/**
* NEGATED Substring matching attribute value selector on middle with
* declared namespace
*/
public void test129() throws Exception {
// verified
assertStyleForFilename("css3-modsel-129");
}
/**
* NEGATED Substring matching attribute value selector on middle with
* declared namespace
*/
public void test129b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-129b");
}
/**
* NEGATED Attribute existence selector with universal namespace
*/
public void test130() throws Exception {
// verified
assertStyleForFilename("css3-modsel-130");
}
/**
* NEGATED Attribute existence selector with universal namespace
*/
public void test130b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-130b");
}
/**
* NEGATED Attribute value selector with universal namespace
*/
public void test131() throws Exception {
// verified
assertStyleForFilename("css3-modsel-131");
}
/**
* NEGATED Attribute value selector with universal namespace
*/
public void test131b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-131b");
}
/**
* NEGATED Attribute space-separated value selector with universal namespace
*/
public void test132() throws Exception {
// verified
assertStyleForFilename("css3-modsel-132");
}
/**
* NEGATED Attribute space-separated value selector with universal namespace
*/
public void test132b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-132b");
}
/**
* NEGATED Attribute dash-separated value selector with universal namespace
*/
public void test133() throws Exception {
// verified
assertStyleForFilename("css3-modsel-133");
}
/**
* NEGATED Attribute dash-separated value selector with universal namespace
*/
public void test133b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-133b");
}
/**
* NEGATED Substring matching attribute selector on beginning with universal
* namespace
*/
public void test134() throws Exception {
// verified
assertStyleForFilename("css3-modsel-134");
}
/**
* NEGATED Substring matching attribute selector on beginning with universal
* namespace
*/
public void test134b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-134b");
}
/**
* NEGATED Substring matching attribute selector on end with universal
* namespace
*/
public void test135() throws Exception {
// verified
assertStyleForFilename("css3-modsel-135");
}
/**
* NEGATED Substring matching attribute selector on end with universal
* namespace
*/
public void test135b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-135b");
}
/**
* NEGATED Substring matching attribute selector on middle with universal
* namespace
*/
public void test136() throws Exception {
// verified
assertStyleForFilename("css3-modsel-136");
}
/**
* NEGATED Substring matching attribute selector on middle with universal
* namespace
*/
public void test136b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-136b");
}
/**
* NEGATED Attribute existence selector without declared namespace
*/
public void test137() throws Exception {
// verified
assertStyleForFilename("css3-modsel-137");
}
/**
* NEGATED Attribute existence selector without declared namespace
*/
public void test137b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-137b");
}
/**
* NEGATED Attribute value selector without declared namespace
*/
public void test138() throws Exception {
// verified
assertStyleForFilename("css3-modsel-138");
}
/**
* NEGATED Attribute value selector without declared namespace
*/
public void test138b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-138b");
}
/**
* NEGATED Attribute space-separated value selector without declared
* namespace
*/
public void test139() throws Exception {
// verified
assertStyleForFilename("css3-modsel-139");
}
/**
* NEGATED Attribute space-separated value selector without declared
* namespace
*/
public void test139b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-139b");
}
/**
* NEGATED Attribute dash-separated value selector without declared
* namespace
*/
public void test140() throws Exception {
// verified
assertStyleForFilename("css3-modsel-140");
}
/**
* NEGATED Attribute dash-separated value selector without declared
* namespace
*/
public void test140b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-140b");
}
/**
* NEGATED Substring matching attribute selector on beginning without
* declared namespace
*/
public void test141() throws Exception {
// verified
assertStyleForFilename("css3-modsel-141");
}
/**
* NEGATED Substring matching attribute selector on beginning without
* declared namespace
*/
public void test141b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-141b");
}
/**
* NEGATED Substring matching attribute selector on end without declared
* namespace
*/
public void test142() throws Exception {
// verified
assertStyleForFilename("css3-modsel-142");
}
/**
* NEGATED Substring matching attribute selector on end without declared
* namespace
*/
public void test142b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-142b");
}
/**
* NEGATED Substring matching attribute selector on middle without declared
* namespace
*/
public void test143() throws Exception {
// verified
assertStyleForFilename("css3-modsel-143");
}
/**
* NEGATED Substring matching attribute selector on middle without declared
* namespace
*/
public void test143b() throws Exception {
//
assertStyleForFilename("css3-modsel-143b");
}
/**
* NEGATED :enabled:disabled pseudo-classes
*/
/*
* public void test144() throws Exception {
* assertStyleForFilename("css3-modsel-144");
* //STFail(@":enabled pseudo-class not implemented");
* //STFail(@":disabled pseudo-class not implemented"); }
*/
/**
* :nth-of-type() pseudo-class with hidden elements
*/
public void test145a() throws Exception {
// verified
assertStyleForFilename("css3-modsel-145a");
}
/**
* :nth-of-type() pseudo-class with hidden elements
*/
public void test145b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-145b");
}
/**
* :nth-child() pseudo-class with hidden elements
*/
public void test146a() throws Exception {
// verified
assertStyleForFilename("css3-modsel-146a");
}
/**
* :nth-child() pseudo-class with hidden elements
*/
public void test146b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-146b");
}
/**
* :nth-last-of-type() pseudo-class with collapsed elements
*/
public void test147a() throws Exception {
// verified
assertStyleForFilename("css3-modsel-147a");
}
/**
* :nth-last-of-type() pseudo-class with collapsed elements
*/
public void test147b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-147b");
}
/**
* :empty pseudo-class and text
*/
public void test148() throws Exception {
// verified
assertStyleForFilename("css3-modsel-148");
}
/**
* :empty pseudo-class and empty elements
*/
public void test149() throws Exception {
// verified
assertStyleForFilename("css3-modsel-149");
}
/**
* :empty pseudo-class and empty elements
*/
public void test149b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-149b");
}
/**
* :empty pseudo-class and XML/SGML constructs
*/
public void test150() throws Exception {
// verified
assertStyleForFilename("css3-modsel-150");
}
/**
* :empty pseudo-class and whitespace
*/
public void test151() throws Exception {
// verified
assertStyleForFilename("css3-modsel-151");
}
/**
* :empty pseudo-class and elements
*/
public void test152() throws Exception {
// verified
assertStyleForFilename("css3-modsel-152");
}
/**
* :empty pseudo-class and CDATA
*/
public void test153() throws Exception {
// verified
assertStyleForFilename("css3-modsel-153");
}
/**
* Syntax and parsing
*/
public void test154() throws Exception {
// verified
assertStyleForFilename("css3-modsel-154", 1);
}
/**
* Syntax and parsing
*/
public void test155() throws Exception {
// verified
assertStyleForFilename("css3-modsel-155", 1);
}
/**
* Syntax and parsing
*/
public void test155a() throws Exception {
// verified
assertStyleForFilename("css3-modsel-155a", 1);
}
/**
* Syntax and parsing
*/
public void test155b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-155b");
}
/**
* Syntax and parsing
*/
public void test155c() throws Exception {
// verified
assertStyleForFilename("css3-modsel-155c");
}
/**
* Syntax and parsing
*/
public void test155d() throws Exception {
// verified
assertStyleForFilename("css3-modsel-155d");
}
/**
* Syntax and parsing
*/
public void test156() throws Exception {
// verified
assertStyleForFilename("css3-modsel-156", 1);
}
/**
* Syntax and parsing
*/
public void test156b() throws Exception {
assertStyleForFilename("css3-modsel-156b", 1);
}
/**
* Syntax and parsing
*/
public void test156c() throws Exception {
assertStyleForFilename("css3-modsel-156c", 1);
}
/**
* Syntax and parsing
*/
public void test157() throws Exception {
// verified
assertStyleForFilename("css3-modsel-157", 1);
}
/**
* Syntax and parsing
*/
public void test158() throws Exception {
// verified
assertStyleForFilename("css3-modsel-158", 1);
}
/**
* Syntax and parsing of new pseudo-elements
*/
/*
* public void test159() throws Exception {
* assertStyleForFilename("css3-modsel-159");
* //STFail(@"::selection pseudo-element not implemented"); }
*/
/**
* Syntax and parsing of unknown pseudo-classes
*/
public void test160() throws Exception {
// verified
assertStyleForFilename("css3-modsel-160");
}
/**
* Syntax and parsing of unknown pseudo-classes and pseudo-elements
*/
public void test161() throws Exception {
// verified
assertStyleForFilename("css3-modsel-161");
}
/**
* :first-letter with ::first-letter
*/
/*
* public void test166() throws Exception {
* assertStyleForFilename("css3-modsel-166");
* //STFail(@"::first-letter pseudo-element not implemented"); }
*/
/**
* :first-letter with ::first-letter
*/
/*
* public void test166a() throws Exception {
* assertStyleForFilename("css3-modsel-166a");
* //STFail(@"::first-letter pseudo-element not implemented"); }
*/
/**
* :first-line with ::first-line
*/
/*
* public void test167() throws Exception {
* assertStyleForFilename("css3-modsel-167");
* //STFail(@"::first-letter pseudo-element not implemented"); }
*/
/**
* :first-line with ::first-line
*/
/*
* public void test167a() throws Exception {
* assertStyleForFilename("css3-modsel-167a");
* //STFail(@"::first-letter pseudo-element not implemented"); }
*/
/**
* :before with ::before
*/
/*
* public void test168() throws Exception {
* assertStyleForFilename("css3-modsel-168");
* //STFail(@"::before pseudo-element not implemented"); }
*/
/**
* :before with ::before
*/
/*
* public void test168a() throws Exception {
* assertStyleForFilename("css3-modsel-168a");
* //STFail(@"::before pseudo-element not implemented"); }
*/
/**
* :after with ::after
*/
/*
* public void test169() throws Exception {
* assertStyleForFilename("css3-modsel-169");
* //STFail(@"::after pseudo-element not implemented"); }
*/
/**
* :after with ::after
*/
/*
* public void test169a() throws Exception {
* assertStyleForFilename("css3-modsel-169a");
* //STFail(@"::after pseudo-element not implemented"); }
*/
/**
* Long chains of selectors
*/
public void test170() throws Exception {
// verified
assertStyleForFilename("css3-modsel-170");
}
/**
* Long chains of selectors
*/
public void test170a() throws Exception {
// verified
assertStyleForFilename("css3-modsel-170a");
}
/**
* Long chains of selectors
*/
public void test170b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-170b");
}
/**
* Long chains of selectors
*/
public void test170c() throws Exception {
// verified
assertStyleForFilename("css3-modsel-170c");
}
/**
* Long chains of selectors
*/
public void test170d() throws Exception {
// verified
assertStyleForFilename("css3-modsel-170d");
}
/**
* Classes: XHTML global class attribute
*/
/*
* public void test171() throws Exception {
* assertStyleForFilename("css3-modsel-171");
* //STFail(@"xhtml:class attribute not supported"); }
*/
/**
* Namespaced attribute selectors
*/
public void test172a() throws Exception {
// verified
assertStyleForFilename("css3-modsel-172a");
}
/**
* Namespaced attribute selectors
*/
public void test172b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-172b");
}
/**
* Namespaced attribute selectors
*/
public void test173a() throws Exception {
// verified
assertStyleForFilename("css3-modsel-173a");
}
/**
* Namespaced attribute selectors
*/
public void test173b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-173b");
}
/**
* Attribute selectors with multiple attributes
*/
/*
* public void test174a() throws Exception {
* assertStyleForFilename("css3-modsel-174a");
* //STFail(@"DOMElement doesn't support same named attributes"); }
*/
/**
* NEGATED Attribute selectors with multiple attributes
*/
/*
* public void test174b() throws Exception {
* assertStyleForFilename("css3-modsel-174b");
* //STFail(@"DOMElement doesn't support same named attributes"); }
*/
/**
* Parsing: Numbers in classes
*/
public void test175a() throws Exception {
// verified
assertStyleForFilename("css3-modsel-175a", 1);
}
/**
* Parsing: Numbers in classes
*/
public void test175b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-175b", 1);
}
/**
* Parsing: Numbers in classes
*/
/*
* public void test175c() throws Exception {
* assertStyleForFilename("css3-modsel-175c");
* //STFail(@"unimplemented escape sequence?"); }
*/
/**
* Combinations: classes and IDs
*/
public void test176() throws Exception {
assertStyleForFilename("css3-modsel-176");
}
/**
* Parsing : vs ::
*/
/*
* public void test177a() throws Exception {
* assertStyleForFilename("css3-modsel-177a");
* //STFail(@"::selection pseudo-element not implemented"); }
*/
/**
* Parsing : vs ::
*/
/*
* public void test177b() throws Exception {
* assertStyleForFilename("css3-modsel-177b");
* //STFail(@"::first-child pseudo-element not implemented"); }
*/
/**
* Parsing: :not and pseudo-elements
*/
/*
* public void test178() throws Exception {
* assertStyleForFilename("css3-modsel-178");
* //STFail(@"::after pseudo-element not implemented");
* //STFail(@"::first-line pseudo-element not implemented"); }
*/
/**
* ::first-line on inlines
*/
/*
* public void test179() throws Exception {
* assertStyleForFilename("css3-modsel-179");
* //STFail(@"::first-line pseudo-element not implemented"); }
*/
/**
* ::first-line after <br>
*/
/*
* public void test179a() throws Exception {
* assertStyleForFilename("css3-modsel-179a");
* //STFail(@"::first-line pseudo-element not implemented"); }
*/
/**
* ::first-letter after <br>
*/
/*
* public void test180a() throws Exception {
* assertStyleForFilename("css3-modsel-180a");
* //STFail(@"::first-letter pseudo-element not implemented"); }
*/
/**
* Case sensitivity
*/
/*
* public void test181() throws Exception {
* assertStyleForFilename("css3-modsel-181");
* //STFail(@"case-sensitivity failure with classes?"); }
*/
/**
* Namespaces and \: in selectors
*/
/*
* public void test182() throws Exception {
* assertStyleForFilename("css3-modsel-182"); //STFail(@"possible parse
* failure with foo\:bar matching '<foo:bar...>"); }
*/
/**
* Syntax and parsing of class selectors
*/
/*
* public void test183() throws Exception { // verified
* assertStyleForFilename("css3-modsel-183" ,3);
* //STFail(@"possible parse failure"); }
*/
/**
* Ends-with attribute selector with empty value
*/
public void test184a() throws Exception {
// verified
assertStyleForFilename("css3-modsel-184a");
}
/**
* Starts-with attribute selector with empty value
*/
public void test184b() throws Exception {
// verified
assertStyleForFilename("css3-modsel-184b");
}
/**
* Contains attribute selector with empty value
*/
public void test184c() throws Exception {
// verified
assertStyleForFilename("css3-modsel-184c");
}
/**
* NEGATED ends-with attribute selector with empty value
*/
public void test184d() throws Exception {
// verified
assertStyleForFilename("css3-modsel-184d");
}
/**
* NEGATED starts-with attribute selector with empty value
*/
public void test184e() throws Exception {
// verified
assertStyleForFilename("css3-modsel-184e");
}
/**
* NEGATED contains attribute selector with empty value
*/
public void test184f() throws Exception {
assertStyleForFilename("css3-modsel-184f");
}
/**
* NEGATED Dynamic handling of :empty
*/
/*
* public void testD1() throws Exception {
* assertStyleForFilename("css3-modsel-d1"); //STFail(@"uses javascript"); }
*/
/**
* Dynamic handling of :empty
*/
/*
* public void testD1b() throws Exception {
* assertStyleForFilename("css3-modsel-d1b"); //STFail(@"uses javascript");
* }
*/
/**
* Dynamic handling of combinators
*/
/*
* public void testD2() throws Exception {
* assertStyleForFilename("css3-modsel-d2"); //STFail(@"uses javascript"); }
*/
/**
* Dynamic handling of attribute selectors
*/
/*
* public void testD3() throws Exception {
* assertStyleForFilename("css3-modsel-d3"); //STFail(@"uses javascript"); }
*/
/**
* Dynamic updating of :first-child and :last-child
*/
/*
* public void testD4() throws Exception {
* assertStyleForFilename("css3-modsel-d4"); //STFail(@"uses javascript"); }
*/
}