示例#1
0
  public void testItShouldChangeItsSymbolWhenGivenAValidNewOne() {
    Molecule molecule = new DefaultMolecule();
    Atom atom = molecule.addAtom("C");

    atom.setSymbol("O");

    assertEquals("O", atom.getSymbol());
  }
示例#2
0
  public void testItShouldReportValenceTwoForAPrimaryDoubleBondTerminal() {
    Molecule molecule = new DefaultMolecule();
    Atom c1 = molecule.addAtom("C");
    Atom c2 = molecule.addAtom("C");

    molecule.connect(c1, c2, 2);

    assertEquals(2, c1.getValence());
  }
示例#3
0
  public void testItShouldThrowWhenSettingAnIllegalAtomLabel() {
    Molecule molecule = new DefaultMolecule();
    Atom atom = molecule.addAtom("C");

    try {
      atom.setSymbol("bailout");
      fail();
    } catch (IllegalStateException e) {
    }
  }
示例#4
0
  public void testItShouldUpdateItsCoordinatesWhenMoved() {
    Molecule molecule = new DefaultMolecule();
    Atom atom = molecule.addAtom("C");

    atom.move(100, 100, 0);

    assertEquals(100d, atom.getX());
    assertEquals(100d, atom.getY());
    assertEquals(0d, atom.getZ());
  }
示例#5
0
  public void testItShouldReportValenceFourForAQuaternaryCarbon() {
    Molecule molecule = new DefaultMolecule();
    Atom c1 = molecule.addAtom("C");
    Atom c2 = molecule.addAtom("C");
    Atom c3 = molecule.addAtom("C");
    Atom c4 = molecule.addAtom("C");
    Atom c5 = molecule.addAtom("C");

    molecule.connect(c1, c2, 1);
    molecule.connect(c1, c3, 1);
    molecule.connect(c1, c4, 1);
    molecule.connect(c1, c5, 1);

    assertEquals(4, c1.getValence());
  }
示例#6
0
  public void testItShouldThrowWhenIllegalRadicalIsSet() {
    Molecule molecule = new DefaultMolecule();
    Atom atom = molecule.addAtom("O");

    try {
      atom.setRadical(-1);
      fail();
    } catch (IllegalStateException ignore) {
    }

    try {
      atom.setRadical(4);
      fail();
    } catch (IllegalStateException ignore) {
    }
  }
示例#7
0
  public Atom getClosestAtom(Point2D graphCord) {
    Atom closestAtom = null;
    double closestDistance = Double.MAX_VALUE;

    for (int i = 0; i < molecule.countAtoms(); i++) {
      Atom currentAtom = molecule.getAtom(i);
      Point2D currentPointGraph =
          realCordToGraphCord(new Point2D(currentAtom.getX(), currentAtom.getY()));
      double distance = GeometryTools.calcDistance(graphCord, currentPointGraph);

      if (distance <= renderer.getRendererModel().getAtomRadius() && distance < closestDistance) {
        closestAtom = currentAtom;
        closestDistance = distance;
      }
    }
    return closestAtom;
  }