Skip to content

Commit

Permalink
Primitivas de número
Browse files Browse the repository at this point in the history
  • Loading branch information
samuelrvg committed Jan 30, 2024
1 parent c116f99 commit 45294b8
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 0 deletions.
7 changes: 7 additions & 0 deletions fontes/bibliotecas/primitivas-numero.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { VisitanteComumInterface } from '../interfaces';

export default {
arredondarParaCima: (interpretador: VisitanteComumInterface, valor: number): Promise<number> => {
return Promise.resolve(Math.ceil(valor))
},
};
8 changes: 8 additions & 0 deletions fontes/interpretador/interpretador-base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ import { PilhaEscoposExecucaoInterface } from '../interfaces/pilha-escopos-execu
import { inferirTipoVariavel } from './inferenciador';
import { MetodoPrimitiva } from '../estruturas/metodo-primitiva';

import primitivasNumero from '../bibliotecas/primitivas-numero';
import primitivasTexto from '../bibliotecas/primitivas-texto';
import primitivasVetor from '../bibliotecas/primitivas-vetor';
import tiposDeSimbolos from '../tipos-de-simbolos/delegua';
Expand Down Expand Up @@ -1413,6 +1414,13 @@ export class InterpretadorBase implements InterpretadorInterface {
}

switch (tipoObjeto) {
case tipoDeDadosDelegua.INTEIRO:
case tipoDeDadosDelegua.NUMERO:
const metodoDePrimitivaNumero: Function = primitivasNumero[expressao.simbolo.lexema];
if (metodoDePrimitivaNumero) {
return new MetodoPrimitiva(objeto, metodoDePrimitivaNumero);
}
break;
case tipoDeDadosDelegua.TEXTO:
const metodoDePrimitivaTexto: Function = primitivasTexto[expressao.simbolo.lexema];
if (metodoDePrimitivaTexto) {
Expand Down
20 changes: 20 additions & 0 deletions testes/primitivas/primitivas-numero.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import primitivasNumero from '../../fontes/bibliotecas/primitivas-numero';
import { InterpretadorBase } from '../../fontes/interpretador';

describe('Primitivas de número', () => {
let interpretador: InterpretadorBase;

beforeEach(() => {
interpretador = new InterpretadorBase(
process.cwd(),
false
)
});

describe('arredondarParaCima()', () => {
it('Trivial', async () => {
const resultado = await primitivasNumero.arredondarParaCima(interpretador, 2.5);
expect(resultado).toStrictEqual(3);
});
});
});

0 comments on commit 45294b8

Please sign in to comment.