### Question:
OrientedFace implements Iterable<Vertex> { abstract public boolean isConvex(int vertex); OrientedFace(); boolean flip(int index, LinkedList<OrientedFace> ears, Vertex n); Tetrahedron flip(Vertex n, List<OrientedFace> ears); Tetrahedron[] flip2to3(); Tetrahedron[] flip3to2(int reflexEdge); abstract Tetrahedron getAdjacent(); Vertex getAdjacentVertex(); V getAdjacentVertexOrdinal(); abstract Vertex[] getEdge(Vertex v); abstract Tetrahedron getIncident(); abstract Vertex getIncidentVertex(); abstract Vertex getVertex(int anIndex); boolean hasAdjacent(); abstract boolean includes(Vertex v); abstract int indexOf(Vertex v); abstract boolean isConvex(int vertex); abstract boolean isReflex(int vertex); boolean isRegular(); @Override Iterator<Vertex> iterator(); abstract int orientationOf(Vertex query);  }### Answer:
@Test public void testIsConvex() { Vertex a = new Vertex(-1, -1, 1); Vertex b = new Vertex(1, 1, 1); Vertex c = new Vertex(-1, 1, -1); Vertex d = new Vertex(1, -1, -1); Vertex e = new Vertex(-1, 1, 1); Tetrahedron tA = new Tetrahedron(a, b, c, d); Tetrahedron tB = new Tetrahedron(b, c, a, e); tA.setNeighbor(D, tB); tB.setNeighbor(D, tA); OrientedFace faceAB = tA.getFace(D); for (int i = 0; i < 2; i++) { assertTrue(faceAB.isConvex(i)); assertFalse(faceAB.isReflex(i)); } }