/** 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()); }
/** 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()); }
/** 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); }
/** 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); }
/** 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); }
/** 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()); }
/** 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()); }
/** 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()); }