Пример #1
0
  /** Testa inserção em árvore de altura H=1 cheia, que causa aumento na altura da árvore */
  @Test
  public void testaInsere5() throws FileNotFoundException, Exception {
    montaArvoreH1Cheia();

    int end =
        instance.insere(
            11, "VANESSA   ", NOME_ARQUIVO_METADADOS, NOME_ARQUIVO_INDICE, NOME_ARQUIVO_DADOS);
    assertEquals(0, end);

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

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

    List<Cliente> clientes = new ArrayList<Cliente>();
    clientes.add(new Cliente(10, "JOAO      "));
    clientes.add(new Cliente(11, "VANESSA   "));
    // 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(13, "ANA MARIA "));
    clientes.add(new Cliente(15, "BIANCA    "));
    clientes.add(new Cliente(26, "CLARA     "));
    // 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 inserção em árvore de altura H=2 Exige particionamento de uma página folha */
  @Test
  public void testaInsere3() throws FileNotFoundException, Exception {
    // Árvore tem um dos nós folha cheio. E é neste nó que a inserção ocorrerá
    montaArvoreH2Cheia();

    int end =
        instance.insere(
            16, "VANESSA   ", 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(
            3,
            true,
            -1,
            Arrays.asList(0, 1 * NoFolha.TAMANHO, 3 * NoFolha.TAMANHO, 2 * NoFolha.TAMANHO),
            Arrays.asList(15, 20, 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(16, "VANESSA   "));

    // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes
    tabDados.add(new NoFolha(2, 0, 3 * 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));

    // Nova página gerada pela operação do particionamento
    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));

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

    assertArrayEquals(tabDados.toArray(), tabDadosSaida.toArray());
    assertArrayEquals(tabIndice.toArray(), tabIndiceSaida.toArray());
  }
Пример #3
0
  /** Testa busca */
  @Test
  public void testaBusca6() throws FileNotFoundException, Exception {
    montaArvoreH3();

    // Testa busca -- chave não está na árvore
    ResultBusca result =
        instance.busca(26, NOME_ARQUIVO_METADADOS, NOME_ARQUIVO_INDICE, NOME_ARQUIVO_DADOS);
    assertEquals(2 * NoFolha.TAMANHO, result.pontFolha);
    assertEquals(1, result.pos);
    assertEquals(false, result.encontrou);
  }
Пример #4
0
  /** Testa busca */
  @Test
  public void testaBusca2() throws FileNotFoundException, Exception {
    montaArvoreH1();

    // Testa busca -- chave procurada não está na árvore. Raiz é um nó folha
    ResultBusca result =
        instance.busca(6, NOME_ARQUIVO_METADADOS, NOME_ARQUIVO_INDICE, NOME_ARQUIVO_DADOS);
    assertEquals(0, result.pontFolha);
    assertEquals(0, result.pos); // posição onde a chave deveria estar
    assertEquals(false, result.encontrou);
  }
Пример #5
0
  /** Testa busca */
  @Test
  public void testaBusca1() throws FileNotFoundException, Exception {
    montaArvoreH1();

    // Testa busca -- chave procurada está na raiz. Raiz é um nó folha
    ResultBusca result =
        instance.busca(13, NOME_ARQUIVO_METADADOS, NOME_ARQUIVO_INDICE, NOME_ARQUIVO_DADOS);
    assertEquals(0, result.pontFolha);
    assertEquals(1, result.pos);
    assertEquals(true, result.encontrou);
  }
Пример #6
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());
  }
Пример #7
0
  /** Testa inserção em árvore de altura H=2, chave do registro ja existe -- nao inserir */
  @Test
  public void testaInsere4() throws FileNotFoundException, Exception {
    montaArvoreH2();

    int end =
        instance.insere(
            13, "MARIANA   ", NOME_ARQUIVO_METADADOS, NOME_ARQUIVO_INDICE, NOME_ARQUIVO_DADOS);
    assertEquals(-1, 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(20, "MARIANA   "));
    // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes
    tabDados.add(new NoFolha(2, 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());
  }
Пример #8
0
  /** Testa inserção em árvore de altura H=1, sem particionamento */
  @Test
  public void testaInsere1() throws FileNotFoundException, Exception {
    montaArvoreH1();

    int end =
        instance.insere(
            11, "VANESSA   ", NOME_ARQUIVO_METADADOS, NOME_ARQUIVO_INDICE, NOME_ARQUIVO_DADOS);
    assertEquals(0, end);

    tabDados = new ArrayList<NoFolha>();
    List<Cliente> clientes = new ArrayList<Cliente>();
    clientes.add(new Cliente(10, "JOAO      "));
    clientes.add(new Cliente(11, "VANESSA   "));
    clientes.add(new Cliente(13, "ANA MARIA "));

    tabDados.add(new NoFolha(3, -1, -1, clientes));
    tabDadosSaida = Arquivos.leNosFolha(NOME_ARQUIVO_DADOS);

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