UNPKG

@designliquido/lincones-sqlite

Version:
123 lines 5.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const lexador_1 = require("../fontes/lexador"); describe('Lexador', () => { let lexador; beforeEach(() => { lexador = new lexador_1.Lexador(); }); describe('mapear()', () => { describe('Cenário de sucesso', () => { it('Código vazio', () => { const codigo = ['']; const resultado = lexador.mapear(codigo); expect(resultado).toBeTruthy(); expect(resultado.simbolos).toHaveLength(0); }); it('Código com apenas espaços', () => { const codigo = [' ']; const resultado = lexador.mapear(codigo); expect(resultado).toBeTruthy(); expect(resultado.simbolos).toHaveLength(0); }); it('Código repetindo instruções', () => { const codigo = [ '((((((((((((((((((((((((((', ')))))))))))))))))))))))))', 'CRIAR CRIAR CRIAR CRIAR CRIAR CRIAR' ]; const resultado = lexador.mapear(codigo); expect(resultado).toBeTruthy(); expect(resultado.simbolos).toHaveLength(57); }); it('Números', () => { const codigo = [ '12 ', ' 3.75' ]; const resultado = lexador.mapear(codigo); expect(resultado).toBeTruthy(); expect(resultado.simbolos).toHaveLength(2); }); it('Comparadores', () => { const codigo = [ '12 > 18 ', ' 3.75 < 1', ' 123 >= 456', '0 <= -1' ]; const resultado = lexador.mapear(codigo); expect(resultado).toBeTruthy(); expect(resultado.simbolos).toHaveLength(12); }); it('Literais', () => { const codigo = [ "'123'" ]; const resultado = lexador.mapear(codigo); expect(resultado).toBeTruthy(); expect(resultado.simbolos).toHaveLength(1); }); it('CRIAR TABELA', () => { const codigo = ['CRIAR TABELA usuarios']; const resultado = lexador.mapear(codigo); expect(resultado).toBeTruthy(); expect(resultado.simbolos).toHaveLength(3); }); it('ATUALIZAR', () => { const codigo = ['ATUALIZAR usuarios']; const resultado = lexador.mapear(codigo); expect(resultado).toBeTruthy(); expect(resultado.simbolos).toHaveLength(2); }); describe('Comandos completos', () => { it('Criar Tabela Clientes', () => { const codigo = [ 'CRIAR TABELA clientes(id INTEIRO NAO NULO CHAVE PRIMARIA AUTOINCREMENTO, nome TEXTO(100) NAO NULO, idade INTEIRO NAO NULO, email TEXTO(255) NAO NULO, ativo LOGICO NAO NULO)' ]; const resultado = lexador.mapear(codigo); expect(resultado).toBeTruthy(); expect(resultado.simbolos).toHaveLength(38); }); it('CRUD', () => { const codigo = [ 'INSERIR EM clientes VALORES(1, "João", 20, "joao@gmail.com", VERDADEIRO)', 'INSERIR EM clientes VALORES(2, "Carlos", 23, "carlos@gmail.com", VERDADEIRO)', 'INSERIR EM clientes VALORES(3, "Thiago", 40, "thiago@gmail.com", VERDADEIRO)', 'INSERIR EM clientes VALORES(4, "Jose", 44, "jose@gmail.com", VERDADEIRO)' ]; const resultado = lexador.mapear(codigo); expect(resultado).toBeTruthy(); expect(resultado.simbolos).toHaveLength(60); }); it('Selecionar', () => { const codigo = ['SELECIONAR * DE clientes']; const resultado = lexador.mapear(codigo); expect(resultado).toBeTruthy(); expect(resultado.simbolos).toHaveLength(4); }); it('Criar Tabela Clientes', () => { const codigo = [ 'CRIAR TABELA clientes(id INTEIRO NAO NULO CHAVE PRIMARIA AUTOINCREMENTO, nome TEXTO(100) NAO NULO, idade INTEIRO NAO NULO, email TEXTO(255) NAO NULO, ativo LOGICO NAO NULO);' ]; const resultado = lexador.mapear(codigo); expect(resultado).toBeTruthy(); expect(resultado.simbolos).toHaveLength(39); }); }); }); describe('Cenários de falha', () => { it('Texto não finalizado', () => { const codigo = [ '"texto sem fim' ]; const resultado = lexador.mapear(codigo); expect(resultado).toBeTruthy(); expect(resultado.erros.length).toBe(1); const erro = resultado.erros[0]; expect(erro.mensagem).toBe('Texto não finalizado.'); }); }); }); }); //# sourceMappingURL=lexador.test.js.map