/** Test parse() with an esoteric token. */
  public void testParseWithEsotericToken() {
    StringNamespace sns = (StringNamespace) StringNamespace.parse("org:!argouml:!m:odel", ":!");

    assertEquals(sns.toString(), "org:!argouml:!m:odel");

    sns.popNamespaceElement();
    assertEquals(sns.toString(), "org:!argouml");

    sns.popNamespaceElement();
    assertEquals(sns.toString(), "org");

    sns.popNamespaceElement();
    assertEquals(sns.toString(), "");

    assertTrue(sns.isEmpty());
  }
  /** Test parse() with a UML token. */
  public void testParseWithUMLToken() {
    StringNamespace sns =
        (StringNamespace) StringNamespace.parse("org::argouml::model", Namespace.UML_NS_TOKEN);

    assertEquals(sns.toString(), "org::argouml::model");

    sns.popNamespaceElement();
    assertEquals(sns.toString(), "org::argouml");

    sns.popNamespaceElement();
    assertEquals(sns.toString(), "org");

    sns.popNamespaceElement();
    assertEquals(sns.toString(), "");

    assertTrue(sns.isEmpty());
  }
  /** Test parse() with a Java token. */
  public void testParseWithJavaToken() {
    StringNamespace sns =
        (StringNamespace) StringNamespace.parse("org.argouml.model.", Namespace.JAVA_NS_TOKEN);

    assertEquals(sns.toString(), "org.argouml.model");

    sns.popNamespaceElement();
    assertEquals(sns.toString(), "org.argouml");

    sns.popNamespaceElement();
    assertEquals(sns.toString(), "org");

    sns.popNamespaceElement();
    assertEquals(sns.toString(), "");

    assertTrue(sns.isEmpty());
  }