<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;


public class wyrazeniaTest {


    @Test
    public void testStale() {
        Stala s = Stala.tworz(5);
        assertEquals("5.0",s.toString());
        assertEquals(5.0,s.wartosc(1), 0.0001);
        assertEquals(5.0,s.wartosc(2), 0.0001);
        Stala s_zero = Stala.tworz(0);
        assertEquals("0.0",s_zero.toString());
        Stala s_jeden = Stala.tworz(1);
        assertEquals("1.0",s_jeden.toString());
    }

    @Test
    public void testStaleUpraszczenie() {
        Wyrazenie w1 = Stala.tworz(1);
        Wyrazenie w2 = Stala.tworz(2);
        Wyrazenie w3 = w1.dodaj(w2);
        assertEquals("3.0",w3.toString());
    }

    @Test
    public void testDodawanie() {
        assertEquals(4.0,Stala.tworz(2).dodaj(Stala.tworz(2)).wartosc(0), 0.0001);
        // czy dziaĹa upraszczanie
        assertEquals("4.0",Stala.tworz(2).dodaj(Stala.tworz(2)).toString());
    }

    @Test
    public void testOdejmowanie() {
        assertEquals(1.0,Stala.tworz(2).odejmij(Stala.tworz(1)).wartosc(0), 0.0001);
        // czy dziaĹa upraszczanie
        assertEquals("1.0",Stala.tworz(2).odejmij(Stala.tworz(1)).toString());
    }

    @Test
    public void testMnozenie() {
        assertEquals(6.0,Stala.tworz(2).pomnoz(Stala.tworz(3)).wartosc(0), 0.0001);
        // czy dziaĹa upraszczanie
        assertEquals("6.0",Stala.tworz(2).pomnoz(Stala.tworz(3)).toString());
    }

    @Test
    public void testDzielenie() {
        assertEquals(3.0,Stala.tworz(6).podziel(Stala.tworz(2)).wartosc(0), 0.0001);
        assertEquals("3.0",Stala.tworz(6).podziel(Stala.tworz(2)).toString());
    }

    @Test
    public void testPriorytety() {
        assertEquals("(x+2.0)*3.0",Zmienna.tworz().dodaj(Stala.tworz(2)).pomnoz(Stala.tworz(3)).toString());
    }


    @Test
    public void testZmienna() {
        assertEquals(0.0,Zmienna.tworz().wartosc(0), 0.0001);
        assertEquals(1.0,Zmienna.tworz().wartosc(1), 0.0001);
        assertEquals(2.0,Zmienna.tworz().wartosc(2), 0.0001);
        assertEquals("x",Zmienna.tworz().toString());
        assertEquals("x+1.0",Zmienna.tworz().dodaj(Stala.tworz(1)).toString());
        // upraszczanie
        assertEquals("x",Zmienna.tworz().dodaj(Stala.tworz(0)).toString());
        assertEquals("x",Zmienna.tworz().pomnoz(Stala.tworz(1)).toString());
    }

    @Test
    public void testPochodna() {
        assertEquals("2.0",Zmienna.tworz().dodaj(Zmienna.tworz()).pochodna().toString());

        assertEquals("1.0",Zmienna.tworz().pochodna().toString());
        assertEquals("x+x",Zmienna.tworz().pomnoz(Zmienna.tworz()).pochodna().toString());
        assertEquals("0.0",Zmienna.tworz().odejmij(Zmienna.tworz()).pochodna().toString());
        assertEquals("(x-x)/(x*x)",Zmienna.tworz().podziel(Zmienna.tworz()).pochodna().toString());
        assertEquals("-(sin(x))",new Cos(Zmienna.tworz()).pochodna().toString());
    }

    @Test
    public void testCalka() {
        assertTrue(Math.abs(2.0-Zmienna.tworz().calka(0,2,3))&lt;0.01);
        assertTrue(Math.abs(2.0-Zmienna.tworz().calka(0,2,10))&lt;0.01);
        assertEquals(20.0,Stala.tworz(2).calka(0,10,10), 0.0001);
    }


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