package br.com.caelum.stella.type;
import static org.hamcrest.CoreMatchers.hasItems;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import java.util.Set;
import org.junit.Test;
/**
* @author <a href="mailto:hprange@gmail.com">Henrique Prange</a>
*/
public class RegiaoTest {
@Test
public void statesOfSouthRegion() throws Exception {
Set<Estado> estados = Regiao.SUL.estados();
assertThat(estados.size(), is(3));
assertThat(estados, hasItems(Estado.PR, Estado.RS, Estado.SC));
}
@Test
public void statesOfSoutheastRegion() throws Exception {
Set<Estado> estados = Regiao.SUDESTE.estados();
assertThat(estados.size(), is(4));
assertThat(estados, hasItems(Estado.SP, Estado.RJ, Estado.ES, Estado.MG));
}
@Test
public void statesOfMidWestRegion() throws Exception {
Set<Estado> estados = Regiao.CENTRO_OESTE.estados();
assertThat(estados.size(), is(4));
assertThat(estados, hasItems(Estado.MT, Estado.MS, Estado.GO, Estado.DF));
}
@Test
public void statesOfNortheastRegion() throws Exception {
Set<Estado> estados = Regiao.NORDESTE.estados();
assertThat(estados.size(), is(9));
assertThat(estados, hasItems(Estado.MA, Estado.PI, Estado.CE, Estado.RN, Estado.PE, Estado.PB, Estado.SE, Estado.AL, Estado.BA));
}
@Test
public void statesOfNorthRegion() throws Exception {
Set<Estado> estados = Regiao.NORTE.estados();
assertThat(estados.size(), is(7));
assertThat(estados, hasItems(Estado.AM, Estado.RR, Estado.AP, Estado.PA, Estado.TO, Estado.RO, Estado.AC));
}
@Test
public void regionsAreComposedOfTheirOwnStates() throws Exception {
Regiao[] regions = Regiao.values();
for (Regiao region : regions) {
for (Estado state : region.estados()) {
assertThat("O estado " + state + " faz parte da região " + region, region.compostaPor(state), is(true));
}
}
}
@Test
public void regionIsNotComposedOfStatesFromOtherRegions() throws Exception {
Estado[] states = Estado.values();
Regiao[] regions = Regiao.values();
for (Estado state : states) {
for (Regiao region : regions) {
if(state.regiao() != region) {
assertThat("O estado " + state + " não faz parte da região " + region, region.compostaPor(state), is(false));
}
}
}
}
}