/** Comprueba la correcta generación de un documento que contenga los datos dados. */
  @Test
  public void testDocumento() {
    String esperado = toString("TraductorVacio.xml");

    assertEquals(
        "Generación incorrecta de documento Moodle XML.",
        esperado,
        traductor.documento(new ArrayList<Plantilla>()));
  }
  /** Comprueba la correcta traducción de un problema de tipo Aho-Sethi-Ullman subtipo tablas. */
  @Test
  public void testTraduceAhoSethiUllmanTablas() {
    AhoSethiUllman problema = new AhoSethiUllman("((a|b*)a*c)*");
    String esperado = toString("TraductorASUTablas.xml");
    String encontrado = traductor.traduceASUTablas(problema).toString();

    encontrado = encontrado.replaceAll("\\{1:MULTICHOICE:[^}]*\\}", "{1:MULTICHOICE:}");

    assertEquals(
        "Traducción Moodle XML incorrecta de problema AhoSethiUllman subtipo tablas.",
        esperado,
        encontrado);
  }
  /**
   * Comprueba la correcta traducción de un problema de construcción de subconjuntos subtipo
   * expresión.
   */
  @Test
  public void testTraduceConstruccionSubconjuntosExpresion() {
    ConstruccionSubconjuntos problema = new ConstruccionSubconjuntos("((a|b*)a*c)*");
    String esperado = toString("TraductorCSExpresion.xml");
    String encontrado = traductor.traduceCSExpresion(problema).toString();

    encontrado = encontrado.replaceAll("\\{1:MULTICHOICE:.*\\}", "{1:MULTICHOICE:}");

    assertEquals(
        "Traducción Moodle XML incorrecta de problema de construcción de subconjuntos subtipo expresión.",
        esperado,
        encontrado);
  }
  /** Comprueba la correcta traducción de un problema de tipo Aho-Sethi-Ullman subtipo árbol. */
  @Test
  public void testTraduceAhoSethiUllmanEtiquetado() {
    AhoSethiUllman problema = new AhoSethiUllman("((a|b*)a*c)*");
    String esperado = toString("TraductorASUEtiquetado.xml");
    String encontrado = traductor.traduceASUEtiquetado(problema).toString();

    encontrado =
        encontrado.replaceAll(
            "<img src=\"@@PLUGINFILE@@/[^.]*.jpg\" alt=\"\" />",
            "<img src=\"@@PLUGINFILE@@/.jpg\" alt=\"\" />");
    encontrado = encontrado.replaceAll("<file name=[^<]*</file>", "<file name=</file>");
    encontrado = encontrado.replaceAll("\\{1:MULTICHOICE:[^}]*\\}", "{1:MULTICHOICE:}");

    assertEquals(
        "Traducción Moodle XML incorrecta de problema AhoSethiUllman subtipo etiquetado.",
        esperado,
        encontrado);
  }
  /**
   * Comprueba la correcta traducción de un problema de construcción de subconjuntos subtipo
   * autómata.
   */
  @Test
  public void testTraduceConstruccionSubconjuntosAutomata() {
    ConstruccionSubconjuntos problema = new ConstruccionSubconjuntos("((a|b*)a*c)*");
    String esperado = toString("TraductorCSAutomata.xml");
    String encontrado = traductor.traduceCSAutomata(problema).toString();

    encontrado =
        encontrado.replaceAll(
            "<img src=\"@@PLUGINFILE@@/[^.]*.jpg\" alt=\"\" />",
            "<img src=\"@@PLUGINFILE@@/.jpg\" alt=\"\" />");
    encontrado = encontrado.replaceAll("<file name=[^<]*</file>", "<file name=</file>");
    encontrado = encontrado.replaceAll("\\{1:MULTICHOICE:[^}]*\\}", "{1:MULTICHOICE:}");

    assertEquals(
        "Traducción Moodle XML incorrecta de problema de construcción de subconjuntos subtipo autómata.",
        esperado,
        encontrado);
  }