<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">import java.io.*;
import java.util.Locale;
import java.util.Scanner;
import junit.framework.TestCase;

public class figuryZObslugaBledowTest extends TestCase {

    private ByteArrayOutputStream outContent;;

    private void setUpStreams(String inp) {
        outContent = new ByteArrayOutputStream();
        System.setOut(new PrintStream(outContent));
        System.setIn(new ByteArrayInputStream(inp.getBytes()));
    }

    private void cleanUpStreams() {
        System.setOut(null);
        System.setIn(null);
    }

    private String runProgram(String inp) {
      return runProgram(inp,null);
    }


    private String runProgram(String inp,String arg) {
        try {
            setUpStreams(inp);
            if (arg==null) {
              Main.main(new String[0]);
            } else {
              Main.main(new String[]{arg});
            }
            return outContent.toString();
        } finally {
            cleanUpStreams();
        }
    }
    
    private String T(double x1,double y1,double x2, double y2, double x3, double y3) {
        return String.format("T %1$.6f %2$.6f %3$.6f %4$.6f %5$.6f %6$.6f",x1,y1,x2,y2,x3,y3)+"\n";
    }

    private String K(double x1,double y1,double r) {
        return String.format("K %1$.6f %2$.6f %3$.6f",x1,y1,r)+"\n";
    }

    private String P(double x1,double y1,double x2, double y2) {
        return String.format("P %1$.6f %2$.6f %3$.6f %4$.6f",x1,y1,x2,y2)+"\n";
    }
    
    private void zapiszPlik(String nazwa, String zawartosc) {
        try {
          BufferedWriter out = new BufferedWriter(new FileWriter(nazwa));
          out.write(zawartosc);
          out.close();
        } catch(Exception e) {
        }
    }
    
    private void prostyTest(int n,String opis,double wynik) {
        String inp=""+n+"\n"+opis;
        String should_be="Pole "+String.format("%.6f",wynik)+"\n"+opis;
        assertEquals(should_be, runProgram(inp));
        zapiszPlik("a.in",inp);
        assertEquals(should_be, runProgram("","a.in"));
    }

    public void testTrojkat() {
      prostyTest(1,T(0,0,1,1,2,0),1.000000);
      prostyTest(1,T(2,0,1,1,0,0),1.000000);
    }

    public void testProstokat() {
      prostyTest(1,P(0,0,2,3),6.000000);
      prostyTest(1,P(2,3,0,0),6.000000);
    }

    public void testKolo() {
      prostyTest(1,K(0,0,1),3.141593);
    }

    public void testWiele() {
      prostyTest(3,T(0,0,1,1,2,0)+P(0,0,2,3)+K(0,0,1),10.141593);
    }
    
    public void testBladUruchomieniaNieznanyPlik() {
      String res=runProgram("","nieznany_plik.in");
      assertEquals(res.substring(0,18),"BĹÄd uruchomienia:");
    }

    public void testBladDanychZlaWartoscN() {
      String res=runProgram("abc");
      assertEquals(res.substring(0,17),"BĹÄd w wierszu 1:");
    }

    public void testBladDanychPusteWejscie() {
      String res=runProgram("");
      assertEquals(res.substring(0,17),"BĹÄd w wierszu 1:");
    }

    public void testBladDanychZlaFigura() {
      String res=runProgram("1\nA");
      assertEquals(res.substring(0,17),"BĹÄd w wierszu 2:");
      res=runProgram("1\nKK 1 1 1\n");
      assertEquals(res.substring(0,17),"BĹÄd w wierszu 2:");
    }

    public void testBladDanychZaMaloArg() {
      String res=runProgram("1\nK 1 2");
      assertEquals(res.substring(0,17),"BĹÄd w wierszu 2:");
    }

    public void testBladDanychZaDuzoArg() {
      String res=runProgram("1\nK 1 2 3 4\n");
      assertEquals(res.substring(0,17),"BĹÄd w wierszu 2:");
    }

    public void testBladDanychZaDuzoDanych() {
      String res=runProgram("1\nK 1 2 1\nK 1 2 1\n");
      assertEquals(res.substring(0,17),"BĹÄd w wierszu 3:");
    }



    

}
</pre></body></html>