### Question:
ArchiveClassPathRoot implements ClasspathRoot { public Collection<ElementName> classNames() { final List<ElementName> names = new ArrayList<>(); final ZipFile root = getRoot(); try { final Enumeration<? extends ZipEntry> entries = root.entries(); while (entries.hasMoreElements()) { final ZipEntry entry = entries.nextElement(); if (!entry.isDirectory() && entry.getName().endsWith(".class")) { names.add(stringToClassName(entry.getName())); } } return names; } finally { closeQuietly(root); } } ArchiveClassPathRoot(final File file); InputStream getData(final ElementName name); InputStream getResource(final String name); @Override String toString(); Collection<ElementName> classNames();  }### Answer:
@Test public void classNamesShouldReturnAllClassNamesIArchive() { final Collection<ElementName> expected = Arrays.asList(ElementName.fromString("injar.p1.P1NoTest$InnerTest"), ElementName.fromString("injar.p1.P1NoTest"), ElementName.fromString("injar.p1.P1Test"), ElementName.fromString("injar.p2.P2Test")); assertThat(expected).isEqualTo(this.testee.classNames()); }