Example #1
0
 @Test
 public void testGetInstance_String_IChemObjectBuilder() throws Exception {
   String configFile = "org/openscience/cdk/config/data/structgen_atomtypes.xml";
   AtomTypeFactory atf = AtomTypeFactory.getInstance(configFile, new ChemObject().getBuilder());
   Assert.assertNotNull(atf);
   Assert.assertNotSame(0, atf.getSize());
 }
Example #2
0
  /**
   * Test reading from a XML config file with content like:
   *
   * <pre>
   *   <atomType id="C">
   *    <!-- for example in CC-->
   *    <atom elementType="C" formalCharge="0">
   *      <scalar dataType="xsd:double" dictRef="cdk:maxBondOrder">1.0</scalar>
   *      <scalar dataType="xsd:double" dictRef="cdk:bondOrderSum">4.0</scalar>
   *      <scalar dataType="xsd:integer" dictRef="cdk:formalNeighbourCount">4</scalar>
   *      <scalar dataType="xsd:integer" dictRef="cdk:valency">4</scalar>
   *    </atom>
   *    <scalar dataType="xsd:string" dictRef="cdk:hybridization">sp3</scalar>
   *    <scalar dataType="xsd:string" dictRef="cdk:DA">-</scalar>
   *    <scalar dataType="xsd:string" dictRef="cdk:sphericalMatcher">[CSP]-[0-4][-]?+;[A-Za-z\+\-&amp;&amp;[^=%]]{0,6}[(].*+</scalar>
   *  </atomType>
   * </pre>
   *
   * @throws Exception if the atom typ info cannot be loaded
   */
  @Test
  public void testGetAtomTypeFromMM2() throws Exception {
    AtomTypeFactory factory;
    factory =
        AtomTypeFactory.getInstance(
            "org/openscience/cdk/config/data/mm2_atomtypes.xml", new ChemObject().getBuilder());

    IAtomType atomType = factory.getAtomType("C");
    Assert.assertNotNull(atomType);
    Assert.assertEquals("C", atomType.getSymbol());
    Assert.assertEquals("C", atomType.getAtomTypeName());
    Assert.assertEquals(
        "[CSP]-[0-4][-]?+;[A-Za-z\\+\\-&&[^=%]]{0,6}[(].*+",
        atomType.getProperty(CDKConstants.SPHERICAL_MATCHER));
    Assert.assertEquals(Hybridization.SP3, atomType.getHybridization());

    atomType = factory.getAtomType("Sthi");
    Assert.assertNotNull(atomType);
    Assert.assertEquals("S", atomType.getSymbol());
    Assert.assertEquals("Sthi", atomType.getAtomTypeName());
    Assert.assertEquals(
        "S-[2];[H]{0,3}+=C.*+", atomType.getProperty(CDKConstants.SPHERICAL_MATCHER));
    Assert.assertEquals(Hybridization.SP2, atomType.getHybridization());
    Assert.assertTrue(atomType.getFlag(CDKConstants.IS_HYDROGENBOND_ACCEPTOR));
    Assert.assertEquals(5, atomType.getProperty(CDKConstants.PART_OF_RING_OF_SIZE));
  }
Example #3
0
 @Test
 public void testGetAllAtomTypes() throws Exception {
   AtomTypeFactory atf = AtomTypeFactory.getInstance(new ChemObject().getBuilder());
   IAtomType[] types = atf.getAllAtomTypes();
   Assert.assertNotNull(types);
   Assert.assertNotSame(0, types.length);
 }
Example #4
0
 @Test
 public void testGetInstance_InputStream_String_IChemObjectBuilder() throws Exception {
   String configFile = "org/openscience/cdk/config/data/structgen_atomtypes.xml";
   InputStream ins = this.getClass().getClassLoader().getResourceAsStream(configFile);
   AtomTypeFactory atf = AtomTypeFactory.getInstance(ins, "xml", new ChemObject().getBuilder());
   Assert.assertNotNull(atf);
   Assert.assertNotSame(0, atf.getSize());
 }
Example #5
0
  @Test
  public void testGetAtomTypeFromJmol() throws Exception {
    AtomTypeFactory factory =
        AtomTypeFactory.getInstance(
            "org/openscience/cdk/config/data/jmol_atomtypes.txt", new ChemObject().getBuilder());
    IAtomType atomType = factory.getAtomType("H");

    Assert.assertNotNull(atomType);
    Assert.assertEquals("H", atomType.getSymbol());
    Assert.assertEquals("H", atomType.getAtomTypeName());
  }
Example #6
0
  @Test
  public void testConfigure_IAtom() throws Exception {
    IAtomType atomType;
    IAtom atom = new org.openscience.cdk.Atom("X");
    atom.setAtomTypeName("C.ar");
    AtomTypeFactory factory =
        AtomTypeFactory.getInstance(
            "org/openscience/cdk/config/data/mol2_atomtypes.xml", new ChemObject().getBuilder());
    atomType = factory.configure(atom);
    Assert.assertNotNull(atomType);

    Assert.assertEquals("C", atom.getSymbol());
  }
Example #7
0
  @Test
  public void testGetAtomTypeFromOWL() throws Exception {
    AtomTypeFactory factory =
        AtomTypeFactory.getInstance(
            "org/openscience/cdk/dict/data/cdk-atom-types.owl", new ChemObject().getBuilder());
    IAtomType atomType = factory.getAtomType("C.sp3");
    Assert.assertNotNull(atomType);
    Assert.assertEquals("C", atomType.getSymbol());
    Assert.assertEquals("C.sp3", atomType.getAtomTypeName());
    Assert.assertEquals(IAtomType.Hybridization.SP3, atomType.getHybridization());
    Assert.assertEquals(0, atomType.getFormalCharge().intValue());
    Assert.assertEquals(4, atomType.getFormalNeighbourCount().intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT) instanceof Integer);
    Assert.assertEquals(
        0, ((Integer) atomType.getProperty(CDKConstants.LONE_PAIR_COUNT)).intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.PI_BOND_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.PI_BOND_COUNT) instanceof Integer);
    Assert.assertEquals(0, ((Integer) atomType.getProperty(CDKConstants.PI_BOND_COUNT)).intValue());

    atomType = factory.getAtomType("N.sp2.radical");
    Assert.assertNotNull(atomType);
    Assert.assertEquals("N", atomType.getSymbol());
    Assert.assertEquals("N.sp2.radical", atomType.getAtomTypeName());
    Assert.assertEquals(IAtomType.Hybridization.SP2, atomType.getHybridization());
    Assert.assertEquals(0, atomType.getFormalCharge().intValue());
    Assert.assertEquals(1, atomType.getFormalNeighbourCount().intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT) instanceof Integer);
    Assert.assertEquals(
        1, ((Integer) atomType.getProperty(CDKConstants.LONE_PAIR_COUNT)).intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.PI_BOND_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.PI_BOND_COUNT) instanceof Integer);
    Assert.assertEquals(1, ((Integer) atomType.getProperty(CDKConstants.PI_BOND_COUNT)).intValue());

    atomType = factory.getAtomType("N.planar3");
    Assert.assertNotNull(atomType);
    Assert.assertEquals("N", atomType.getSymbol());
    Assert.assertEquals("N.planar3", atomType.getAtomTypeName());
    Assert.assertEquals(IAtomType.Hybridization.PLANAR3, atomType.getHybridization());
    Assert.assertEquals(0, atomType.getFormalCharge().intValue());
    Assert.assertEquals(3, atomType.getFormalNeighbourCount().intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT) instanceof Integer);
    Assert.assertEquals(
        1, ((Integer) atomType.getProperty(CDKConstants.LONE_PAIR_COUNT)).intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.PI_BOND_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.PI_BOND_COUNT) instanceof Integer);
    Assert.assertEquals(0, ((Integer) atomType.getProperty(CDKConstants.PI_BOND_COUNT)).intValue());
  }
Example #8
0
  @Test
  public void testGetAtomTypes_String() throws Exception {
    IAtomType[] atomTypes = atf.getAtomTypes("C");

    Assert.assertNotNull(atomTypes);
    Assert.assertTrue(0 < atomTypes.length);
    Assert.assertEquals("C", atomTypes[0].getSymbol());
  }
Example #9
0
 @Test
 public void testGetAtomType_String() throws Exception {
   IAtomType atomType = atf.getAtomType("C4");
   Assert.assertNotNull(atomType);
   Assert.assertEquals("C", atomType.getSymbol());
   Assert.assertEquals("C4", atomType.getAtomTypeName());
   Assert.assertEquals(4.0, atomType.getBondOrderSum(), 0.001);
   Assert.assertEquals(IBond.Order.TRIPLE, atomType.getMaxBondOrder());
 }
Example #10
0
 @Test
 public void testGetInstance_IChemObjectBuilder() throws Exception {
   AtomTypeFactory atf = AtomTypeFactory.getInstance(new ChemObject().getBuilder());
   Assert.assertNotNull(atf);
 }
Example #11
0
 @Test
 public void testAtomTypeFactory() {
   Assert.assertNotNull(atf);
   Assert.assertNotSame(atf.getSize(), 0);
 }
Example #12
0
/**
 * Checks the functionality of the AtomTypeFactory.
 *
 * @cdk.module test-core
 */
public class AtomTypeFactoryTest extends CDKTestCase {

  static final AtomTypeFactory atf = AtomTypeFactory.getInstance(new ChemObject().getBuilder());

  private static final String JAXP_SCHEMA_LANGUAGE =
      "http://java.sun.com/xml/jaxp/properties/schemaLanguage";

  private static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";

  static File tmpCMLSchema;

  static {
    try {
      InputStream in =
          AtomTypeFactoryTest.class
              .getClassLoader()
              .getResourceAsStream("org/openscience/cdk/io/cml/data/cml25b1.xsd");
      tmpCMLSchema = copyFileToTmp("cml2.5.b1", ".xsd", in, null, null);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  @Test
  public void testAtomTypeFactory() {
    Assert.assertNotNull(atf);
    Assert.assertNotSame(atf.getSize(), 0);
  }

  @Test
  public void testGetInstance_InputStream_String_IChemObjectBuilder() throws Exception {
    String configFile = "org/openscience/cdk/config/data/structgen_atomtypes.xml";
    InputStream ins = this.getClass().getClassLoader().getResourceAsStream(configFile);
    AtomTypeFactory atf = AtomTypeFactory.getInstance(ins, "xml", new ChemObject().getBuilder());
    Assert.assertNotNull(atf);
    Assert.assertNotSame(0, atf.getSize());
  }

  @Test
  public void testGetInstance_String_IChemObjectBuilder() throws Exception {
    String configFile = "org/openscience/cdk/config/data/structgen_atomtypes.xml";
    AtomTypeFactory atf = AtomTypeFactory.getInstance(configFile, new ChemObject().getBuilder());
    Assert.assertNotNull(atf);
    Assert.assertNotSame(0, atf.getSize());
  }

  @Test
  public void testGetInstance_IChemObjectBuilder() throws Exception {
    AtomTypeFactory atf = AtomTypeFactory.getInstance(new ChemObject().getBuilder());
    Assert.assertNotNull(atf);
  }

  @Test
  public void testGetSize() throws Exception {
    AtomTypeFactory atf = AtomTypeFactory.getInstance(new ChemObject().getBuilder());
    Assert.assertNotSame(0, atf.getSize());
  }

  @Test
  public void testGetAllAtomTypes() throws Exception {
    AtomTypeFactory atf = AtomTypeFactory.getInstance(new ChemObject().getBuilder());
    IAtomType[] types = atf.getAllAtomTypes();
    Assert.assertNotNull(types);
    Assert.assertNotSame(0, types.length);
  }

  @Test
  public void testGetAtomType_String() throws Exception {
    IAtomType atomType = atf.getAtomType("C4");
    Assert.assertNotNull(atomType);
    Assert.assertEquals("C", atomType.getSymbol());
    Assert.assertEquals("C4", atomType.getAtomTypeName());
    Assert.assertEquals(4.0, atomType.getBondOrderSum(), 0.001);
    Assert.assertEquals(IBond.Order.TRIPLE, atomType.getMaxBondOrder());
  }

  @Test
  public void testGetAtomTypes_String() throws Exception {
    IAtomType[] atomTypes = atf.getAtomTypes("C");

    Assert.assertNotNull(atomTypes);
    Assert.assertTrue(0 < atomTypes.length);
    Assert.assertEquals("C", atomTypes[0].getSymbol());
  }

  @Test
  public void testGetAtomTypeFromPDB() throws Exception {
    AtomTypeFactory factory =
        AtomTypeFactory.getInstance(
            "org/openscience/cdk/config/data/pdb_atomtypes.xml", new ChemObject().getBuilder());
    IAtomType atomType = factory.getAtomType("ALA.CA");

    Assert.assertNotNull(atomType);
    Assert.assertEquals("C", atomType.getSymbol());
    Assert.assertEquals("ALA.CA", atomType.getAtomTypeName());
  }

  @Test
  public void testGetAtomTypeFromOWL() throws Exception {
    AtomTypeFactory factory =
        AtomTypeFactory.getInstance(
            "org/openscience/cdk/dict/data/cdk-atom-types.owl", new ChemObject().getBuilder());
    IAtomType atomType = factory.getAtomType("C.sp3");
    Assert.assertNotNull(atomType);
    Assert.assertEquals("C", atomType.getSymbol());
    Assert.assertEquals("C.sp3", atomType.getAtomTypeName());
    Assert.assertEquals(IAtomType.Hybridization.SP3, atomType.getHybridization());
    Assert.assertEquals(0, atomType.getFormalCharge().intValue());
    Assert.assertEquals(4, atomType.getFormalNeighbourCount().intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT) instanceof Integer);
    Assert.assertEquals(
        0, ((Integer) atomType.getProperty(CDKConstants.LONE_PAIR_COUNT)).intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.PI_BOND_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.PI_BOND_COUNT) instanceof Integer);
    Assert.assertEquals(0, ((Integer) atomType.getProperty(CDKConstants.PI_BOND_COUNT)).intValue());

    atomType = factory.getAtomType("N.sp2.radical");
    Assert.assertNotNull(atomType);
    Assert.assertEquals("N", atomType.getSymbol());
    Assert.assertEquals("N.sp2.radical", atomType.getAtomTypeName());
    Assert.assertEquals(IAtomType.Hybridization.SP2, atomType.getHybridization());
    Assert.assertEquals(0, atomType.getFormalCharge().intValue());
    Assert.assertEquals(1, atomType.getFormalNeighbourCount().intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT) instanceof Integer);
    Assert.assertEquals(
        1, ((Integer) atomType.getProperty(CDKConstants.LONE_PAIR_COUNT)).intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.PI_BOND_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.PI_BOND_COUNT) instanceof Integer);
    Assert.assertEquals(1, ((Integer) atomType.getProperty(CDKConstants.PI_BOND_COUNT)).intValue());

    atomType = factory.getAtomType("N.planar3");
    Assert.assertNotNull(atomType);
    Assert.assertEquals("N", atomType.getSymbol());
    Assert.assertEquals("N.planar3", atomType.getAtomTypeName());
    Assert.assertEquals(IAtomType.Hybridization.PLANAR3, atomType.getHybridization());
    Assert.assertEquals(0, atomType.getFormalCharge().intValue());
    Assert.assertEquals(3, atomType.getFormalNeighbourCount().intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT) instanceof Integer);
    Assert.assertEquals(
        1, ((Integer) atomType.getProperty(CDKConstants.LONE_PAIR_COUNT)).intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.PI_BOND_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.PI_BOND_COUNT) instanceof Integer);
    Assert.assertEquals(0, ((Integer) atomType.getProperty(CDKConstants.PI_BOND_COUNT)).intValue());
  }

  @Test
  public void testGetAtomTypeFromOWL_Sybyl() throws Exception {
    AtomTypeFactory factory =
        AtomTypeFactory.getInstance(
            "org/openscience/cdk/dict/data/sybyl-atom-types.owl", new ChemObject().getBuilder());
    IAtomType atomType = factory.getAtomType("C.3");

    Assert.assertNotNull(atomType);
    Assert.assertEquals("C", atomType.getSymbol());
    Assert.assertEquals("C.3", atomType.getAtomTypeName());
    Assert.assertEquals(4, atomType.getFormalNeighbourCount().intValue());
    Assert.assertEquals(IAtomType.Hybridization.SP3, atomType.getHybridization());
    Assert.assertEquals(0, atomType.getFormalCharge().intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.LONE_PAIR_COUNT) instanceof Integer);
    Assert.assertEquals(
        0, ((Integer) atomType.getProperty(CDKConstants.LONE_PAIR_COUNT)).intValue());
    Assert.assertNotNull(atomType.getProperty(CDKConstants.PI_BOND_COUNT));
    Assert.assertTrue(atomType.getProperty(CDKConstants.PI_BOND_COUNT) instanceof Integer);
    Assert.assertEquals(0, ((Integer) atomType.getProperty(CDKConstants.PI_BOND_COUNT)).intValue());
  }

  @Test
  public void testGetAtomTypeFromJmol() throws Exception {
    AtomTypeFactory factory =
        AtomTypeFactory.getInstance(
            "org/openscience/cdk/config/data/jmol_atomtypes.txt", new ChemObject().getBuilder());
    IAtomType atomType = factory.getAtomType("H");

    Assert.assertNotNull(atomType);
    Assert.assertEquals("H", atomType.getSymbol());
    Assert.assertEquals("H", atomType.getAtomTypeName());
  }

  @Test
  public void testConfigure_IAtom() throws Exception {
    IAtomType atomType;
    IAtom atom = new org.openscience.cdk.Atom("X");
    atom.setAtomTypeName("C.ar");
    AtomTypeFactory factory =
        AtomTypeFactory.getInstance(
            "org/openscience/cdk/config/data/mol2_atomtypes.xml", new ChemObject().getBuilder());
    atomType = factory.configure(atom);
    Assert.assertNotNull(atomType);

    Assert.assertEquals("C", atom.getSymbol());
  }

  /**
   * Test reading from a XML config file with content like:
   *
   * <pre>
   *   <atomType id="C">
   *    <!-- for example in CC-->
   *    <atom elementType="C" formalCharge="0">
   *      <scalar dataType="xsd:double" dictRef="cdk:maxBondOrder">1.0</scalar>
   *      <scalar dataType="xsd:double" dictRef="cdk:bondOrderSum">4.0</scalar>
   *      <scalar dataType="xsd:integer" dictRef="cdk:formalNeighbourCount">4</scalar>
   *      <scalar dataType="xsd:integer" dictRef="cdk:valency">4</scalar>
   *    </atom>
   *    <scalar dataType="xsd:string" dictRef="cdk:hybridization">sp3</scalar>
   *    <scalar dataType="xsd:string" dictRef="cdk:DA">-</scalar>
   *    <scalar dataType="xsd:string" dictRef="cdk:sphericalMatcher">[CSP]-[0-4][-]?+;[A-Za-z\+\-&amp;&amp;[^=%]]{0,6}[(].*+</scalar>
   *  </atomType>
   * </pre>
   *
   * @throws Exception if the atom typ info cannot be loaded
   */
  @Test
  public void testGetAtomTypeFromMM2() throws Exception {
    AtomTypeFactory factory;
    factory =
        AtomTypeFactory.getInstance(
            "org/openscience/cdk/config/data/mm2_atomtypes.xml", new ChemObject().getBuilder());

    IAtomType atomType = factory.getAtomType("C");
    Assert.assertNotNull(atomType);
    Assert.assertEquals("C", atomType.getSymbol());
    Assert.assertEquals("C", atomType.getAtomTypeName());
    Assert.assertEquals(
        "[CSP]-[0-4][-]?+;[A-Za-z\\+\\-&&[^=%]]{0,6}[(].*+",
        atomType.getProperty(CDKConstants.SPHERICAL_MATCHER));
    Assert.assertEquals(Hybridization.SP3, atomType.getHybridization());

    atomType = factory.getAtomType("Sthi");
    Assert.assertNotNull(atomType);
    Assert.assertEquals("S", atomType.getSymbol());
    Assert.assertEquals("Sthi", atomType.getAtomTypeName());
    Assert.assertEquals(
        "S-[2];[H]{0,3}+=C.*+", atomType.getProperty(CDKConstants.SPHERICAL_MATCHER));
    Assert.assertEquals(Hybridization.SP2, atomType.getHybridization());
    Assert.assertTrue(atomType.getFlag(CDKConstants.IS_HYDROGENBOND_ACCEPTOR));
    Assert.assertEquals(5, atomType.getProperty(CDKConstants.PART_OF_RING_OF_SIZE));
  }

  @Test
  public void testCanReadCMLSchema() throws Exception {
    InputStream cmlSchema = new FileInputStream(tmpCMLSchema);
    Assert.assertNotNull("Could not find the CML schema", cmlSchema);

    DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();

    // make sure the schema is read
    Document schemaDoc = parser.parse(cmlSchema);
    Assert.assertNotNull(schemaDoc.getFirstChild());
    Assert.assertEquals("xsd:schema", schemaDoc.getFirstChild().getNodeName());
  }

  @Test
  public void testXMLValidityMM2() throws Exception {
    assertValidCML("org/openscience/cdk/config/data/mm2_atomtypes.xml", "MM2");
  }

  @Test
  public void testXMLValidityMMFF94() throws Exception {
    assertValidCML("org/openscience/cdk/config/data/mmff94_atomtypes.xml", "MMFF94");
  }

  @Test
  public void testXMLValidityMol2() throws Exception {
    assertValidCML("org/openscience/cdk/config/data/mol2_atomtypes.xml", "Mol2");
  }

  @Test
  public void testXMLValidityPDB() throws Exception {
    assertValidCML("org/openscience/cdk/config/data/pdb_atomtypes.xml", "PDB");
  }

  @Test
  public void testXMLValidityStructGen() throws Exception {
    assertValidCML("org/openscience/cdk/config/data/structgen_atomtypes.xml", "StructGen");
  }

  private void assertValidCML(String atomTypeList, String shortcut) throws Exception {
    InputStream ins = this.getClass().getClassLoader().getResourceAsStream(atomTypeList);
    File tmpInput =
        copyFileToTmp(
            shortcut,
            ".cmlinput",
            ins,
            "../../io/cml/data/cml25b1.xsd",
            "file://" + tmpCMLSchema.getAbsolutePath());
    Assert.assertNotNull("Could not find the atom type list CML source", ins);

    if (System.getProperty("java.version").indexOf("1.6") != -1
        || System.getProperty("java.version").indexOf("1.7") != -1) {

      InputStream cmlSchema = new FileInputStream(tmpCMLSchema);
      Assert.assertNotNull("Could not find the CML schema", cmlSchema);
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
      factory.setNamespaceAware(true);
      factory.setValidating(true);
      factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
      factory.setAttribute(JAXP_SCHEMA_LANGUAGE, cmlSchema);
      factory.setFeature("http://apache.org/xml/features/validation/schema", true);

      DocumentBuilder parser = factory.newDocumentBuilder();
      parser.setErrorHandler(new SAXValidityErrorHandler(shortcut));
      parser.parse(new FileInputStream(tmpInput));
    } else if (System.getProperty("java.version").indexOf("1.5") != -1) {
      DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
      Document document = parser.parse(tmpInput);
      SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
      Source schemaFile = new StreamSource(tmpCMLSchema);
      Schema schema = factory.newSchema(schemaFile);
      Validator validator = schema.newValidator();
      validator.validate(new DOMSource(document));
    } else {
      Assert.fail(
          "Don't know how to validate with Java version: " + System.getProperty("java.version"));
    }
  }

  /**
   * Copies a file to TMP (whatever that is on your platform), and optionally replaces a String on
   * the fly. The temporary file will be named prefix+suffix
   *
   * @param prefix Prefix of the temporary file name
   * @param suffix Suffix of the temporary file name
   * @param in InputStream to copy from
   * @param toReplace String to replace. Null, if nothing needs to be replaced.
   * @param replaceWith String that replaces the toReplace. Null, if nothing needs to be replaced.
   * @return The temporary file/
   * @throws IOException if the temp file cannot be created
   */
  private static File copyFileToTmp(
      String prefix, String suffix, InputStream in, String toReplace, String replaceWith)
      throws IOException {
    File tmpFile = File.createTempFile(prefix, suffix);
    FileOutputStream out = new FileOutputStream(tmpFile);
    byte[] buf = new byte[4096];
    int i;
    while ((i = in.read(buf)) != -1) {
      if (toReplace != null
          && replaceWith != null
          && i >= toReplace.length()
          && new String(buf).contains(toReplace)) {
        // a replacement has been defined
        String newString = new String(buf).replaceAll(toReplace, replaceWith);
        out.write(newString.getBytes());
      } else {
        // no replacement needs to be done
        out.write(buf, 0, i);
      }
    }
    in.close();
    out.close();
    tmpFile.deleteOnExit();
    return tmpFile;
  }

  class SAXValidityErrorHandler implements ErrorHandler {

    private String atomTypeList;

    public SAXValidityErrorHandler(String atomTypeList) {
      this.atomTypeList = atomTypeList;
    }

    public void error(SAXParseException arg0) throws SAXException {
      Assert.fail(
          atomTypeList
              + " is not valid on line "
              + arg0.getLineNumber()
              + ": "
              + arg0.getMessage());
    }

    public void fatalError(SAXParseException arg0) throws SAXException {
      Assert.fail(
          atomTypeList
              + " is not valid on line "
              + arg0.getLineNumber()
              + ": "
              + arg0.getMessage());
    }

    public void warning(SAXParseException arg0) throws SAXException {
      // warnings are fine
    }
  }
}
Example #13
0
 @Test
 public void testGetSize() throws Exception {
   AtomTypeFactory atf = AtomTypeFactory.getInstance(new ChemObject().getBuilder());
   Assert.assertNotSame(0, atf.getSize());
 }