/**
   * Retrieve all Clearcase UCM component (with pvob suffix) for a stream
   *
   * @param stream the stream name like 'P_EngDesk_Product_3.2_int@\P_ORC'
   * @param clearTool the clearcase launcher
   * @return component list attached to the stream like
   *     ['DocGen_PapeeteDoc@\P_ORC','DocMgt_Modulo@\P_ORC']
   * @throws IOException
   * @throws InterruptedException
   */
  private List<String> getComponentList(ClearTool clearTool, String stream)
      throws IOException, InterruptedException {
    String output = clearTool.lsstream(stream, null, "\"%[components]XCp\"");
    String comp[] = output.split(",\\s");
    List<String> result = new ArrayList<String>();
    final String prefix = "component:";
    for (String c : comp) {
      if (StringUtils.startsWith(c, prefix)) {
        result.add(StringUtils.difference(prefix, c));
      } else {
        throw new IOException(
            "Invalid format for component in output. Must starts with 'component:' : " + c);
      }
    }

    return result;
  }
  public void testCheckForBadComments() {
    String s = "abc <!-- comment <!-- def --> <!-- ghi --> jkl";
    String t = "abc <!-- comment --><!-- def --> <!-- ghi --> jkl";
    String ns = NRC_HTMLDocumentByCobra.checkForBadComments(s);
    assertTrue("Wrong: " + StringUtils.difference(t, ns), ns.equals(t));

    s = "abc <!-- comment --><!-- def --> <!-- ghi --> jkl";
    t = "abc <!-- comment --><!-- def --> <!-- ghi --> jkl";
    ns = NRC_HTMLDocumentByCobra.checkForBadComments(s);

    s = "abc <!-- comment --><!-- def --> <!-- ghi jkl";
    t = "abc <!-- comment --><!-- def --> <!-- ghi jkl-->";
    ns = NRC_HTMLDocumentByCobra.checkForBadComments(s);

    s = "abc <!-- comment --><!-- def <!-- ghi --> jkl";
    t = "abc <!-- comment --><!-- def --><!-- ghi --> jkl";
    ns = NRC_HTMLDocumentByCobra.checkForBadComments(s);
  }
 public void ___testToUnicode_2() {
   String t1 = null;
   String t2 = null;
   String t3 = null;
   try {
     t1 =
         new String(
             "\u1403\u14c5\u1555\u1483\u0020\u1403\u14c4\u1483\u144e\u1450\u1466\u0020\u1405\u1583\u1405\u14f0\u1466\u0020\u1403\u14a1\u14d7\u154b\u14aa"
                 .getBytes("utf-8"));
     t2 =
         new String(
             "\u1403\u14c5\u1555\u1483\u0020\u1403\u14c4\u1483\u144e\u1450\u1466\u0020\u1405\u1583\u1405\u14f0\u1466\u0020\u1403\u14a1\u14d7\u154b\u14aa"
                 .getBytes("utf-8"));
     t3 =
         new String(
             "\u1403\u14c5\u1555\u1483\u0020\u1403\u14c4\u1483\u144e\u1450\u1466"
                 .getBytes("utf-8"));
   } catch (UnsupportedEncodingException e1) {
   }
   String targetContent =
       "Content-Type: text/html; charset=utf-8\n\n<!--END OF HTTP HEADERS-->"
           .concat(
               "<html><head><base href=\"file:///"
                   + System.getenv("JAVA_INUKTITUT")
                   + "/unitTests/files_for_tests/testTranslit.html\"><title>Lecture des polices</title>\n")
           .concat("<link href=\"styles.css\" rel=\"stylesheet\" type=\"text/css\">\n")
           .concat("<style type=\"text/css\">\n")
           .concat(".nunac { font-family:nunacom, Verdana, Arial, Helvetica, sans-serif; }\n")
           .concat("</style>\n</head>\n<body>\n")
           .concat(
               "Texte en nunacom: <div id=\"tnunacom\" class=nunac><span style=\"font-family:pigiarniq\">")
           .concat(t1)
           .concat("</span></div>\n")
           .concat(
               "Texte en naamajut: <div id=\"tnaamajut\" class=\"texte naamajut\"><span style=\"font-family:pigiarniq\">")
           .concat(t2)
           .concat("</span></div>\n")
           .concat(
               "Texte en Times New Roman: <div id=\"ttimes\" style=\"font-family:Times New Roman, Helvetica;\">inuuvik inuktitut</div>\n")
           .concat(
               "Texte en georgia:<br><font id=\"tgeorgia\" face=\"georgia\">inuuvik inuktitut</font>\n")
           .concat("<p>\n")
           .concat(
               "Texte en prosyl: <div class=\"texte prosyl\"><div id=\"tprosyl\"><span style=\"font-family:pigiarniq\">")
           .concat(t3)
           .concat("</span></div></div></p>\n")
           .concat("</body></html>");
   NRC_HTMLDocumentByCobra doc = null;
   try {
     String lineSeparator = System.getProperty("line.separator");
     doc =
         new NRC_HTMLDocumentByCobra(
             "file:///"
                 + System.getenv("JAVA_INUKTITUT")
                 + "/unitTests/files_for_tests/testTranslit.html");
     ByteArrayOutputStream out = new ByteArrayOutputStream();
     doc.toUnicode(out);
     doc.close();
     String content = out.toString();
     out.close();
     content = content.replaceAll(lineSeparator, "\n");
     if (!content.equals(targetContent))
       for (int i = 0; i < targetContent.length(); i++)
         if (content.charAt(i) == targetContent.charAt(i)) System.out.print(content.charAt(i));
         else {
           System.out.println(
               "'"
                   + content.charAt(i)
                   + "' ["
                   + (int) content.charAt(i)
                   + "] (should have been '"
                   + targetContent.charAt(i)
                   + "' ["
                   + (int) targetContent.charAt(i)
                   + "])");
           break;
         }
     assertTrue(
         "Wrong length: '"
             + content.length()
             + "' should have been '"
             + targetContent.length()
             + "'\n"
             + StringUtils.difference(targetContent, content),
         content.length() == targetContent.length());
     assertTrue(
         "Wrong content: " + StringUtils.difference(targetContent, content),
         content.equals(targetContent));
   } catch (Exception e) {
     e.printStackTrace();
     if (doc != null) doc.close();
     fail();
   }
 }
 public void ___testToUnicode_1() {
   String t1 = null;
   String t2 = null;
   String t3 = null;
   t1 =
       new String(
           "\u157f\u144e\u1550\u14a5\u1405\u1466\u0020\u1405\u140a\u1595\u14c7\u1593\u14c2\u1550\u14a5\u1405\u1466\u0020\n\u146d\u1591\u14ea\u14d5\u1550\u1439\u1550\u14a5\u1595\u14c2\u1483\u0020\u1438\u1550\u14c7\u1405\u144e\u14a7\u1466\u0020\u144e\u146d\u14d5\u1585\u1433\u1466");
   t2 =
       new String(
           "\u1403\u1483\u15a0\u148d\u14f1\u1595\u14c2\u1472\u14ea\u14da\u1595\u14a5\u1483\u0020\u1405\u152d\u154b\u1483\u14f4\u1583\u1555\u14a1\u152a\u140a\u1550\u1450\u14a5\u1483\u0020\u157f\u144e\u1550\u14a5\u1405\u1466\u0020\n\u1405\u140a\u1595\u14c7\u1593\u14c2\u1550\u14a5\u1405\u158f\u14d0\u14c2\u0020\u14f4\u1585\u146d\u14da\u1405\u1585\u1433\u1585\u0020\u0031\u0030\u0030\u1472\u14f4\u1595\u14c2\u1483\u0020\u14aa\u1483\u1431\u1490\u1583\u1585\u1450\u14a5\u1483\u0020\u1405\u1583\u1405\u14ef\u1405\u14c2\u1470\u152a\u14c2\u1483\u0020\n\u14aa\u1403\u0020\u0037");
   t3 =
       new String(
           "\u0039\u002c\u0020\u0032\u0030\u0030\u0032\u14a5\u0020\n\u1472\u144e\u14aa\u144e\u1466\u144e\u144e\u14ea\u14d7\u148b\u1466\u0020\u1403\u14c4\u14d5\u14ab\u14c2\u1483\u0020\u1456\u1483\u146f\u140a\u0020\u14c4\u14c7\u158f\u1466\u1455\u0020\u140a\u1450\u1585\u1455\u1405\u152a\u1483\u14f4\u158f\u14d0\u14c4\u1466\u0020\u1438\u1550\u14c7\u1405\u144e\u1483\u14f4\u158f\u14d0\u14c2\u1483\u002e");
   String targetContent =
       "Content-Type: text/html; charset=utf-8\n\n<!--END OF HTTP HEADERS-->"
           .concat(
               "<html><head><base href=\"file:///"
                   + System.getenv("JAVA_INUKTITUT")
                   + "/unitTests/files_for_tests/testFontTelling.html\"><title>Test pour la détermination des polices</title></head>\n")
           .concat("<body>\n")
           .concat(
               "<p><font face=\"nunacom\" size=\"3\"><a href=\"story3.html\"><span style=\"font-family:pigiarniq\">")
           .concat(t1)
           .concat("</span></a></font> <br>\n")
           .concat("<font face=\"nunacom\" size=\"2\"><span style=\"font-family:pigiarniq\">")
           .concat(t2)
           .concat(
               "</span><font face=\"Arial, Helvetica, sans-serif\">-</font><span style=\"font-family:pigiarniq\">")
           .concat(t3)
           .concat("</span></font><br>\n</p>\n")
           .concat("</body></html>");
   NRC_HTMLDocumentByCobra doc = null;
   try {
     String lineSeparator = System.getProperty("line.separator");
     doc =
         new NRC_HTMLDocumentByCobra(
             "file:///"
                 + System.getenv("JAVA_INUKTITUT")
                 + "/unitTests/files_for_tests/testFontTelling.html");
     ByteArrayOutputStream out = new ByteArrayOutputStream();
     doc.toUnicode(out);
     doc.close();
     String content = out.toString("utf-8");
     out.close();
     content = content.replaceAll(lineSeparator, "\n");
     if (!content.equals(targetContent))
       for (int i = 0; i < targetContent.length(); i++)
         if (content.charAt(i) == targetContent.charAt(i))
           System.out.println(
               i + "    '" + content.charAt(i) + "' [" + (int) content.charAt(i) + "]");
         else {
           System.out.println(
               "'"
                   + content.charAt(i)
                   + "' ["
                   + (int) content.charAt(i)
                   + "] (should have been '"
                   + targetContent.charAt(i)
                   + "' ["
                   + (int) targetContent.charAt(i)
                   + "])");
           break;
         }
     assertTrue(
         "Wrong length: '"
             + content.length()
             + "' should have been '"
             + targetContent.length()
             + "'\n"
             + StringUtils.difference(targetContent, content),
         content.length() == targetContent.length());
     assertTrue(
         "Wrong content: " + StringUtils.difference(targetContent, content),
         content.equals(targetContent));
   } catch (Exception e) {
     e.printStackTrace();
     if (doc != null) doc.close();
     fail();
   }
 }