import java.io.*;
import junit.framework.TestCase;
public class TabularStuffTester extends TestCase {
  private static BufferedReader br;
  private static PrintStream ps, oldOut= System.out;
  
  public void testTabularStuffZero() throws IOException {
    ps= new PrintStream(new FileOutputStream("zeroTable.txt"));
    System.setOut(ps);
    TabularStuff.printTriangle(0);
    br= new BufferedReader(new FileReader("zeroTable.txt"));
    String zeroTable= "";
    for (String in= br.readLine(); in != null; in= br.readLine()) {
      zeroTable += in + "\n";
    }
    assertTrue("A triangle with a zero:",
               zeroTable.matches("\\s*0\\s*\\n+"));
    ps.close();
    br.close();
  }
  
  public void testTabularStuffFour() throws IOException {
    ps = new PrintStream(new FileOutputStream("fourTable.txt"));
    System.setOut(ps);
    TabularStuff.printTriangle(4);
    br= new BufferedReader(new FileReader("fourTable.txt"));
    String fourTable= "";
    String fourTableMatcher= "\\s*4\\s+2\\s*\\n+\\s*2\\s*\\n+";
    for (String in= br.readLine(); in != null; in= br.readLine()) {
      fourTable += in + "\n";
    }
    assertTrue("Triangle starting from 4:",
               fourTable.matches(fourTableMatcher));
  }
  
  
  public void testTabularStuffEight() throws IOException {
    ps= new PrintStream(new FileOutputStream("eightTable.txt"));
    System.setOut(ps);
    TabularStuff.printTriangle(8);
    br= new BufferedReader(new FileReader("eightTable.txt"));
    String eightTable= "",
      eightTableMatcher= "\\s*8\\s+6\\s+4\\s*\\s+" +
      "\\s*6\\s+4\\s*\\n+\\s*4\\s*\\n+";
    for (String in= br.readLine(); in != null; in= br.readLine()) {
      eightTable += in + "\n";
    }
    assertTrue("Triangle starting from 8:",
               eightTable.matches(eightTableMatcher));
  }
  
  public void testTabularStuffTwelve() throws IOException {
    ps= new PrintStream(new FileOutputStream("twelveTable.txt"));
    System.setOut(ps);
    TabularStuff.printTriangle(12);
    br= new BufferedReader(new FileReader("twelveTable.txt"));
    String twelveTable= "",
      twelveTableMatcher= "\\s*12\\s+10\\s+8\\s+6\\s*\\n+" +
      "\\s*10\\s+8\\s+6\\s*\\n+" +
      "\\s*8\\s+6\\s*\\n+" +
      "\\s*6\\s*\\n+";
    for (String in= br.readLine(); in != null; in= br.readLine()) {
      twelveTable += in + "\n";
    }
    assertTrue("Triangle starting from 12:",
               twelveTable.matches(twelveTableMatcher));
  }
  
}


