package ru.rsdn.defensive.sample;

import java.util.Arrays;
import java.util.Collection;

import net.sf.oval.guard.ConstraintsViolatedException;

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

/**
 * Тестирование срабатывания контрактных спецификаций компании на некорректных
 * данных
 */
@RunWith(value = Parameterized.class)
public class CompanyCrashTest {
	private final String name;

	private final String tin;

	private final String email;

	/**
	 * Конструктор
	 * @param _name название
	 * @param _tin ИНН
	 * @param _email электронная почта
	 */
	public CompanyCrashTest(String _name, String _tin, String _email) {
		name = _name;
		tin = _tin;
		email = _email;
	}

	@Parameters
	public static Collection<?> data() {
		return Arrays.asList(new Object[][] { { null, "", "" },
				{ "", null, "" }, { "", "", null },
				{ "RSDN", "012345678", "submit@rsdn.ru" },
				{ "RSDN", "012abc6789", "submit@rsdn.ru" },
				{ "RSDN", "0123456789", "@rsdn.ru" } });
	}

	@Test(expected = ConstraintsViolatedException.class)
	public void test() {
		try {
			new Company(name, tin, email);
		} catch (final ConstraintsViolatedException e) {
			System.out.println(e.getMessage());
			throw e;
		}
	}
}
