Skip to content

Instantly share code, notes, and snippets.

@luissimas
Last active November 10, 2023 20:11
Show Gist options
  • Save luissimas/755a08e4f08ac07e7e489dd838659516 to your computer and use it in GitHub Desktop.
Save luissimas/755a08e4f08ac07e7e489dd838659516 to your computer and use it in GitHub Desktop.

ES2 - Atividade 4

Nome: Luís Augusto Simas do Nascimento

RA: 790828

Exercício 1

O primeiro exercício consiste na resolução do exercício 12 da primeira lista e na elaboração de um grafo de fluxo de controle.

O fluxo de controle é listado a seguir:

1 -> 2
1 -> 3
2 -> 3
2 -> 4
2 -> 5
4 -> 5
4 -> 6
6 -> 7
6 -> 8
6 -> 9
9 -> 10
9 -> 11
10 -> 11
6 -> 12

Os casos de teste para atingir 100% de cobertura de branches é implementado a seguir:

package s04;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.mockito.Mockito.*;

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

class VerificadorEleitoralTest {
    CartorioEleitoral catorioEleitoralMock;

    @BeforeEach
    void setUp() {
        this.catorioEleitoralMock = mock(CartorioEleitoral.class);
    }

    @Test
    void consultarSituacaoIdadePequena() {
        VerificadorEleitoral ver = new VerificadorEleitoral(this.catorioEleitoralMock);

        assertThrows(Exception.class,() -> {
            ver.consultarSituacao(-1, "11122233344");
        });
    }

    @Test
    void consultarSituacaoIdadeGrande() {
        VerificadorEleitoral ver = new VerificadorEleitoral(this.catorioEleitoralMock);

        assertThrows(Exception.class,() -> {
            ver.consultarSituacao(201, "11122233344");
        });
    }

    @Test
    void consultarSituacaoCpfNulo() {
        VerificadorEleitoral ver = new VerificadorEleitoral(this.catorioEleitoralMock);

        assertThrows(Exception.class,() -> {
            ver.consultarSituacao(20, null);
        });
    }

    @Test
    void consultarSituacaoCpfInvalido() {
        VerificadorEleitoral ver = new VerificadorEleitoral(this.catorioEleitoralMock);

        assertThrows(Exception.class,() -> {
            ver.consultarSituacao(20, "any-string");
        });
    }

    @Test
    void consultarSituacaoMenorDe16Anos() throws Exception {
        VerificadorEleitoral ver = new VerificadorEleitoral(this.catorioEleitoralMock);
        String result = ver.consultarSituacao(15, "11122233344");
        assertEquals(result, "nao pode votar");
    }

    @Test
    void consultarSituacaoCpfNaoExiste() throws  Exception {
        VerificadorEleitoral ver = new VerificadorEleitoral(this.catorioEleitoralMock);
        when(this.catorioEleitoralMock.verificar(anyString())).thenReturn("nao existe");

        String result = ver.consultarSituacao(20, "11122233344");
        assertEquals(result, "faca um titulo");
    }

    @Test
    void consultarSituacaoCpfComPendencia() throws  Exception {
        VerificadorEleitoral ver = new VerificadorEleitoral(this.catorioEleitoralMock);
        when(this.catorioEleitoralMock.verificar(anyString())).thenReturn("pendencia");

        String result = ver.consultarSituacao(20, "11122233344");
        assertEquals(result, "regularize seu titulo");
    }

    @Test
    void consultarSituacaoCpfOkMaiorDeIdade() throws  Exception {
        VerificadorEleitoral ver = new VerificadorEleitoral(this.catorioEleitoralMock);
        when(this.catorioEleitoralMock.verificar(anyString())).thenReturn("OK");

        String result = ver.consultarSituacao(20, "11122233344");
        assertEquals(result, "voto obrigatorio");
    }

    @Test
    void consultarSituacaoCpfOkMenorDeIdade() throws  Exception {
        VerificadorEleitoral ver = new VerificadorEleitoral(this.catorioEleitoralMock);
        when(this.catorioEleitoralMock.verificar(anyString())).thenReturn("OK");

        String result = ver.consultarSituacao(17, "11122233344");
        assertEquals(result, "voto facultativo");
    }

    @Test
    void consultarSituacaoCpfOkIdoso() throws  Exception {
        VerificadorEleitoral ver = new VerificadorEleitoral(this.catorioEleitoralMock);
        when(this.catorioEleitoralMock.verificar(anyString())).thenReturn("OK");

        String result = ver.consultarSituacao(80, "11122233344");
        assertEquals(result, "voto facultativo");
    }

    @Test
    void consultarSituacaoStatusCpfDesconhecido() throws  Exception {
        VerificadorEleitoral ver = new VerificadorEleitoral(this.catorioEleitoralMock);
        when(this.catorioEleitoralMock.verificar(anyString())).thenReturn("any-status");

        String result = ver.consultarSituacao(20, "11122233344");
        assertEquals(result, "erro desconhecido");
    }
}

Exercício 2

O exercício 2 consiste em solucionar o exercício 1 da lista de testes de mutação. Com os testes a seguir é possível matar os mutantes 1 e 2. Entretanto, o mutante 3 é equivalente, pois a alteração no valor inicial de i não tem efeito nesse caso, pois a variável maior já é inicializada como o primeiro elemento do vetor.

package s04;

import org.junit.jupiter.api.Test;

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

class OriginalTest {
    @Test
    // Mata o primeiro mutante
    void getMaiorUltimoElemento() {
        Original original = new Original();
        int[] vetor = {1,22,3,32};
        int result = original.getMaior(vetor);
        assertEquals(result, 32);
    }

    @Test
    // Mata o segundo mutante
    void getMaiorSegundoElemento() {
        Original original = new Original();
        int[] vetor = {2,420,8,3};
        int result = original.getMaior(vetor);
        assertEquals(result, 420);
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment