package agilpizza.servlet;

import static org.junit.Assert.*;

import org.junit.Test;

public class ValidacaoUtilTest {

	@Test
	public void testIsVazio() {
		assertFalse("Isso não pode ser vazio", ValidacaoUtil.isVazio("cheio"));
		assertTrue("Este é vazio!", ValidacaoUtil.isVazio(""));
		assertTrue("Este é vazio c/espaços!", ValidacaoUtil.isVazio("    "));
		assertTrue("Este é nulo!", ValidacaoUtil.isVazio(null));
	}

	@Test
	public void testIsCEPValido() {
		assertFalse("CEP bom.", ValidacaoUtil.isCEPInvalido("05508"));
		assertFalse("CEP bom.", ValidacaoUtil.isCEPInvalido("05508-090"));
		assertFalse("CEP bom.", ValidacaoUtil.isCEPInvalido("05508090"));

		assertTrue("CEP errado.", ValidacaoUtil.isCEPInvalido("055080"));
		assertTrue("CEP errado.", ValidacaoUtil.isCEPInvalido("0550809"));
		assertTrue("CEP errado.", ValidacaoUtil.isCEPInvalido("A0550"));
		assertTrue("CEP errado.", ValidacaoUtil.isCEPInvalido("055088090"));
		assertTrue("CEP tracinho errado.", ValidacaoUtil
				.isCEPInvalido("055-08090"));
	}

	@Test
	public void testaGetQuantidade() {

		assertEquals("Quantidade válida", 15, ValidacaoUtil.getQuantidade("15"));
		assertEquals("Quantidade válida", 0, ValidacaoUtil.getQuantidade(""));

		try {
			ValidacaoUtil.getQuantidade("a");
			fail("Não deve funcionar com uma string não numérica");
		} catch (NumberFormatException e) {
			// Isso é o esperado
		}

		try {
			ValidacaoUtil.getQuantidade("51b");
			fail("Não deve funcionar com uma string não numérica");
		} catch (NumberFormatException e) {
			// Isso é o esperado
		}

		try {
			ValidacaoUtil.getQuantidade("-10");
			fail("Não deve funcionar com número negativo");
		} catch (NumberFormatException e) {
			// Isso é o esperado
		}
	}
}
