Пример #1
0
  /** Testa exclusão em árvore de altura H=2 É necessário redistribuição */
  @Test
  public void testaExclui3() throws FileNotFoundException, Exception {
    montaArvoreH2Cheia();

    int end = instance.exclui(13, NOME_ARQUIVO_METADADOS, NOME_ARQUIVO_INDICE, NOME_ARQUIVO_DADOS);
    assertEquals(0, end);

    tabDados = new ArrayList<NoFolha>();
    tabIndice = new ArrayList<NoInterno>();

    tabIndice.add(
        new NoInterno(
            2,
            true,
            -1,
            Arrays.asList(0, 1 * NoFolha.TAMANHO, 2 * NoFolha.TAMANHO),
            Arrays.asList(20, 25)));

    List<Cliente> clientes = new ArrayList<Cliente>();
    clientes.add(new Cliente(10, "JOAO      "));
    clientes.add(new Cliente(15, "JOSE      "));
    // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes
    tabDados.add(new NoFolha(2, 0, 1 * NoFolha.TAMANHO, clientes));

    // Este nó agora é lixo. Dependendo da implementação, tem que mudar este código de teste.
    clientes = new ArrayList<Cliente>();
    clientes.add(new Cliente(20, "MARIANA   "));
    clientes.add(new Cliente(21, "BRUNA     "));
    clientes.add(new Cliente(23, "BRUNO     "));
    // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes
    tabDados.add(new NoFolha(3, 0, 2 * NoFolha.TAMANHO, clientes));

    clientes = new ArrayList<Cliente>();
    clientes.add(new Cliente(25, "RONALDO   "));
    clientes.add(new Cliente(35, "MARCELA   "));
    clientes.add(new Cliente(37, "LEONARDO  "));
    // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes
    tabDados.add(new NoFolha(3, 0, -1, clientes));

    tabIndiceSaida = Arquivos.leNosInternos(NOME_ARQUIVO_INDICE);
    tabDadosSaida = Arquivos.leNosFolha(NOME_ARQUIVO_DADOS);

    assertArrayEquals(tabDados.toArray(), tabDadosSaida.toArray());
    assertArrayEquals(tabIndice.toArray(), tabIndiceSaida.toArray());
  }
Пример #2
0
  /** Testa exclusão em árvore de altura H=2 Não é necessário concatenação */
  @Test
  public void testaExclui1() throws FileNotFoundException, Exception {
    // Árvore tem um dos nós folha cheio. E é neste nó que a exclusão ocorrerá
    montaArvoreH2Cheia();

    int end = instance.exclui(20, NOME_ARQUIVO_METADADOS, NOME_ARQUIVO_INDICE, NOME_ARQUIVO_DADOS);
    assertEquals(1 * NoFolha.TAMANHO, end);

    tabDados = new ArrayList<NoFolha>();
    tabIndice = new ArrayList<NoInterno>();

    tabIndice.add(
        new NoInterno(
            2,
            true,
            -1,
            Arrays.asList(0, 1 * NoFolha.TAMANHO, 2 * NoFolha.TAMANHO),
            Arrays.asList(15, 25)));

    List<Cliente> clientes = new ArrayList<Cliente>();
    clientes.add(new Cliente(10, "JOAO      "));
    clientes.add(new Cliente(13, "ANA MARIA "));
    // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes
    tabDados.add(new NoFolha(2, 0, 1 * NoFolha.TAMANHO, clientes));

    clientes = new ArrayList<Cliente>();
    clientes.add(new Cliente(15, "JOSE      "));
    clientes.add(new Cliente(21, "BRUNA     "));
    clientes.add(new Cliente(23, "BRUNO     "));
    // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes
    tabDados.add(new NoFolha(3, 0, 2 * NoFolha.TAMANHO, clientes));

    clientes = new ArrayList<Cliente>();
    clientes.add(new Cliente(25, "RONALDO   "));
    clientes.add(new Cliente(35, "MARCELA   "));
    clientes.add(new Cliente(37, "LEONARDO  "));
    // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes
    tabDados.add(new NoFolha(3, 0, -1, clientes));

    tabIndiceSaida = Arquivos.leNosInternos(NOME_ARQUIVO_INDICE);
    tabDadosSaida = Arquivos.leNosFolha(NOME_ARQUIVO_DADOS);

    assertArrayEquals(tabDados.toArray(), tabDadosSaida.toArray());
    assertArrayEquals(tabIndice.toArray(), tabIndiceSaida.toArray());
  }