package funkcje;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

class V4_JUnit {

	@Test
	void testSilnia0() {
		// to ię wypisze. Ale w testach normalnie nie umieszcza się żadnych printów
		System.out.println("a kuku");
		
		long wynik = Funkcje.silnia(0);
		
		// Asercja sprawdza czy warunek jest prawziwy
		// Jeśli tak → nic się nie dzieje
		// Jeśli nie → wyrzucany jest wyjątek, który jest obsługiwany przez JUnit-a
		// assert z języka Java - proste rozwiązanie
		// assert wynik == 1;
		// assert wynik == 1 : "niepoprawny wynik silni";
		
		// Najczęściej używa się asercji dostarczanych przez JUnit,
		// (dzięki temu mamy sensowne komunikaty o błędach)
		// a z nich najczęściej assertEquals:
		assertEquals(1, wynik);
		System.out.println("koniec testu 0");
	}
	
	@Test
	void testSilnia2() {
		long wynik = Funkcje.silnia(2);
		assertEquals(2, wynik);
	}

	@Test
	void testSilnia5() {
		long wynik = Funkcje.silnia(5);
		assertEquals(120, wynik);
	}

	@Test
	void testSilnia10() {
		long wynik = Funkcje.silnia(10);
		assertEquals(3628800, wynik);
	}

}
