Package com.adobe.epubcheck.cli

Source Code of com.adobe.epubcheck.cli.CLITest$CountingOutStream

package com.adobe.epubcheck.cli;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.URL;

import org.junit.Test;

import com.adobe.epubcheck.tool.EpubChecker;

public class CLITest
{
  private static String epubPath = "/30/epub/";
  private static String expPath = "/30/expanded/";
  private static String singlePath = "/30/single/";

  @Test
  public void testNPE()
  {
    assertEquals(1, run(null));
  }

  //@Test // STA - test passes in UI but fails in Maven
  public void testValidEPUB()
  {
    assertEquals(0, run(new String[]{epubPath + "valid/lorem.epub"}));
  }

  @Test
  public void testValidEPUBArchive()
  {
    assertEquals(0, run(new String[]{expPath + "valid/lorem-basic-ncx/", "-mode", "exp", "-save"}));
   
    // since issue #255 we need the absolute path to check the saved outfile
    File baseDirParent = new File(getAbsoluteBasedir(expPath + "valid/lorem-basic-ncx/")).getParentFile();
    File out = new File(baseDirParent + File.separator + "lorem-basic-ncx.epub");
   
    assertTrue(out.exists());
    if (out.exists())
    {
      out.delete();
    }
  }

  @Test
  public void testInvalidEPUB()
  {
    assertEquals(1, run(new String[]{epubPath + "invalid/lorem-xht-sch-1.epub"}));
  }

  @Test
  public void testValidExp()
  {
    assertEquals(0, run(new String[]{expPath + "valid/lorem-basic/", "-mode", "exp"}));
  }

  @Test
  public void testInvalidExp()
  {
    assertEquals(1, run(new String[]{expPath + "invalid/lorem-xhtml-rng-1/", "-mode", "exp"}));
  }

  @Test
  public void testValidSingle()
  {
    assertEquals(0, run(new String[]{singlePath + "nav/valid/nav001.xhtml", "-mode", "nav"}));
  }

  @Test
  public void testInvalidSingle()
  {
    assertEquals(1, run(new String[]{singlePath + "nav/invalid/noTocNav.xhtml", "-mode", "nav"}));
  }

  @Test
  public void testValidExtension1()
  {
    assertEquals(0, run(new String[]{epubPath + "valid/extension-1.ePub"}));
  }
 
  @Test
  public void testOutputXMLCreation()
  {
    File xmlOut1 = new File("outfile.xml");
    if(xmlOut1.exists()) xmlOut1.delete();
   
    assertEquals(0, run(new String[]{epubPath + "valid/lorem.epub", "-out", "outfile.xml"}))
   
    assertTrue(xmlOut1.exists());
    if(xmlOut1.exists()) xmlOut1.delete();
  }

  @Test
  public void testOutputXMLCreation_ModeExpanded()
  {
    File xmlOut2 = new File("outfile2.xml");
    if(xmlOut2.exists())
    {
      xmlOut2.delete();
    }
   
    assertEquals(1, run(new String[]{expPath + "invalid/lorem-xhtml-rng-1/", "-mode", "exp", "-out", "outfile2.xml"}))
   
    assertTrue(xmlOut2.exists());
    if(xmlOut2.exists())
    {
      xmlOut2.delete();
    }
  }
 
  @Test
  public void testQuietRun()
  {
    PrintStream outOrig = System.out;
    CountingOutStream outCount = new CountingOutStream();
    System.setOut(new PrintStream(outCount));
    String epubFilePath = getAbsoluteBasedir(epubPath + "valid/lorem.epub");
    EpubChecker epubChecker = new EpubChecker();
    int result = epubChecker.run(new String[]{ epubFilePath, "--quiet", "--failonwarnings" });
    System.setOut(outOrig);
    assertEquals(0, result);
    // System.err.println("Output [" + outCount.getValue() + "]");
    assertEquals("Output [" + outCount.getValue() + "]", 0, outCount.getCounts());
  }

  @Test
  public void testQuietRunWithOutput()
  {
    final String xmlOutFileName = "outfile4.xml";
    final File xmlOut = new File(xmlOutFileName);
    if(xmlOut.exists()) xmlOut.delete();

    PrintStream outOrig = System.out;
    CountingOutStream outCount = new CountingOutStream();
    System.setOut(new PrintStream(outCount));
    String epubFilePath = getAbsoluteBasedir(epubPath + "valid/lorem.epub");
    EpubChecker epubChecker = new EpubChecker();
    int result = epubChecker.run(new String[]{ epubFilePath, "--quiet", "--out", xmlOutFileName});
    System.setOut(outOrig);
    assertEquals(0, result);
    // System.err.println("Output [" + outCount.getValue() + "]");
    assertEquals("Output [" + outCount.getValue() + "]", 0, outCount.getCounts());

    assertTrue(xmlOut.exists());
    if(xmlOut.exists())
    {
      xmlOut.delete();
    }
  }

  private int run(String[] args, boolean verbose)
  {
    PrintStream outOrig = System.out;
    PrintStream errOrig = System.err;
    if (!verbose)
    {
      System.setOut(new NullPrintStream());
      System.setErr(new NullPrintStream());
    }

    if (args != null)
    {
      args[0] = getAbsoluteBasedir(args[0]);
    }
    else
    {
      return 1;
    }
    EpubChecker checker = new EpubChecker();
    int result = checker.run(args);
    System.setOut(outOrig);
    System.setErr(errOrig);
    return result;
  }

  public int run(String[] args)
  {
    return run(args, false);
  }

  private String getAbsoluteBasedir(String base)
  {
    URL fileURL = this.getClass().getResource(base);
    return fileURL!=null?fileURL.getPath():base;
  }

  class CountingOutStream extends OutputStream
  {
    int counts;
    StringBuilder sb = new StringBuilder();
   
    public int getCounts()
    {
      return counts;
    }

    public String getValue()
    {
      return sb.toString();
    }
   
    @Override
    public void write(int b)
    {
      sb.append((char)b);
        counts++;
    }
  }
 
  class NullPrintStream extends PrintStream
  {
    public NullPrintStream()
    {
      super(new OutputStream()
        {
          @Override
          public void write(int b) throws IOException
          {
          }
        });
    }
  }
 
TOP

Related Classes of com.adobe.epubcheck.cli.CLITest$CountingOutStream

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.