UNPKG

@designliquido/delegua

Version:

Linguagem de programação simples e moderna usando português estruturado.

67 lines 3.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.construirModuloAfirmar = construirModuloAfirmar; const erro_de_assertiva_1 = require("../../excecoes/erro-de-assertiva"); const funcao_padrao_1 = require("../../interpretador/estruturas/funcao-padrao"); const modulo_1 = require("../../interpretador/estruturas/modulo"); function simboloAtual(interpretador) { return { hashArquivo: interpretador.hashArquivoDeclaracaoAtual, linha: interpretador.linhaDeclaracaoAtual, }; } function construirModuloAfirmar() { const modulo = new modulo_1.DeleguaModulo('afirmar'); modulo.componentes['igual'] = new funcao_padrao_1.FuncaoPadrao(2, function (interpretador, valorTestado, obtidoTestado) { const esperado = interpretador.resolverValor(valorTestado); const obtido = interpretador.resolverValor(obtidoTestado); if (esperado !== obtido) { return Promise.reject(new erro_de_assertiva_1.ErroDeAssertiva(simboloAtual(interpretador), `Esperava ${String(esperado)}, mas obteve ${String(obtido)}.`, esperado, obtido)); } }); modulo.componentes['diferente'] = new funcao_padrao_1.FuncaoPadrao(2, function (interpretador, valorATestado, valorBTestado) { const valorA = interpretador.resolverValor(valorATestado); const valorB = interpretador.resolverValor(valorBTestado); if (valorA === valorB) { return Promise.reject(new erro_de_assertiva_1.ErroDeAssertiva(simboloAtual(interpretador), `Esperava valores diferentes, mas ambos são ${String(valorA)}.`, undefined, valorA)); } }); modulo.componentes['verdadeiro'] = new funcao_padrao_1.FuncaoPadrao(1, function (interpretador, valorTestado) { const valor = interpretador.resolverValor(valorTestado); if (!valor) { return Promise.reject(new erro_de_assertiva_1.ErroDeAssertiva(simboloAtual(interpretador), `Esperava verdadeiro, mas obteve ${String(valor)}.`, true, valor)); } }); modulo.componentes['falso'] = new funcao_padrao_1.FuncaoPadrao(1, function (interpretador, valorTestado) { const valor = interpretador.resolverValor(valorTestado); if (valor) { return Promise.reject(new erro_de_assertiva_1.ErroDeAssertiva(simboloAtual(interpretador), `Esperava falso, mas obteve ${String(valor)}.`, false, valor)); } }); modulo.componentes['nulo'] = new funcao_padrao_1.FuncaoPadrao(1, function (interpretador, valorTestado) { const valor = interpretador.resolverValor(valorTestado); if (valor !== null && valor !== undefined) { return Promise.reject(new erro_de_assertiva_1.ErroDeAssertiva(simboloAtual(interpretador), `Esperava nulo, mas obteve ${String(valor)}.`, null, valor)); } }); modulo.componentes['erro'] = new funcao_padrao_1.FuncaoPadrao(1, async function (interpretador, funcaoTestada) { const funcao = interpretador.resolverValor(funcaoTestada); let erroLancado = false; const errosAntes = interpretador.erros.length; try { await funcao.chamar(interpretador, [], null); } catch (_) { erroLancado = true; } if (!erroLancado && interpretador.erros.length > errosAntes) { erroLancado = true; interpretador.erros.splice(errosAntes); } if (!erroLancado) { return Promise.reject(new erro_de_assertiva_1.ErroDeAssertiva(simboloAtual(interpretador), 'Esperava que a função lançasse um erro, mas ela completou sem erros.')); } }); return modulo; } //# sourceMappingURL=modulo-afirmar.js.map