Manuel Delgado-Restituto

74 papers A 1C 7Journal 32Unranked 33
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Manuel Delgado-Restituto, Ricardo A. Morell-Rodriguez, Sebastián O. Espinosa-Del Rosario, Wilfredo E. Lugo-Beauchamp
2024 J jnl
IEEE Trans. Circuits Syst. Artif. Intell.
Yiran Chen, Gabriele Manganaro, Manuel Delgado-Restituto
2022 J jnl
Sensors
David Palomeque-Mangut, Ángel Rodríguez-Vázquez, Manuel Delgado-Restituto
2022 conf
LASCAS
David Palomeque-Mangut, Ángel Rodríguez-Vázquez, Manuel Delgado-Restituto
2022 conf
PRIME
David Palomeque-Mangut, Alexandre Schmid, Ángel Rodríguez-Vázquez, Manuel Delgado-Restituto
2022 conf
BioCAS
David Palomeque-Mangut, Ángel Rodríguez-Vázquez, Manuel Delgado-Restituto
2021 J jnl
IEEE Trans. Biomed. Circuits Syst.
Norberto Pérez-Prieto, Ángel Rodríguez-Vázquez, Manuel Álvarez-Dolado, Manuel Delgado-Restituto
2021 conf
NEWCAS
Norberto Pérez-Prieto, Ángel Rodríguez-Vázquez, Manuel Delgado-Restituto
2020 J jnl
IEEE Trans. Circuits Syst. I Fundam. Theory Appl.
José Luis Valtierra, Manuel Delgado-Restituto, Rafaella Fiorelli, Ángel Rodríguez-Vázquez
2020 J jnl
IEEE Trans. Biomed. Circuits Syst.
Rafaella Fiorelli, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2020 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Rafaella Fiorelli, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2019 conf
BioCAS
Norberto Pérez-Prieto, Rafaella Fiorelli, José Luis Valtierra, Pablo Pérez-García, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2019 conf
BioCAS
José Luis Valtierra, Rafaella Fiorelli, Norberto Pérez-Prieto, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2019 conf
LASCAS
José Luis Valtierra, Rafaella Fiorelli, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2019 C conf
ISCAS
Norberto Pérez-Prieto, José Luis Valtierra, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2019 C conf
ISCAS
Norberto Pérez-Prieto, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2019 J jnl
IEEE Trans. Biomed. Circuits Syst.
Manuel Delgado-Restituto, James Brian Romaine, Ángel Rodríguez-Vázquez
2018 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Juan Antonio Leñero-Bardallo, Manuel Delgado-Restituto, Ricardo Carmona-Galán, Ángel Rodríguez-Vázquez
2017 conf
LASCAS
José Luis Valtierra, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2017 conf
ECCTD
Norberto Pérez-Prieto, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2017 J jnl
IEEE Trans. Biomed. Circuits Syst.
Manuel Delgado-Restituto, Pedram Mohseni, Jun Ohta
2017 J jnl
IEEE Trans. Biomed. Circuits Syst.
Manuel Delgado-Restituto, Alberto Rodríguez-Pérez, Angela A. Darie, Cristina Soto-Sánchez, Eduardo Fernández-Jover, Ángel Rodríguez-Vázquez
2016 conf
APCCAS
Manuel Delgado-Restituto, Manuel Carrasco-Robles, Rafaella Fiorelli, Antonio Jose Ginés Arteaga, Ángel Rodríguez-Vázquez
2016 conf
BioCAS
Manuel Delgado-Restituto, Rafaella Fiorelli, Manuel Carrasco-Robles, Ángel Rodríguez-Vázquez
2015 J jnl
Sensors
Jesús Ruiz-Amaya, Alberto Rodríguez-Pérez, Manuel Delgado-Restituto
2015 conf
BioCAS
James Brian Romaine, Manuel Delgado-Restituto
2014 conf
A-SSCC
Alberto Rodríguez-Pérez, Manuel Delgado-Restituto, Angela A. Darie, Cristina Soto-Sánchez, Eduardo Fernández-Jover, Ángel Rodríguez-Vázquez
2014 J jnl
IEEE Trans. Biomed. Circuits Syst.
Alberto Rodríguez-Pérez, Manuel Delgado-Restituto, Fernando Medeiro
2014 conf
ICECS
Manuel Delgado-Restituto, Alberto Rodríguez-Pérez, Angela A. Darie, Ángel Rodríguez-Vázquez, Cristina Soto-Sánchez, Eduardo Fernández-Jover
2014 conf
LASCAS
Manuel Carrasco-Robles, Manuel Delgado-Restituto
2014 conf
BioCAS
Alberto Rodríguez-Pérez, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2013 J jnl
IEEE J. Solid State Circuits
Jens Masuch, Manuel Delgado-Restituto, Dusan M. Milosevic, Peter G. M. Baltus
2013 conf
NEWCAS
Onur Kazanc, Jose A. Rodríguez-Rodríguez, Manuel Delgado-Restituto, Franco Maloberti, Catherine Dehollain
2013 J jnl
Int. J. Circuit Theory Appl.
Alberto Rodríguez-Pérez, Manuel Delgado-Restituto, Fernando Medeiro
2013 J jnl
Int. J. Circuit Theory Appl.
Jens Masuch, Manuel Delgado-Restituto
2012 J jnl
IEEE J. Solid State Circuits
Jens Masuch, Manuel Delgado-Restituto
2012 conf
BioCAS
Alberto Rodríguez-Pérez, Jens Masuch, Jose Antonio Rodríguez-Rodríguez, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2012 J jnl
IEEE Trans. Biomed. Circuits Syst.
Alberto Rodríguez-Pérez, Jesús Ruiz-Amaya, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2012 conf
ESSCIRC
Jens Masuch, Manuel Delgado-Restituto
2012 C conf
ISCAS
Jens Masuch, Manuel Delgado-Restituto, Dusan M. Milosevic, Peter G. M. Baltus
2012 J jnl
IEEE Trans. Ind. Electron.
Jose Antonio Rodríguez-Rodríguez, Manuel Delgado-Restituto, Jens Masuch, Alberto Rodríguez-Pérez, Eduard Alarcón, Ángel Rodríguez-Vázquez
2012 J jnl
Int. J. Circuit Theory Appl.
Jesús Ruiz-Amaya, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2012 J jnl
Int. J. Circuit Theory Appl.
Juan Francisco Fernández-Bootello, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2011 C conf
ISCAS
Alberto Rodríguez-Pérez, Jesús Ruiz-Amaya, Jose Antonio Rodríguez-Rodríguez, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2011 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Jesús Ruiz-Amaya, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2010 C conf
ISCAS
Jens Masuch, Manuel Delgado-Restituto
2010 conf
APCCAS
Jens Masuch, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2009 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Jesús Ruiz-Amaya, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2009 conf
ECCTD
Jens Masuch, Manuel Delgado-Restituto
2009 J jnl
Int. J. Circuit Theory Appl.
Manuel Delgado-Restituto, Eduard Alarcón, Ángel Rodríguez-Vázquez
2008 conf
ICECS
Alberto Rodríguez-Pérez, Manuel Delgado-Restituto, Jesús Ruiz-Amaya, Fernando Medeiro
2008 conf
APCCAS
Jesús Ruiz-Amaya, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2008 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Juan Francisco Fernández-Bootello, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2007 conf
ECCTD
Davide Brandano, Manuel Delgado-Restituto, Jesús Ruiz-Amaya, Ángel Rodríguez-Vázquez
2007 conf
ECCTD
Jesús Ruiz-Amaya, Juan Francisco Fernández-Bootello, Manuel Delgado-Restituto
2006 conf
APCCAS
Jesús Ruiz-Amaya, Manuel Delgado-Restituto, Juan Francisco Fernández-Bootello, Davide Brandano, Rafael Castro-López, José M. de la Rosa
2005 conf
ISCAS (1)
Juan Francisco Fernández-Bootello, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2005 J jnl
IEEE J. Solid State Circuits
Manuel Delgado-Restituto, Antonio J. Acosta, Ángel Rodríguez-Vázquez
2005 conf
ISCAS (5)
Manuel Delgado-Restituto, Jesús Ruiz-Amaya, José M. de la Rosa, Juan Francisco Fernández-Bootello, Leila Díez, Rocío del Río Fernández, Ángel Rodríguez-Vázquez
2005 conf
ISCAS (6)
Jesús Ruiz-Amaya, José M. de la Rosa, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2005 conf
ECCTD
Juan Francisco Fernández-Bootello, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2004 conf
ESSCIRC
Manuel Delgado-Restituto, Antonio J. Acosta, Ángel Rodríguez-Vázquez
2004 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Rocío del Río, José M. de la Rosa, Maria Belen Pérez-Verdú, Manuel Delgado-Restituto, Rafael Domínguez-Castro, Fernando Medeiro, Ángel Rodríguez-Vázquez
2003 J jnl
Integr.
Oscar Guerra, Carlos M. Domínguez-Matas, Sara Escalera, José M. García-González, Gustavo Liñán, Rocío del Río, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2002 J jnl
Proc. IEEE
Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
2001 A conf
DATE
Rafael Castro-López, Francisco V. Fernández, Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
1999 J jnl
J. VLSI Signal Process.
Ángel Rodríguez-Vázquez, Elisenda Roca, Manuel Delgado-Restituto, Servando Espejo-Meana, Rafael Domínguez-Castro
1999 conf
ICECS
José E. Franca, Nuno Horta, M. Pereira, João C. Vital, Rafael Castro-López, Manuel Delgado-Restituto, Francisco V. Fernández, Ángel Rodríguez-Vázquez, J. Ramos, P. Santos
1998 conf
ICECS
Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez, Veikko Porra
1995 C conf
ISCAS
Manuel Delgado-Restituto, Rafael López-Ahumada, Ángel Rodríguez-Vázquez
1994 C conf
ISCAS
Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
1994 J jnl
J. Intell. Fuzzy Syst.
Ángel Rodríguez-Vázquez, Manuel Delgado-Restituto
1993 ch.
Chua's Circuit
Manuel Delgado-Restituto, Arturo Rodríguez Vázquez
1993 J jnl
J. Circuits Syst. Comput.
Manuel Delgado-Restituto, Ángel Rodríguez-Vázquez
tests/unit/test_apk_apktool_wrapper.py
← Index tests/unit/test_apk_apktool_wrapper.py python
"""
Unit tests for apktool wrapper subprocess management and smali directory detection.

All subprocess calls are mocked — no apktool/Java installation required.
"""
import os
import tempfile

import pytest
from unittest.mock import MagicMock, patch

pytestmark = [pytest.mark.unit, pytest.mark.apk, pytest.mark.decompile]


class TestApktoolDisassembler:
    """Tests for ApktoolDisassembler subprocess wrapper."""

    @patch.dict(os.environ, {}, clear=False)
    def test_init_defaults(self):
        os.environ.pop("APKTOOL_PATH", None)
        from redb.extractors.decompiler.apk.apktool_wrapper import ApktoolDisassembler
        a = ApktoolDisassembler()
        assert a.apktool_path == "apktool"
        assert a.timeout == 120

    def test_init_custom(self):
        from redb.extractors.decompiler.apk.apktool_wrapper import ApktoolDisassembler
        a = ApktoolDisassembler(apktool_path="/opt/apktool", timeout=120)
        assert a.apktool_path == "/opt/apktool"
        assert a.timeout == 120

    def test_init_from_env(self):
        from redb.extractors.decompiler.apk.apktool_wrapper import ApktoolDisassembler
        with patch.dict(os.environ, {"APKTOOL_PATH": "/usr/bin/apktool", "APKTOOL_TIMEOUT": "90"}):
            a = ApktoolDisassembler()
            assert a.apktool_path == "/usr/bin/apktool"
            assert a.timeout == 90

    @patch("subprocess.Popen")
    def test_disassemble_success(self, mock_popen):
        from redb.extractors.decompiler.apk.apktool_wrapper import ApktoolDisassembler
        mock_proc = MagicMock()
        mock_proc.communicate.return_value = ("output", "")
        mock_proc.returncode = 0
        mock_popen.return_value = mock_proc

        a = ApktoolDisassembler()
        result = a.disassemble("/test.apk", "/output")
        assert result is True

    @patch("subprocess.Popen")
    def test_disassemble_failure(self, mock_popen):
        from redb.extractors.decompiler.apk.apktool_wrapper import ApktoolDisassembler
        mock_proc = MagicMock()
        mock_proc.communicate.return_value = ("", "error")
        mock_proc.returncode = 1
        mock_popen.return_value = mock_proc

        a = ApktoolDisassembler(log=MagicMock())
        result = a.disassemble("/test.apk", "/output")
        assert result is False

    @patch("subprocess.Popen")
    def test_disassemble_timeout(self, mock_popen):
        from redb.extractors.decompiler.apk.apktool_wrapper import ApktoolDisassembler
        import subprocess
        mock_proc = MagicMock()
        mock_proc.communicate.side_effect = subprocess.TimeoutExpired(cmd="apktool", timeout=10)
        mock_proc.pid = 12345
        mock_popen.return_value = mock_proc

        with patch("os.getpgid", return_value=12345), \
             patch("os.killpg"):
            a = ApktoolDisassembler(timeout=10, log=MagicMock())
            result = a.disassemble("/test.apk", "/output")
            assert result is False

    @patch("subprocess.Popen", side_effect=FileNotFoundError)
    def test_disassemble_not_found(self, mock_popen):
        from redb.extractors.decompiler.apk.apktool_wrapper import ApktoolDisassembler
        a = ApktoolDisassembler(log=MagicMock())
        result = a.disassemble("/test.apk", "/output")
        assert result is False

    @patch("subprocess.Popen")
    def test_disassemble_command_args(self, mock_popen):
        from redb.extractors.decompiler.apk.apktool_wrapper import ApktoolDisassembler
        mock_proc = MagicMock()
        mock_proc.communicate.return_value = ("", "")
        mock_proc.returncode = 0
        mock_popen.return_value = mock_proc

        a = ApktoolDisassembler(apktool_path="/opt/apktool")
        a.disassemble("/test.apk", "/output")

        cmd = mock_popen.call_args[0][0]
        assert cmd[0] == "/opt/apktool"
        assert "d" in cmd
        assert "--no-res" in cmd
        assert "--force" in cmd
        assert "/test.apk" in cmd

    def test_get_smali_directories_single_dex(self):
        from redb.extractors.decompiler.apk.apktool_wrapper import ApktoolDisassembler
        with tempfile.TemporaryDirectory() as tmpdir:
            os.makedirs(os.path.join(tmpdir, "smali"))
            a = ApktoolDisassembler()
            dirs = a.get_smali_directories(tmpdir)
            assert len(dirs) == 1
            assert dirs[0].endswith("smali")

    def test_get_smali_directories_multi_dex(self):
        from redb.extractors.decompiler.apk.apktool_wrapper import ApktoolDisassembler
        with tempfile.TemporaryDirectory() as tmpdir:
            os.makedirs(os.path.join(tmpdir, "smali"))
            os.makedirs(os.path.join(tmpdir, "smali_classes2"))
            os.makedirs(os.path.join(tmpdir, "smali_classes3"))
            # Should not be included
            os.makedirs(os.path.join(tmpdir, "res"))
            os.makedirs(os.path.join(tmpdir, "original"))

            a = ApktoolDisassembler()
            dirs = a.get_smali_directories(tmpdir)
            assert len(dirs) == 3

    def test_get_smali_directories_empty(self):
        from redb.extractors.decompiler.apk.apktool_wrapper import ApktoolDisassembler
        with tempfile.TemporaryDirectory() as tmpdir:
            a = ApktoolDisassembler()
            dirs = a.get_smali_directories(tmpdir)
            assert dirs == []

    def test_get_smali_directories_nonexistent(self):
        from redb.extractors.decompiler.apk.apktool_wrapper import ApktoolDisassembler
        a = ApktoolDisassembler()
        dirs = a.get_smali_directories("/nonexistent/path")
        assert dirs == []