123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { IVProgParser } from './../js/ast/ivprogParser';
- import { SemanticAnalyser } from './../js/processor/semantic/semanticAnalyser';
- import { LanguageService } from '../js/services/languageService';
- import { OutputTest } from '../js/util/outputTest';
- import { IVProgProcessor } from '../js/processor/ivprogProcessor';
- describe('Non initialized matrix', function () {
- localStorage.setItem('ivprog.lang', 'pt');
- const code = `programa {
- funcao inicio() {
- cadeia a = "mustache"
- cadeia b = "mostacheh"
- escreva(editDist(a,b,comprimento(a), comprimento(b)))
- }
-
- funcao inteiro editDist(cadeia str1 , cadeia str2 , inteiro m ,inteiro n) {
- inteiro l = m + 1
- inteiro c = n + 1
- inteiro i, j
- inteiro mat[l][c]
- para(i = 0; i <= m; i = i + 1 ) {
- para(j = 0; j <= n; j = j + 1) {
- se (i==0) {
- mat[i][j] = j
- } senao se (j == 0) {
- mat[i][j] = i
- } senao se (texto_na_posicao(str1, i-1) == texto_na_posicao(str2, j-1)) {
- mat[i][j] = mat[i-1][j-1]
- } senao {
- mat[i][j] = 1 + Matematica.minimo({mat[i][j-1], mat[i-1][j], mat[i-1][j-1]})
- }
- }
- }
- retorne mat[m][n]
- }
-
- }`
- const lexer = LanguageService.getCurrentLexer();
- const out = new OutputTest();
- it(`should not throw an exception`, function (done) {
- const parser = new IVProgParser(code, lexer);
- const sem = new SemanticAnalyser(parser.parseTree());
- const exec = new IVProgProcessor(sem.analyseTree());
- exec.registerOutput(out);
- exec.interpretAST().then(_ => {
- expect(out.list.length).toEqual(1);
- done()
- }).catch( err => done(err));
- });
- });
|