package funkcje;

import static org.junit.Assert.*;

import java.util.Arrays;
import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

@RunWith(Parameterized.class)
public class TestySparametryzowane {
	private int argument;
	private long oczekiwanyWynik;
	
	public TestySparametryzowane(int argument, long oczekiwanyWynik) {
		this.argument = argument;
		this.oczekiwanyWynik = oczekiwanyWynik;
	}

	@Parameters
	public static List<Object[]> daneDoTestu() {
//		return List.of(
//				new Object[] {0, 0},
//				new Object[] {1, 1},
//				new Object[] {2, 1},
//				new Object[] {5, 5},
//				new Object[] {10, 55});

		Object[][] dane = {
				{0, 0},
				{1, 1},
				{2, 1},
				{5, 5},
				{10, 55},
				{40, 102334155L},
				{80, 23416728348467685L}};
		return Arrays.asList(dane);
	}
	
	
	@Test
	public void testFib() {
		long wynik = Funkcje.fib(argument);
		assertEquals(oczekiwanyWynik, wynik);
	}

}
