public void ExampleSinErroresTest() { using (var lexer = new FTCCompiler.Lexer("ExampleSinErrores.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s)); var tree = parser.Parse(); using (var tw = File.CreateText(@"D:\syntaxTree.xml")) { tree.Serialize(tw.BaseStream); } Assert.AreEqual(_resultList.Count, 0); } }
public void AsignacionArrayIncorrectaTest() { using (var lexer = new FTCCompiler.Lexer("AsignacionArrayIncorrecta.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s)); var tree = parser.Parse(); Assert.AreEqual(true, tree.HasErrors); Assert.AreEqual(3, _resultList.Count); Assert.AreEqual("[7,11] SEM: Se esperaba una expresión 'Integer' y se encontró una del tipo 'Boolean'.", _resultList[0]); Assert.AreEqual("[8,8] SEM: No se encontró el identificador 'X'.", _resultList[1]); Assert.AreEqual("[9,8] SEM: Se esperaba una expresión 'Integer' y se encontró una del tipo 'Boolean'.", _resultList[2]); } }
public void SubroutineTest() { using (var lexer = new FTCCompiler.Lexer("Subroutine.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => { _resultList.Add(s); }); var tree = parser.Parse(); //using (var tw = File.CreateText(@"C:\Users\Ivan\Documents\Proyectos\FTC Compiler\tree\syntaxTree.xml")) //{ // tree.Serialize(tw.BaseStream); //} // Assert.AreEqual(_resultList.Count, 0); } }
public void ArrayIndiceExpresionNoEnteraTest() { using (var lexer = new FTCCompiler.Lexer("ArrayIndiceExpresionNoEntera.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s)); var tree = parser.Parse(); Assert.AreEqual(true, tree.HasErrors); Assert.AreEqual(3, _resultList.Count); Assert.AreEqual("[10,16] SEM: El indice de un vector debe ser una expresión entera.", _resultList[0]); Assert.AreEqual("[11,14] SEM: El indice de un vector debe ser una expresión entera.", _resultList[1]); Assert.AreEqual("[12,15] SEM: El indice de un vector debe ser una expresión entera.", _resultList[2]); } }
public void OperacionMenorNoEnterosEnCondicionTest() { using (var lexer = new FTCCompiler.Lexer("OperacionMenorNoEnterosEnCondicion.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s)); var tree = parser.Parse(); Assert.AreEqual(true, tree.HasErrors); Assert.AreEqual(3, _resultList.Count); Assert.AreEqual("[11,15] SEM: Se esperaba una expresión 'Integer' y se encontró una del tipo 'Boolean'.", _resultList[0]); Assert.AreEqual("[12,19] SEM: Se esperaba una expresión 'Integer' y se encontró una del tipo 'Boolean'.", _resultList[1]); Assert.AreEqual("[13,21] SEM: Se esperaba una expresión 'Integer' y se encontró una del tipo 'Boolean'.", _resultList[2]); } }
public void ShouldFailWithInvalidExpression() { using (var lexer = new FTCCompiler.Lexer("InvalidExpression1.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => { _resultList.Add(s); }); var tree = parser.Parse(); using (var tw = File.CreateText(@"C:\Users\Ivan\Documents\Proyectos\FTC Compiler\tree\syntaxTree.xml")) { tree.Serialize(tw.BaseStream); } Assert.IsTrue(_resultList[0] == "[4,13] SIN: Se esperaba ';' y se encontró 'M'."); Assert.AreEqual(_resultList.Count, 1); } }
public void ShouldNotReturnErrorRecuperacion1() { using (var lexer = new FTCCompiler.Lexer("Recuperacion-1.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => { _resultList.Add(s); }); var tree = parser.Parse(); using (var tw = File.CreateText(@"C:\Users\Ivan\Documents\Proyectos\FTC Compiler\tree\syntaxTree.xml")) { tree.Serialize(tw.BaseStream); } Assert.IsTrue(_resultList[0] == "[6,5] SIN: Se esperaba 'identificador' y se encontró ':'."); Assert.IsTrue(_resultList[1] == "[12,5] SIN: Se esperaba 'expresión entera' y se encontró ']'."); Assert.AreEqual(_resultList.Count, 2); } }
public void EnvironmentTest() { using (var lexer = new FTCCompiler.Lexer("Environment.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => { _resultList.Add(s); }); var tree = parser.Parse(); using (var tw = File.CreateText(@"C:\Users\Ivan\Documents\Proyectos\FTC Compiler\tree\syntaxTree.xml")) { tree.Serialize(tw.BaseStream); } Assert.Fail("Should have failed with MainNotFoundException"); Assert.IsTrue(_resultList[0] == "[4,7] SIN: Se esperaba 'identificador' y se encontró ','."); Assert.AreEqual(_resultList.Count, 1); } }
public void ShouldNotReturnErrorRecuperacion2() { using (var lexer = new FTCCompiler.Lexer("Recuperacion-2.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => { _resultList.Add(s); }); var tree = parser.Parse(); using (var tw = File.CreateText(@"C:\Users\Ivan\Documents\Proyectos\FTC Compiler\tree\syntaxTree.xml")) { tree.Serialize(tw.BaseStream); } Assert.IsTrue(_resultList[0] == "[2,12] SIN: Se esperaba 'integer','boolean' y se encontró 'enteros'."); Assert.IsTrue(_resultList[1] == "[16,13] SIN: Se esperaba ';' y se encontró ''Visualizacion''."); Assert.IsTrue(_resultList[2] == "[17,12] SIN: Se esperaba ';' y se encontró '?'."); Assert.AreEqual(_resultList.Count, 3); } }
public void ShouldReturnErrorShowLn() { using (var lexer = new FTCCompiler.Lexer("ErrorShowLn.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => { _resultList.Add(s); }); var tree = parser.Parse(); using (var tw = File.CreateText(@"C:\Users\Ivan\Documents\Proyectos\FTC Compiler\tree\syntaxTree.xml")) { tree.Serialize(tw.BaseStream); } Assert.Fail("Should have failed with MainNotFoundException"); Assert.IsTrue(_resultList[0] == "[16,12] SIN: Se esperaba ':=' y se encontró ''Visualizacion''."); Assert.IsTrue(_resultList.Count == 1); } }
public void ShouldReturnErrorWhile() { using (var lexer = new FTCCompiler.Lexer("ErrorWhile.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => { _resultList.Add(s); }); var tree = parser.Parse(); using (var tw = File.CreateText(@"C:\Users\Ivan\Documents\Proyectos\FTC Compiler\tree\syntaxTree.xml")) { tree.Serialize(tw.BaseStream); } Assert.Fail("Should have failed with MainNotFoundException"); Assert.IsTrue(_resultList[0] == "[14,3] SIN: Se esperaba 'end-while' y se encontró 'end-'."); Assert.IsTrue(_resultList[1] == "[15,9] SIN: Se esperaba 'end-proc' y se encontró ';'."); Assert.AreEqual(_resultList.Count, 2); } }
public void ShouldNotReturnErrorRecuperacion3() { using (var lexer = new FTCCompiler.Lexer("Recuperacion-3.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => { _resultList.Add(s); }); var tree = parser.Parse(); using (var tw = File.CreateText(@"C:\Users\Ivan\Documents\Proyectos\FTC Compiler\tree\syntaxTree.xml")) { tree.Serialize(tw.BaseStream); } Assert.Fail("Should have failed with MainNotFoundException"); Assert.IsTrue(_resultList[0] == "[1,31] SIN: Se esperaba ':' y se encontró 'R'."); Assert.IsTrue(_resultList[1] == "[2,21] SIN: Se esperaba 'número','true o false' y se encontró 'TRUE'."); Assert.IsTrue(_resultList[2] == "[21,13] SIN: Se esperaba ';' y se encontró 'Q'."); Assert.AreEqual(_resultList.Count, 3); } }
public void ShouldReturnErrorParameters() { using (var lexer = new FTCCompiler.Lexer("ErrorParameters.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => { _resultList.Add(s); }); var tree = parser.Parse(); using (var tw = File.CreateText(@"C:\Users\Ivan\Documents\Proyectos\FTC Compiler\tree\syntaxTree.xml")) { tree.Serialize(tw.BaseStream); } Assert.Fail("Should have failed with MainNotFoundException"); Assert.IsTrue(_resultList[0] == "[1,33] SIN: Se esperaba 'identificador' y se encontró ':'."); Assert.IsTrue(_resultList[1] == "[3,18] SIN: Se esperaba ':' y se encontró ')'."); Assert.IsTrue(_resultList[2] == "[11,9] SIN: Se esperaba 'end-func' y se encontró ';'."); Assert.AreEqual(_resultList.Count, 3); } }
public void OperacionBinariaDistintosTipoDeDatosTest() { using (var lexer = new FTCCompiler.Lexer("OperacionBinariaDistintosTipoDeDatos.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s)); var tree = parser.Parse(); Assert.AreEqual(true, tree.HasErrors); Assert.AreEqual(8, _resultList.Count); Assert.AreEqual("[11,15] SEM: No se pueden comparar una expresión de tipo 'Integer' con una de tipo 'Boolean'.", _resultList[0]); Assert.AreEqual("[12,15] SEM: No se pueden comparar una expresión de tipo 'Integer' con una de tipo 'Boolean'.", _resultList[1]); Assert.AreEqual("[13,16] SEM: No se pueden comparar una expresión de tipo 'Integer' con una de tipo 'Boolean'.", _resultList[2]); Assert.AreEqual("[14,15] SEM: No se pueden comparar una expresión de tipo 'Integer' con una de tipo 'Boolean'.", _resultList[3]); Assert.AreEqual("[15,16] SEM: No se pueden comparar una expresión de tipo 'Integer' con una de tipo 'Boolean'.", _resultList[4]); Assert.AreEqual("[16,16] SEM: No se pueden comparar una expresión de tipo 'Integer' con una de tipo 'Boolean'.", _resultList[5]); Assert.AreEqual("[17,19] SEM: No se pueden comparar una expresión de tipo 'Integer' con una de tipo 'Boolean'.", _resultList[6]); Assert.AreEqual("[18,21] SEM: No se pueden comparar una expresión de tipo 'Integer' con una de tipo 'Boolean'.", _resultList[7]); } }
public void OperadorXorNoBooleanoEnCondicionTest() { using (var lexer = new FTCCompiler.Lexer("OperadorXorNoBooleanoEnCondicion.txt")) { var parser = new FTCCompiler.Parser(lexer, (s) => _resultList.Add(s)); var tree = parser.Parse(); Assert.AreEqual(true, tree.HasErrors); Assert.AreEqual(8, _resultList.Count); Assert.AreEqual("[11,11] SEM: Se esperaba una expresión 'Boolean' y se encontró una del tipo 'Integer'.", _resultList[0]); Assert.AreEqual("[11,17] SEM: Se esperaba una expresión 'Boolean' y se encontró una del tipo 'Integer'.", _resultList[1]); Assert.AreEqual("[12,11] SEM: Se esperaba una expresión 'Boolean' y se encontró una del tipo 'Integer'.", _resultList[2]); Assert.AreEqual("[12,21] SEM: Se esperaba una expresión 'Boolean' y se encontró una del tipo 'Integer'.", _resultList[3]); Assert.AreEqual("[13,15] SEM: Se esperaba una expresión 'Boolean' y se encontró una del tipo 'Integer'.", _resultList[4]); Assert.AreEqual("[13,21] SEM: Se esperaba una expresión 'Boolean' y se encontró una del tipo 'Integer'.", _resultList[5]); Assert.AreEqual("[14,15] SEM: Se esperaba una expresión 'Boolean' y se encontró una del tipo 'Integer'.", _resultList[6]); Assert.AreEqual("[14,23] SEM: Se esperaba una expresión 'Boolean' y se encontró una del tipo 'Integer'.", _resultList[7]); } }