def test_parse_int(self) -> None: """Test parseInt function.""" self.assertEqual(qs2py('var value = parseInt("21");'), 'value = qsa.parseInt("21")\n') self.assertEqual(qs2py("var value = parseInt(2000.21 , 10);"), "value = qsa.parseInt(2000.21, 10)\n") self.assertEqual(qs2py('var value = parseInt("0xA0", 16);'), 'value = qsa.parseInt("0xA0", 16)\n')
def test_mid(self) -> None: """Test str.mid(5, 2).""" value_1 = 'var cadena:String = "abcdefg";\ncadena.mid(5, 2);' self.assertEqual(qs2py(value_1), 'cadena = "abcdefg"\ncadena[5 : 5 + 2]\n') value_2 = 'var cadena:String = "abcdefg";\ncadena.mid(5);' self.assertEqual(qs2py(value_2), 'cadena = "abcdefg"\ncadena[0 + 5 :]\n')
def test_args_str_int(self) -> None: """Test argStr and argInt.""" one = """var res= util.translate("scripts", "Hola %1").argStr("Uno");""" result_one = """res = qsa.util.translate("scripts", "Hola %s") % (str("Uno"))\n""" self.assertEqual(qs2py(one), result_one) two = """var res= util.translate("scripts", "Hola %1").argInt("Dos");""" result_two = """res = qsa.util.translate("scripts", "Hola %s") % (str("Dos"))\n""" self.assertEqual(qs2py(two), result_two)
def test_number_min_value_and_max_value(self) -> None: """Test number min and max value.""" qsa_one = "var min : Number = Number.MIN_VALUE;" result_one = "min = qsa.Number.MIN_VALUE\n" self.assertEqual(qs2py(qsa_one), result_one) qsa_two = "var max : Number = Number.MAX_VALUE;" result_two = "max = qsa.Number.MAX_VALUE\n" self.assertEqual(qs2py(qsa_two), result_two) from pineboolib.qsa import qsa self.assertTrue(qsa.Number.MIN_VALUE < 0) self.assertTrue(qsa.Number.MAX_VALUE > 0)
def test_sort_1(self) -> None: """Test replace.""" self.assertEqual( qs2py("var listaOutlet:Array = new Array();listaOutlet.sort();"), "listaOutlet = qsa.Array()\nqsa.Sort().sort_(listaOutlet)\n", )
def test_aqsignalmapper(self) -> None: """Test AQSignalmapper.""" self.assertEqual( qs2py("var sigMap = new AQSignalMapper(this);"), "sigMap: Any = qsa.AQSignalMapper(self)\n", )
def test_array_functions(self) -> None: """Test functions array conversion.""" one = """var cacheFunsEdi = []; cacheFunsEdi["uno"]("dos");""" result_one = """cacheFunsEdi = qsa.Array()\ncacheFunsEdi["uno"]("dos")\n""" self.assertEqual(qs2py(one), result_one)
def test_index_of(self) -> None: """Check indexOf translation.""" value = """var text_:String = "*****@*****.**";\nif (text_.indexOf("@") == -1){\ndebug("ok");}""" self.assertEqual( qs2py(value), """text_ = "*****@*****.**"\nif text_.index("@") == -1:\n qsa.debug("ok")\n""", )
def test_qdir(self) -> None: """Test QDir translation.""" self.assertEqual( qs2py( 'var rutaImp:String = "."; var impDir = new QDir(rutaImp, "c*.csv C*.csv c*.CSV C*.CSV");' ), 'rutaImp = "."\nimpDir = qsa.QDir(rutaImp, "c*.csv C*.csv c*.CSV C*.CSV")\n', )
def test_replace(self) -> None: """Test replace.""" self.assertEqual( qs2py( 'var listaOutlet:Array = new Array();flfactppal.iface.replace(listaOutlet, ", ", " "," ");' ), """listaOutlet = qsa.Array() qsa.from_project("flfactppal").iface.replace(listaOutlet, ", ", " ", " ")\n""", ) self.assertEqual( qs2py( "function pub_replace(cadena, searchValue, newValue) {\nreturn this.replace(cadena, searchValue, newValue);\n}" ), """def pub_replace(self, cadena=None, searchValue=None, newValue=None): return self.replace(cadena, searchValue, newValue)\n""", )
def test_sort_2(self) -> None: """Test replace.""" self.assertEqual( qs2py(""" var aLista:Array = new Array() aLista.sort(parseString); """), "aLista = qsa.Array()\nqsa.Sort(qsa.parseString).sort_(aLista)\n", )
def test_splice(self) -> None: """Test splice.""" self.assertEqual( qs2py(""" var aLista = new Array(); aLista.splice(10,1); """), "aLista = qsa.Array()\nqsa.splice(aLista, 10, 1)\n", )
def test_reg_exp(self) -> None: """Test regExp parser.""" value = """var reg_exp:RegExp = new RegExp( "''" );\nreg_exp.global = true;""" self.assertEqual( qs2py(value), """reg_exp = qsa.RegExp("''")\nreg_exp.global_ = True\n""") value2 = """var reg_exp:RegExp = new RegExp( " " );\nreg_exp.global = true;\nvar texto:String = "UNO DOS".replace(reg_exp, "_");""" self.assertEqual( qs2py(value2), """reg_exp = qsa.RegExp(" ")\nreg_exp.global_ = True\ntexto = qsa.replace("UNO DOS", reg_exp, "_")\n""", ) value3 = """var reg_exp:RegExp = new RegExp( " " );\nreg_exp.global = true;\n var texto:String = "UNO DOS".replace(reg_exp, "_").lower();""" self.assertEqual( qs2py(value3), """reg_exp = qsa.RegExp(" ")\nreg_exp.global_ = True\ntexto = qsa.replace("UNO DOS", reg_exp, "_").lower()\n""", )
def test_from_project(self) -> None: """Test from_project parser.""" value_1 = ( 'qsa.sys.AQTimer.singleShot(0, qsa.from_project("formescarrosproveedor").reject)\n' ) self.assertEqual( qs2py("sys.AQTimer.singleShot(0, formescarrosproveedor.reject);"), value_1) value_2 = ( 'qsa.sys.AQTimer.singleShot(0, qsa.from_project("formRecordflmodules").iface.prueba)\n' ) self.assertEqual( qs2py( "sys.AQTimer.singleShot(0, formRecordflmodules.iface.prueba);" ), value_2) value_3 = 'qsa.sys.AQTimer.singleShot(0, qsa.from_project("flfactppal").iface.test)\n' self.assertEqual( qs2py("sys.AQTimer.singleShot(0, flfactppal.iface.test);"), value_3) value_4 = '_fP = qsa.from_project("flfactppal").iface\n' self.assertEqual(qs2py("var _fP = flfactppal.iface;"), value_4)
def test_while(self) -> None: """Test while class.""" value = "with (this.iface.curFactura)" value += ( 'setValueBuffer("neto", formfacturascli.iface.pub_commonCalculateField("neto", this));' ) result_value = "# WITH_START\n" result_value += "self.iface.curFactura.setValueBuffer(\n" result_value += ' "neto", qsa.from_project("formfacturascli").iface.pub_commonCalculateField("neto", self.iface.curFactura)\n' result_value += ")\n" result_value += "# WITH_END\n" self.assertEqual(qs2py(value), result_value)
def test_args(self) -> None: """Test translate with args parse.""" self.maxDiff = None cadena = qs2py("""var qryRecargo: FLSqlQuery = new FLSqlQuery; var res = util.translate("scripts", "Uno %1 para %2. ¿Desea continuar?") .arg(qryRecargo.value("f.codigo")) .arg(qryRecargo.value("f.nombrecliente"))""") cadena_result = """qryRecargo = qsa.FLSqlQuery() res = qsa.util.translate("scripts", "Uno %s para %s. ¿Desea continuar?") % ( str(qryRecargo.value("f.codigo")), str(qryRecargo.value("f.nombrecliente")),\n)\n""" self.assertEqual(cadena, cadena_result)
def test_flfacturac(self) -> None: """Test conveting fixture flfacturac.""" flfacturac_qs = fixture_read("flfacturac.qs") flfacturac_py = fixture_read("flfacturac.python") flfacturac_qs_py = qs2py(flfacturac_qs, parser_template="file_template") # Delete version translator tag. pos_ini = flfacturac_qs_py.find("# Translated with pineboolib v") pos_fin = flfacturac_qs_py[pos_ini:].find("\n") flfacturac_qs_py = flfacturac_qs_py.replace( flfacturac_qs_py[pos_ini:pos_ini + pos_fin + 1], "") # Write onto git so we have an example. with open(fixture_path("flfacturac.qs.python"), "w") as file_: file_.write(flfacturac_qs_py) self.assertEqual(flfacturac_qs_py, flfacturac_py)
def test_file_class(self) -> None: """Test parsing the file class.""" self.assertEqual(qs2py('x = File.read("test")'), 'x = qsa.FileStatic.read("test")\n') self.assertEqual( qs2py('x = File.write("test", "contents")'), 'x = qsa.FileStatic.write("test", "contents")\n', ) self.assertEqual(qs2py('x = File.remove("test")'), 'x = qsa.FileStatic.remove("test")\n') self.assertEqual(qs2py('x = File("test").read()'), 'x = qsa.File("test").read()\n') self.assertEqual( qs2py('x = File("test").write("contents")'), 'x = qsa.File("test").write("contents")\n' ) self.assertEqual(qs2py('x = File("test").remove()'), 'x = qsa.File("test").remove()\n')
def test_multiples_if(self) -> None: """Check stackoverflow when parsing.""" cadena = """var fN : String ="uno0"; if (fN == "uno0") { debug(fN); } else if (fN == "dos0") { debug(fN) } else if (fN == "tres0") { debug(fN); } else if (fN == "cuatro0") { debug(fN); } else if (fN == "cinco0") { debug(fN); } else if (fN == "seis0") { debug(fN); } else if (fN == "siete0") { debug(fN); } else if (fN == "ocho0") { debug(fN); } else if (fN == "nueve0") { debug(fN); } else if (fN == "diez0") { debug(fN); } else if (fN == "uno0") { debug(fN); } else if (fN == "dos0") { debug(fN); } else if (fN == "tres0") { debug(fN); } else if (fN == "cuatro0") { debug(fN); } else if (fN == "cinco0") { debug(fN); } else if (fN == "seis0") { debug(fN); } else if (fN == "siete0") { debug(fN); } else if (fN == "ocho0") { debug(fN); } else if (fN == "nueve0") { debug(fN); } else if (fN == "diez0") { debug(fN); } else if (fN == "dos0") { debug(fN); } else if (fN == "tres0") { debug(fN); } else if (fN == "cuatro0") { debug(fN); } else if (fN == "cinco0") { debug(fN); } else if (fN == "seis0") { debug(fN); } else if (fN == "siete0") { debug(fN); } else if (fN == "ocho0") { debug(fN); } else if (fN == "nueve0") { debug(fN); } else if (fN == "diez0") { debug(fN); } else if (fN == "uno0") { debug(fN); } else if (fN == "dos0") { debug(fN); } else if (fN == "tres0") { debug(fN); } else if (fN == "cuatro0") { debug(fN); } else if (fN == "cinco0") { debug(fN); } else if (fN == "seis0") { debug(fN); } else if (fN == "siete0") { debug(fN); } else if (fN == "ocho0" || fN == "once0") { debug(fN); } else if (fN == "nueve0") { debug(fN); } else if (fN == "diez0") { debug(fN); } return fN;""" cadena_result = qs2py(cadena) self.assertFalse(cadena_result.find("not-known-seq") > -1)
def test_array(self) -> None: """Test array.""" self.assertEqual(qs2py("var a = new Array();"), "a = qsa.Array()\n") self.assertEqual(qs2py("var b = new Array(0);"), "b = []\n")
def test_process_class(self) -> None: """Test parsing the process class.""" self.assertEqual( qs2py('x = Process.execute(["ls", "*"])'), 'x = qsa.ProcessStatic.execute(qsa.Array(["ls", "*"]))\n', )
def test_aqssproject(self) -> None: """Test aqssproject parse.""" self.assertEqual(qs2py("QSProject.entryFunction"), "qsa.QSProject.entryFunction\n")
def test_list_arrays(self) -> None: """Test parsing iterable classes.""" self.assertEqual(qs2py("var value = Array().shift()"), "value = qsa.Array().pop(0)\n") self.assertEqual(qs2py("var value = [].shift()"), "value = [].pop(0)\n")
def test_basic(self) -> None: """Test basic stuff.""" self.assertEqual(qs2py("x = 0"), "x = 0\n")
def test_form(self) -> None: """Test converting form""" self.assertEqual(qs2py("form = this;"), "form = self\n")
def test_all_any(self) -> None: """Test variable parse.""" self.assertEqual(qs2py('var prueba = "hola";'), 'prueba: Any = "hola"\n')
def test_qobject(self) -> None: """Test QObject translation.""" self.assertEqual(qs2py("var prueba = new QObject;"), "prueba = qsa.QObject()\n")
def test_inicialize_float(self) -> None: """Test float inicialization.""" self.assertEqual(qs2py("var num:Number = 0.0;"), "num = 0.0\n")