US6001 - ArthurSchiavom/gestao-informacao-chao-de-fabrica--projeto-academico GitHub Wiki

US6001

1. Requisitos

Como Sistema de Monitorização das Máquinas (SMM), pretendo monitorizar o estado das máquinas por linha de produção.

2. Análise

SSD

SSD

3. Design

3.1. Realização da Funcionalidade

SD

SD

3.2. Diagrama de Classes

CD

CD

3.3. Padrões Aplicados

Singleton - Foi utilizado um singleton para guardar os dados das linhas de produção que por sua vez guardam os dados das máquinas

Todos os padrões essenciais: SOLID, GRASP, Gang of Four

3.4. Testes de regras de dominio

IdMaquina

@Test(expected = IllegalArgumentException.class)
public void garantirQueIdMenorQue65535() {
    new IdMaquina(65536);
}
@Test(expected = IllegalArgumentException.class)
public void garantirQueIdMaiorQue0() {
    new IdMaquina(-1);
}
@Test(expected = IllegalArgumentException.class)
public void garantirQueHa2Bytes() {
    byte[] bytes = new byte[3];
    new IdMaquina(bytes);
}

Maquina

@Test(expected = IllegalArgumentException.class)
public void garantirQueMaquinaTemIdMaquina() {
    new Maquina(null, EstadoMaquina.SUSPENSO);
}
@Test(expected = IllegalArgumentException.class)
public void garantirqueMaquinaTemEstado() {
    new Maquina(new IdMaquina(2), null);
}

Linha Produção

@Test(expected = IllegalArgumentException.class)
public void atualizarMaquinaComCodigoInvalido() {
    linhaProducao.adicionarMaquina(idMaquina, Codigos.ACK);
    linhaProducao.atualizarMaquina(idMaquina, Codigos.HELLO);
}
@Test(expected = IllegalArgumentException.class)
public void adicionarMaquinaComCodigoInvalido() {
    linhaProducao.adicionarMaquina(idMaquina, Codigos.HELLO);
}

DataLength

@Test(expected = IllegalArgumentException.class)
public void garantirQueDataLengthMenorQue506() {
    new DataLength(507);
}
@Test(expected = IllegalArgumentException.class)
public void garantirQueDataLengthMaiorQue0() {
    new DataLength(-1);
}

Message Data

@Test(expected = IllegalArgumentException.class)
public void garantirQueMessageDataTemRawData() {
    new MessageData((RawData) null);
}
@Test
public void garantirQueRawDataMantemValorCoerente() {
    byte[] rawBytes = {5,0,'t','e','s','t','e'};
    MessageData messageData = new MessageData(rawBytes);
    assertEquals(new String(messageData.rawData.toByteArray()), "teste");
}

Raw Data

@Test(expected = IllegalArgumentException.class)
public void garantirQueRawDataNaoTemStringNull() {
    new RawData((String) null);
}
@Test(expected = IllegalArgumentException.class)
public void garantirQueRawDataNaoTemStringNullBytes() {
    new RawData((byte[]) null);
}

HelloBroadcast

@Test(expected = IllegalArgumentException.class)
public void garantirQueNadaVersaoNaoPodeSerNull() {
    try {
        new HelloBroadcast(null, 9999);
    } catch (UnknownHostException e) {
        fail();
    }
}

BroadcastAcknowledge

@Test(expected = IllegalArgumentException.class)
public void garantirQueBroadcastNaoPodeTerUmPacoteNull() {
    BroadcastAcknowledge brkack = new BroadcastAcknowledge(null);
}
@Test(expected = IllegalArgumentException.class)
public void garantirQuePacoteTem6Bytes() {
    byte[] bytes = new byte[4];
    DatagramPacket data = new DatagramPacket(bytes, bytes.length);
    new BroadcastAcknowledge(data);
}

Version

@Test(expected = IllegalArgumentException.class)
public void garantirQueVersaoNaoEMaiorQue0() {
    new Version(-1);
}
@Test(expected = IllegalArgumentException.class)
public void garantirQueVersaoEMenorQue255() {
    new Version(265);
}

4. Integração/Demonstração

n/a

5. Observações

n/a

⚠️ **GitHub.com Fallback** ⚠️