예제 #1
0
 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')
예제 #2
0
    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')
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
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",
        )
예제 #6
0
    def test_aqsignalmapper(self) -> None:
        """Test AQSignalmapper."""

        self.assertEqual(
            qs2py("var sigMap = new AQSignalMapper(this);"),
            "sigMap: Any = qsa.AQSignalMapper(self)\n",
        )
예제 #7
0
    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)
예제 #8
0
    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""",
        )
예제 #9
0
 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',
     )
예제 #10
0
    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""",
        )
예제 #11
0
    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",
        )
예제 #12
0
    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",
        )
예제 #13
0
    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""",
        )
예제 #14
0
    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)
예제 #15
0
    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)
예제 #16
0
    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)
예제 #17
0
    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)
예제 #18
0
    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')
예제 #19
0
    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)
예제 #20
0
    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")
예제 #21
0
 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',
     )
예제 #22
0
    def test_aqssproject(self) -> None:
        """Test aqssproject parse."""

        self.assertEqual(qs2py("QSProject.entryFunction"),
                         "qsa.QSProject.entryFunction\n")
예제 #23
0
 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")
예제 #24
0
    def test_basic(self) -> None:
        """Test basic stuff."""

        self.assertEqual(qs2py("x = 0"), "x = 0\n")
예제 #25
0
 def test_form(self) -> None:
     """Test converting form"""
     self.assertEqual(qs2py("form = this;"), "form = self\n")
예제 #26
0
    def test_all_any(self) -> None:
        """Test variable parse."""

        self.assertEqual(qs2py('var prueba = "hola";'), 'prueba: Any = "hola"\n')
예제 #27
0
    def test_qobject(self) -> None:
        """Test QObject translation."""

        self.assertEqual(qs2py("var prueba = new QObject;"),
                         "prueba = qsa.QObject()\n")
예제 #28
0
    def test_inicialize_float(self) -> None:
        """Test float inicialization."""

        self.assertEqual(qs2py("var num:Number = 0.0;"), "num = 0.0\n")