Jacques Palicot

174 papers A* 1A 1B 15C 4Misc 4Journal 76Unranked 71
YearRankTypeTitle / Venue / Authors
2023 J jnl
EURASIP J. Wirel. Commun. Netw.
Majed Saad, Ali Chamas Al Ghouwayel, Hussein Hijazi, Faouzi Bader, Jacques Palicot
2021 J jnl
IEEE Trans. Commun.
Majed Saad, Jacques Palicot, Faouzi Bader, Ali Chamas Al Ghouwayel, Hussein Hijazi
2021 conf
ICC
Majed Saad, Jacques Palicot, Faouzi Bader, Ali Chamas Al Ghouwayel, Hussein Hijazi
2021 J jnl
IEEE Commun. Lett.
Majed Saad, Hussein Hijazi, Ali Chamas Al Ghouwayel, Faouzi Bader, Jacques Palicot
2020 B conf
PIMRC
Nizar Bouhlel, Majed Saad, Faouzi Bader, Jacques Palicot
2020 Misc conf
ICASSP
Majed Saad, Faouzi Bader, Ali Chamas Al Ghouwayel, Hussein Hijazi, Nizar Bouhlel, Jacques Palicot
2020 conf
ICC Workshops
Majed Saad, Ali Chamas Al Ghouwayel, Hussein Hijazi, Faouzi Bader, Jacques Palicot
2019 conf
PIMRC Workshops
Majed Saad, Feyiz Chris Lteif, Ali Chamas Al Ghouwayel, Hussein Hijazi, Jacques Palicot, Faouzi Bader
2019 J jnl
IET Commun.
Yifan Zhou, Zhifeng Zhao, Chen Qi, Rongpeng Li, Yves Louët, Jacques Palicot, Honggang Zhang
2019 B conf
WCNC
Majed Saad, Faouzi Bader, Jacques Palicot, Ali Chamas Al Ghouwayel, Hussein Hijazi
2018 conf
ICT
Jean-Baptiste Dore, Yoann Corre, Simon Bicais, Jacques Palicot, Emmanuel Faussurier, Dimitri Ktenas, Faouzi Bader
2018 J jnl
IEEE Trans. Commun.
Marwa Chafii, Jacques Palicot, Rémi Gribonval, Faouzi Bader
2018 conf
ICT
Vincent Gouldieff, Amor Nafkha, Nicolas Grollier, Jacques Palicot, Steredenn Daumont
2018 J jnl
Wirel. Networks
Sumit Jagdish Darak, Christophe Moy, Jacques Palicot
2018 B conf
WCNC
Marwa Chafii, Faouzi Bader, Jacques Palicot
2018 conf
ICT
Marwa Chafii, Jacques Palicot, Rémi Gribonval, Faouzi Bader
2018 J jnl
EURASIP J. Wirel. Commun. Netw.
Rémi Bonnefoi, Christophe Moy, Jacques Palicot
2018 J jnl
CoRR
Rémi Bonnefoi, Lilian Besson, Christophe Moy, Emilie Kaufmann, Jacques Palicot
2018 J jnl
IEEE Trans. Green Commun. Netw.
Rémi Bonnefoi, Christophe Moy, Jacques Palicot
2018 B conf
WCNC
Marwa Chafii, Faouzi Bader, Jacques Palicot
2018 conf
ICT
Jacques Palicot, Yves Louët, Désiré Guel
2017 J jnl
IEEE Trans. Signal Process.
Vincent Gouldieff, Jacques Palicot, Steredenn Daumont
2017 conf
DSP
Vincent Gouldieff, Jacques Palicot, Steredenn Daumont
2017 J jnl
Digit. Signal Process.
Sumit Jagdish Darak, Honggang Zhang, Jacques Palicot, Christophe Moy
2017 J jnl
IEEE Syst. J.
Xiguang Wu, Jacques Palicot, Pierre Leray
2017 conf
CrownCom
Rémi Bonnefoi, Lilian Besson, Christophe Moy, Emilie Kaufmann, Jacques Palicot
2017 conf
ICT
Haïfa Farès, Christian Glattli, Yves Louët, Christophe Moy, Jacques Palicot, Preden Roulleau
2017 conf
ICC
Rémi Bonnefoi, Christophe Moy, Jacques Palicot
2017 J jnl
IEEE Access
Quentin Bodinier, Faouzi Bader, Jacques Palicot
2017 J jnl
CoRR
Quentin Bodinier, Faouzi Bader, Jacques Palicot
2017 J jnl
IEEE Wirel. Commun. Lett.
Haïfa Farès, Christian Glattli, Yves Louët, Jacques Palicot, Preden Roulleau, Christophe Moy
2017 conf
ICT
Rémi Bonnefoi, Christophe Moy, Haïfa Farès, Jacques Palicot
2016 J jnl
CoRR
Quentin Bodinier, Arman Farhang, Faouzi Bader, Hamed Ahmadi, Jacques Palicot, Luiz A. DaSilva
2016 conf
ICC
Quentin Bodinier, Arman Farhang, Faouzi Bader, Hamed Ahmadi, Jacques Palicot, Luiz A. DaSilva
2016 J jnl
IEEE Trans. Commun.
Marwa Chafii, Jacques Palicot, Rémi Gribonval, Faouzi Bader
2016 conf
CrownCom
Navikkumar Modi, Christophe Moy, Philippe Mary, Jacques Palicot
2016 conf
VTC Spring
Marwa Chafii, Mamadou Lamarana Diallo, Jacques Palicot, Faouzi Bader, Rémi Gribonval
2016 conf
SmartGridComm
Rémi Bonnefoi, Christophe Moy, Jacques Palicot
2016 J jnl
Ad Hoc Networks
Jacques Palicot, Christophe Moy, Benoit Résimont, Rémi Bonnefoi
2016 conf
GlobalSIP
Vincent Gouldieff, Jacques Palicot, Steredenn Daumont
2016 conf
ICT
Vincent Savaux, Faouzi Bader, Jacques Palicot
2016 conf
GLOBECOM Workshops
Quentin Bodinier, Faouzi Bader, Jacques Palicot
2016 J jnl
CoRR
Quentin Bodinier, Faouzi Bader, Jacques Palicot
2016 J jnl
CoRR
Quentin Bodinier, Faouzi Bader, Jacques Palicot
2016 conf
ISWCS
Quentin Bodinier, Faouzi Bader, Jacques Palicot
2016 J jnl
CoRR
Malek Naoues, Quentin Bodinier, Jacques Palicot
2016 ed.
CROWNCOM
Dominique Noguet, Klaus Moessner, Jacques Palicot
2016 J jnl
Signal Process.
Vincent Savaux, Faouzi Bader, Jacques Palicot
2016 conf
CrownCom
Rémi Bonnefoi, Christophe Moy, Jacques Palicot
2016 conf
CrownCom
Sumit Jagdish Darak, Amor Nafkha, Christophe Moy, Jacques Palicot
2016 J jnl
CoRR
Quentin Bodinier, Faouzi Bader, Jacques Palicot
2016 conf
ICT
Quentin Bodinier, Faouzi Bader, Jacques Palicot
2016 conf
EUSIPCO
Mamadou Lamarana Diallo, Marwa Chafii, Jacques Palicot, Faouzi Bader
2016 J jnl
IEEE Trans. Signal Process.
Vincent Savaux, Faouzi Bader, Jacques Palicot
2016 conf
EUSIPCO
Marwa Chafii, Jacques Palicot, Rémi Gribonval, Alister G. Burr
2016 J jnl
EAI Endorsed Trans. Cogn. Commun.
Sumit Jagdish Darak, Christophe Moy, Jacques Palicot
2016 conf
ISWCS
Sumit Jagdish Darak, Christophe Moy, Jacques Palicot, Yves Louët
2015 conf
EUSIPCO
Sumit Jagdish Darak, Honggang Zhang, Jacques Palicot, Christophe Moy
2015 conf
ICUMT
Mamadou Lamarana Diallo, Jacques Palicot, Faouzi Bader
2015 J jnl
Digit. Signal Process.
Sumit Jagdish Darak, Sumedh Dhabu, Christophe Moy, Honggang Zhang, Jacques Palicot, A. Prasad Vinod
2015 J jnl
J. Signal Process. Syst.
Navin Michael, A. Prasad Vinod, Christophe Moy, Jacques Palicot
2015 conf
TSP
Sumit Jagdish Darak, Christophe Moy, Honggang Zhang, Jacques Palicot
2015 J jnl
Digit. Signal Process.
Sumit Jagdish Darak, Sumedh Dhabu, Christophe Moy, Honggang Zhang, Jacques Palicot, A. Prasad Vinod
2015 conf
EUSIPCO
Vincent Gouldieff, Kostas Berberidis, Jacques Palicot
2015 J jnl
Trans. Emerg. Telecommun. Technol.
Xianfu Chen, Honggang Zhang, Marko Höyhtyä, Mika Lasanen, Jacques Palicot
2015 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Sumit Jagdish Darak, Jacques Palicot, Honggang Zhang, A. Prasad Vinod, Christophe Moy
2015 J jnl
IEEE Commun. Mag.
Christophe Moy, Jacques Palicot
2015 conf
ISWCS
Vincent Savaux, Malek Naoues, Faouzi Bader, Jacques Palicot
2014 conf
ISCCSP
Marwa Chafii, Jacques Palicot, Rémi Gribonval
2014 J jnl
IET Commun.
Rongpeng Li, Zhifeng Zhao, Yuan Zhang, Jacques Palicot, Honggang Zhang
2014 conf
EUSIPCO
Marwa Chafii, Jacques Palicot, Rémi Gribonval
2014 J jnl
EURASIP J. Adv. Signal Process.
Marwa Chafii, Jacques Palicot, Rémi Gribonval
2014 conf
ISWCS
Sumit Jagdish Darak, Honggang Zhang, Jacques Palicot, Christophe Moy
2014 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Sumit Jagdish Darak, A. Prasad Vinod, Edmund Ming-Kit Lai, Jacques Palicot, Honggang Zhang
2014 A* conf
CCS
Hadi Noureddine, Honggang Zhang, Jacques Palicot
2014 conf
ISWCS
Hadi Noureddine, Honggang Zhang, Jacques Palicot
2014 J jnl
IEEE Trans. Wirel. Commun.
Rongpeng Li, Zhifeng Zhao, Xianfu Chen, Jacques Palicot, Honggang Zhang
2014 J jnl
IEEE Commun. Mag.
Rongpeng Li, Zhifeng Zhao, Xuan Zhou, Jacques Palicot, Honggang Zhang
2014 J jnl
IEEE Commun. Lett.
Xuan Zhou, Zhifeng Zhao, Rongpeng Li, Yifan Zhou, Jacques Palicot, Honggang Zhang
2013 conf
EUSIPCO
Ziad Khalaf, Jacques Palicot, Amor Nafkha, Honggang Zhang
2013 B conf
PIMRC
Xianfu Chen, Honggang Zhang, Tao Chen, Jacques Palicot
2013 J jnl
EURASIP J. Wirel. Commun. Netw.
Xin Tao, Zhifeng Zhao, Rongpeng Li, Jacques Palicot, Honggang Zhang
2013 J jnl
J. Comput. Networks Commun.
Salma Bourbia, Daniel Le Guennec, Jacques Palicot, Khaled Grati, Adel Ghazel
2013 J jnl
IEEE Commun. Lett.
Xuan Zhou, Zhifeng Zhao, Rongpeng Li, Yifan Zhou, Jacques Palicot, Honggang Zhang
2013 J jnl
CoRR
Xianfu Chen, Honggang Zhang, Tao Chen, Mika Lasanen, Jacques Palicot
2013 J jnl
EURASIP J. Wirel. Commun. Netw.
Jacques Palicot, Steve McLaughlin, Honggang Zhang, H. Vincent Poor
2012 conf
CrownCom
Ziad Khalaf, Amor Nafkha, Jacques Palicot
2012 J jnl
Ann. des Télécommunications
Jacques Palicot
2012 J jnl
EURASIP J. Wirel. Commun. Netw.
Wassim Jouini, Christophe Moy, Jacques Palicot
2012 conf
ISWCS
Amor Nafkha, Jacques Palicot, Pierre Leray, Yves Louët
2012 J jnl
Int. J. Commun. Networks Distributed Syst.
Alexandre Skrzypczak, Jacques Palicot, Pierre Siohan
2012 J jnl
Int. J. Auton. Adapt. Commun. Syst.
Sufi Tabassum Gul, Christophe Moy, Jacques Palicot, Laurent Alaus, Dominique Noguet
2012 J jnl
IET Commun.
Sajjad Hussain, Yves Louët, Jacques Palicot
2012 J jnl
EURASIP J. Wirel. Commun. Netw.
Jacques Palicot, Joseph Mitola III, Zander Zhongding Lei, Friedrich K. Jondral
2012 J jnl
CoRR
Rongpeng Li, Zhifeng Zhao, Xianfu Chen, Jacques Palicot, Honggang Zhang
2011 J jnl
Circuits Syst. Signal Process.
Adel Metref, Daniel Le Guennec, Jacques Palicot
2011 B conf
GLOBECOM
Ziad Khalaf, Amor Nafkha, Jacques Palicot
2011 J jnl
IEEE Trans. Signal Process.
Navin Michael, A. Prasad Vinod, Christophe Moy, Jacques Palicot
2011 J jnl
Circuits Syst. Signal Process.
Navin Michael, A. Prasad Vinod, Christophe Moy, Jacques Palicot
2011 J jnl
Circuits Syst. Signal Process.
A. Prasad Vinod, Edmund Ming-Kit Lai, Pramod Kumar Meher, Jacques Palicot, Shahriar Mirabbasi
2011 J jnl
J. Signal Process. Syst.
Laurent Alaus, Jacques Palicot, Christian Roland, Yves Louët, Dominique Noguet
2010 conf
AICT
Laurent Alaus, Dominique Noguet, Jacques Palicot
2010 conf
AICT
Adel Metref, Daniel Le Guennec, Jacques Palicot
2010 J jnl
IEEE Commun. Lett.
Alban Goupil, Jacques Palicot
2010 conf
ICUMT
Mohamad Mroué, Amor Nafkha, Jacques Palicot
2010 J jnl
J. Commun. Networks
Navin Michael, Christophe Moy, Achutavarrier Prasad Vinod, Jacques Palicot
2010 conf
AICT
Hongzhi Wang, Wassim Jouini, Rachid Hachemani, Jacques Palicot, Leonardo S. Cardoso, Mérouane Debbah
2010 conf
CrownCom
Hongzhi Wang, Wassim Jouini, Amor Nafkha, Jacques Palicot, Leonardo S. Cardoso, Mérouane Debbah
2010 C conf
ISCAS
Navin Michael, A. Prasad Vinod, Christophe Moy, Jacques Palicot
2010 conf
CIP
Sufi Tabassum Gul, Christophe Moy, Jacques Palicot
2010 conf
AICT
Ziad Khalaf, Amor Nafkha, Jacques Palicot, Mohamed Ghozzi
2010 B conf
PIMRC
Navin Michael, A. Prasad Vinod, Christophe Moy, Jacques Palicot
2010 conf
CIP
Hongzhi Wang, Yves Louët, Jacques Palicot, Laurent Alaus, Dominique Noguet
2010 B conf
PIMRC
Jacques Palicot, Yves Louët, Mohamad Mroué
2010 J jnl
Int. J. Digit. Multim. Broadcast.
Mohamad Mroué, Amor Nafkha, Jacques Palicot, Benjamin Gavalda, Nelly Dagorne
2010 ed.
AICT
Tülin Atmaca, Jacques Palicot, Amor Nafkha, Thrasyvoulos Tsiatsos, Michel Marot, Oana Dini
2010 conf
GreenCom/CPSCom
Xun Zhang, Wassim Jouini, Pierre Leray, Jacques Palicot
2010 J jnl
IET Commun.
Désiré Guel, Jacques Palicot, Yves Louët
2010 conf
ICC
Wassim Jouini, Damien Ernst, Christophe Moy, Jacques Palicot
2009 J jnl
Ann. des Télécommunications
Loïg Godard, Christophe Moy, Jacques Palicot
2009 conf
DPS
Désiré Guel, Jacques Palicot
2009 conf
VTC Fall
Sosthene Yameogo, Jacques Palicot, Laurent Cariou
2009 conf
VTC Spring
Désiré Guel, Jacques Palicot
2009 B conf
IWCMC
Jacques Palicot
2009 J jnl
Phys. Commun.
Jacques Palicot, Christophe Moy, Rachid Hachemani
2009 C conf
DSD
Dominique Nussbaum, Karim Khalfallah, Christophe Moy, Amor Nafkha, Pierre Leray, Julien Delorme, Jacques Palicot, Jérôme Martin, Fabien Clermidy, Bertrand Mercier, Renaud Pacalet
2009 conf
CrownCom
Miguel López-Benítez, Fernando Casadevall, Anna Umbert, Jordi Pérez-Romero, Rachid Hachemani, Jacques Palicot, Christophe Moy
2008 conf
CrownCom
Raveendranatha P. Mahesh, Achutavarrier Prasad Vinod, Christophe Moy, Jacques Palicot
2008 C conf
DSD
Laurent Alaus, Dominique Noguet, Jacques Palicot
2008 J jnl
Ann. des Télécommunications
Yves Louët, Jacques Palicot
2008 conf
ISWPC
Laurent Alaus, Dominique Noguet, Jacques Palicot
2008 conf
ICC
Hongzhi Wang, Pierre Leray, Jacques Palicot
2008 J jnl
IET Commun.
Sajjad Hussain, Jacques Palicot, Yves Louët, Sidkieta Zabre
2008 conf
EW
Yves Louët, Jacques Palicot, Sidkieta Zabre
2008 J jnl
Signal Process.
Jacques Palicot, Alban Goupil
2007 conf
DSP
Désiré Guel, Yves Louët, Jacques Palicot
2007 conf
EUSIPCO
Rachid Hachemani, Jacques Palicot, Christophe Moy
2007 B conf
PIMRC
Ali Chamas Al Ghouwayel, Yves Louët, Jacques Palicot
2007 J jnl
Wirel. Commun. Mob. Comput.
Virgilio Rodriguez, Christophe Moy, Jacques Palicot
2007 A conf
IPDPS
Hongzhi Wang, Jean-Philippe Delahaye, Pierre Leray, Jacques Palicot
2007 J jnl
IEEE Trans. Signal Process.
Alban Goupil, Jacques Palicot
2007 B conf
GLOBECOM
Adel Metref, Daniel Le Guennec, Jacques Palicot
2007 B conf
PIMRC
Sufi Tabassum Gul, Christophe Moy, Jacques Palicot
2006 conf
ARC
Hongzhi Wang, Pierre Leray, Jacques Palicot
2006 C conf
ISCAS
Ali Chamas Al Ghouwayel, Yves Louët, Jacques Palicot
2006 B conf
PIMRC
Virgilio Rodriguez, Christophe Moy, Jacques Palicot
2006 conf
CrownCom
Mohamed Ghozzi, François Marx, Mischa Dohler, Jacques Palicot
2006 conf
CrownCom
Loïg Godard, Christophe Moy, Jacques Palicot
2006 B conf
PIMRC
Salvatore Ragusa, Jacques Palicot, Christian Lereau
2005 conf
ISSPA
Aïssa Ikhlef, Daniel Le Guennec, Jacques Palicot
2005 conf
EUSIPCO
Aïssa Ikhlef, Daniel Le Guennec, Jacques Palicot
2005 J jnl
Signal Process.
Athanasios A. Rontogiannis, Kostas Berberidis, Alexandra Marava, Jacques Palicot
2005 conf
EUSIPCO
Jacques Palicot, Yves Louët
2004 J jnl
Signal Process.
Alban Goupil, Jacques Palicot
2004 J jnl
IEEE Trans. Signal Process.
Kostas Berberidis, Stelios Rantos, Jacques Palicot
2004 conf
EUSIPCO
Alban Goupil, Jacques Palicot
2004 J jnl
IEEE Signal Process. Lett.
Alban Goupil, Jacques Palicot
2003 J jnl
IEEE Commun. Mag.
Jacques Palicot, Christian Roland
2003 conf
ICASSP (4)
Athanasios A. Rontogiannis, Alexandra Marava, Kostas Berberidis, Jacques Palicot
2002 J jnl
Ann. des Télécommunications
Christian Roland, Jacques Palicot
2002 conf
EUSIPCO
Alban Goupil, Jacques Palicot
2002 J jnl
Ann. des Télécommunications
Jacques Palicot, Tim Hentschel
2002 conf
DSP
Alban Goupil, Jacques Palicot
2002 conf
DSP
Athanasios A. Rontogiannis, Alexandra Marava, Kostas Berberidis, Jacques Palicot
2002 J jnl
Ann. des Télécommunications
Jacques Palicot, Tim Hentschel
2001 Misc conf
ICASSP
Alban Goupil, Jacques Palicot
2001 B conf
GLOBECOM
Kostas Berberidis, Alexandra Marava, Panos Karaivazoglou, Jacques Palicot
2001 Misc conf
ICASSP
Kostas Berberidis, Stelios Rantos, Jacques Palicot
2000 conf
ICC (1)
Jacques Palicot
1997 J jnl
Ann. des Télécommunications
Marc de Courville, Pierre Duhamel, Philippe Madec, Jacques Palicot
1996 Misc conf
ICASSP
Kostas Berberidis, Jacques Palicot
1996 conf
EUSIPCO
Kostas Berberidis, Jacques Palicot
1995 J jnl
Signal Process.
Kostas Berberidis, Jacques Palicot
1993 J jnl
Signal Process. Image Commun.
Jacques Palicot, Jacques Veillard
tests/unit/test_macho_dataclasses.py
← Index tests/unit/test_macho_dataclasses.py python
"""
Unit tests for Mach-O dataclasses.
"""
import pytest
from typing import List, Dict, Optional

pytestmark = [pytest.mark.unit, pytest.mark.dataclass, pytest.mark.macho]


class TestMachODataclass:
    """Tests for MachO dataclass."""

    def test_macho_required_fields(self):
        """Test MachO dataclass with required fields."""
        from redb.models.dataclasses import MachO

        macho = MachO(
            magic=0xFEEDFACF,
            cputype=0x01000007,
            cpusubtype=0x00000003,
            filetype=2,
            ncmds=15,
            sizeofcmds=1024,
            flags=0x00200085,
            architecture=0x01000007,
            architectures=[0x01000007],
            magic_str="MH_MAGIC_64",
            cputype_str="CPU_TYPE_X86_64",
            cpusubtype_str="CPU_SUBTYPE_X86_64_ALL",
            filetype_str="MH_EXECUTE",
            flags_str=["MH_NOUNDEFS", "MH_DYLDLINK", "MH_TWOLEVEL", "MH_PIE"],
            architecture_str="x86_64",
            architectures_str=["x86_64"],
            is_64bit=True,
            is_signed=True
        )

        assert macho.magic == 0xFEEDFACF
        assert macho.cputype == 0x01000007
        assert macho.is_64bit is True
        assert macho.is_signed is True
        assert macho.magic_str == "MH_MAGIC_64"
        assert macho.filetype_str == "MH_EXECUTE"

    def test_macho_optional_fields_defaults(self):
        """Test MachO dataclass optional fields default to correct values."""
        from redb.models.dataclasses import MachO

        macho = MachO(
            magic=0xFEEDFACF,
            cputype=0x01000007,
            cpusubtype=0x00000003,
            filetype=2,
            ncmds=15,
            sizeofcmds=1024,
            flags=0x00200085,
            architecture=0x01000007,
            architectures=[0x01000007],
            magic_str="MH_MAGIC_64",
            cputype_str="CPU_TYPE_X86_64",
            cpusubtype_str="CPU_SUBTYPE_X86_64_ALL",
            filetype_str="MH_EXECUTE",
            flags_str=["MH_NOUNDEFS"],
            architecture_str="x86_64",
            architectures_str=["x86_64"],
            is_64bit=True,
            is_signed=False
        )

        assert macho.number_of_load_commands == 0
        assert macho.load_commands_set is None
        assert macho.number_of_segments == 0
        assert macho.number_of_dylibs == 0
        assert macho.number_of_imports == 0
        assert macho.number_of_exports == 0
        assert macho.entry_point is None
        assert macho.uuid is None
        assert macho.version_info is None
        assert macho.version_info_str is None

    def test_macho_with_all_fields(self):
        """Test MachO dataclass with all fields populated."""
        from redb.models.dataclasses import MachO

        macho = MachO(
            magic=0xFEEDFACF,
            cputype=0x01000007,
            cpusubtype=0x00000003,
            filetype=2,
            ncmds=15,
            sizeofcmds=1024,
            flags=0x00200085,
            architecture=0x01000007,
            architectures=[0x01000007],
            magic_str="MH_MAGIC_64",
            cputype_str="CPU_TYPE_X86_64",
            cpusubtype_str="CPU_SUBTYPE_X86_64_ALL",
            filetype_str="MH_EXECUTE",
            flags_str=["MH_PIE"],
            architecture_str="x86_64",
            architectures_str=["x86_64"],
            is_64bit=True,
            is_signed=True,
            number_of_load_commands=15,
            load_commands_set=["LC_SEGMENT_64", "LC_DYLD_INFO_ONLY"],
            number_of_segments=4,
            number_of_dylibs=5,
            number_of_imports=100,
            number_of_exports=10,
            entry_point=0x100001234,
            uuid="12345678-1234-1234-1234-123456789012",
            version_info={"min_os": "10.15"},
            version_info_str={"min_os": "macOS 10.15"}
        )

        assert macho.number_of_load_commands == 15
        assert macho.uuid == "12345678-1234-1234-1234-123456789012"
        assert macho.entry_point == 0x100001234


class TestMachOSegmentDataclass:
    """Tests for MachOSegment dataclass."""

    def test_segment_creation(self):
        """Test MachOSegment dataclass creation."""
        from redb.models.dataclasses import MachOSegment

        segment = MachOSegment(
            segment_name="__TEXT",
            segment_vaddr=0x100000000,
            segment_vsize=0x1000,
            segment_offset=0,
            segment_size=0x1000,
            segment_max_vm_protection=7,
            segment_initial_vm_protection=5,
            segment_nsects=4,
            segment_flags=0,
            segment_entropy=6.5,
            segment_sha256="abc123def456789012345678901234567890123456789012345678901234"
        )

        assert segment.segment_name == "__TEXT"
        assert segment.segment_vaddr == 0x100000000
        assert segment.segment_entropy == 6.5


class TestMachOImportDataclass:
    """Tests for MachOImport dataclass."""

    def test_import_creation(self):
        """Test MachOImport dataclass creation."""
        from redb.models.dataclasses import MachOImport

        import_info = MachOImport(
            macho_imports_total=50,
            macho_import_libraryName=["libSystem.B.dylib", "CoreFoundation"],
            macho_import_functions=["_printf", "_malloc", "_free"]
        )

        assert import_info.macho_imports_total == 50
        assert len(import_info.macho_import_libraryName) == 2
        assert "_printf" in import_info.macho_import_functions

    def test_import_optional_fields(self):
        """Test MachOImport with optional fields as None."""
        from redb.models.dataclasses import MachOImport

        import_info = MachOImport(macho_imports_total=0)

        assert import_info.macho_imports_total == 0
        assert import_info.macho_import_libraryName is None
        assert import_info.macho_import_functions is None


class TestMachOExportDataclass:
    """Tests for MachOExport dataclass."""

    def test_export_creation(self):
        """Test MachOExport dataclass creation."""
        from redb.models.dataclasses import MachOExport

        export_info = MachOExport(
            macho_exports_total=10,
            macho_export_symbols=["_main", "_helper_func"]
        )

        assert export_info.macho_exports_total == 10
        assert "_main" in export_info.macho_export_symbols


class TestMachODylibDataclass:
    """Tests for MachODylib dataclass."""

    def test_dylib_creation(self):
        """Test MachODylib dataclass creation."""
        from redb.models.dataclasses import MachODylib

        dylib = MachODylib(
            dylib_name="/usr/lib/libSystem.B.dylib",
            dylib_timestamp=2,
            dylib_current_version=0x04E10200,
            dylib_compat_version=0x00010000
        )

        assert dylib.dylib_name == "/usr/lib/libSystem.B.dylib"
        assert dylib.dylib_timestamp == 2


class TestMachOLoadCommandDataclass:
    """Tests for MachOLoadCommand dataclass."""

    def test_load_command_creation(self):
        """Test MachOLoadCommand dataclass creation."""
        from redb.models.dataclasses import MachOLoadCommand

        lc = MachOLoadCommand(
            load_command=0x19,
            load_command_str="LC_SEGMENT_64",
            load_command_size=72
        )

        assert lc.load_command == 0x19
        assert lc.load_command_str == "LC_SEGMENT_64"
        assert lc.load_command_size == 72


class TestMachOUniversalDataclass:
    """Tests for MachOUniversal dataclass."""

    def test_universal_fat_binary(self):
        """Test MachOUniversal for FAT binary."""
        from redb.models.dataclasses import MachOUniversal

        universal = MachOUniversal(
            is_fat=True,
            architecture_count=2,
            architectures=["x86_64", "arm64"],
            architecture_info=[
                {"arch": "x86_64", "offset": 0x1000},
                {"arch": "arm64", "offset": 0x10000}
            ],
            fat_hash="abc123def456789012345678901234567890123456789012345678901234",
            fat_md5="abc123def456789012345678901234",
            fat_sha1="abc123def456789012345678901234567890"
        )

        assert universal.is_fat is True
        assert universal.architecture_count == 2
        assert "x86_64" in universal.architectures
        assert "arm64" in universal.architectures

    def test_universal_single_arch(self):
        """Test MachOUniversal for single-architecture binary."""
        from redb.models.dataclasses import MachOUniversal

        universal = MachOUniversal(
            is_fat=False,
            architecture_count=1,
            architectures=["arm64"],
            architecture_info=[{"arch": "arm64", "offset": 0}]
        )

        assert universal.is_fat is False
        assert universal.architecture_count == 1
        assert universal.fat_hash is None


class TestMachOCertificateDataclass:
    """Tests for MachOCertificate dataclass."""

    def test_certificate_creation(self):
        """Test MachOCertificate dataclass creation."""
        from redb.models.dataclasses import MachOCertificate

        cert = MachOCertificate(
            subject="CN=Apple Development",
            issuer="CN=Apple Worldwide Developer Relations",
            serial_number="123456789",
            not_before="2023-01-01T00:00:00Z",
            not_after="2024-01-01T00:00:00Z",
            thumbprint="abc123def456789012345678901234567890",
            certificate_type="leaf",
            order=0,
            algorithm="sha256WithRSAEncryption",
            common_name="Apple Development",
            organizational_unit="Development",
            organization="Apple Inc."
        )

        assert cert.subject == "CN=Apple Development"
        assert cert.certificate_type == "leaf"
        assert cert.order == 0


class TestMachOCodeDirectoryDataclass:
    """Tests for MachOCodeDirectory dataclass."""

    def test_code_directory_creation(self):
        """Test MachOCodeDirectory dataclass creation."""
        from redb.models.dataclasses import MachOCodeDirectory

        cd = MachOCodeDirectory(
            identifier="com.example.app",
            team_id="ABC123DEF",
            flags=0x10000,
            cd_hash="abc123def456789012345678901234567890123456789012345678901234"
        )

        assert cd.identifier == "com.example.app"
        assert cd.team_id == "ABC123DEF"
        assert cd.flags == 0x10000


class TestMachOCodeSigningInfoDataclass:
    """Tests for MachOCodeSigningInfo dataclass."""

    def test_code_signing_info_unsigned(self):
        """Test MachOCodeSigningInfo for unsigned binary."""
        from redb.models.dataclasses import MachOCodeSigningInfo

        info = MachOCodeSigningInfo(
            _id="abc123def456789012345678901234567890123456789012345678901234",
            signing_type="unsigned",
            has_signature=False,
            number_of_certificates=0
        )

        assert info.signing_type == "unsigned"
        assert info.has_signature is False
        assert info.number_of_certificates == 0

    def test_code_signing_info_signed(self):
        """Test MachOCodeSigningInfo for signed binary."""
        from redb.models.dataclasses import MachOCodeSigningInfo, MachOCodeDirectory

        cd = MachOCodeDirectory(
            identifier="com.example.app",
            team_id="ABC123DEF"
        )

        info = MachOCodeSigningInfo(
            _id="abc123def456789012345678901234567890123456789012345678901234",
            signing_type="certificate",
            has_signature=True,
            number_of_certificates=3,
            code_directories=[cd],
            entitlements={"com.apple.security.app-sandbox": True},
            has_hardened_runtime=True,
            has_library_validation=True
        )

        assert info.signing_type == "certificate"
        assert info.has_signature is True
        assert info.number_of_certificates == 3
        assert info.has_hardened_runtime is True

    def test_code_signing_info_adhoc(self):
        """Test MachOCodeSigningInfo for ad-hoc signed binary."""
        from redb.models.dataclasses import MachOCodeSigningInfo

        info = MachOCodeSigningInfo(
            _id="abc123def456789012345678901234567890123456789012345678901234",
            signing_type="ad-hoc",
            has_signature=True,
            number_of_certificates=0,
            arch_identifier="x86_64"
        )

        assert info.signing_type == "ad-hoc"
        assert info.number_of_certificates == 0
        assert info.arch_identifier == "x86_64"


class TestMachOEntitlementDataclass:
    """Tests for MachOEntitlement dataclass."""

    def test_entitlement_boolean(self):
        """Test MachOEntitlement with boolean value."""
        from redb.models.dataclasses import MachOEntitlement

        ent = MachOEntitlement(
            key="com.apple.security.app-sandbox",
            value_type="boolean",
            value_bool=True
        )

        assert ent.key == "com.apple.security.app-sandbox"
        assert ent.value_type == "boolean"
        assert ent.value_bool is True

    def test_entitlement_string(self):
        """Test MachOEntitlement with string value."""
        from redb.models.dataclasses import MachOEntitlement

        ent = MachOEntitlement(
            key="com.apple.developer.team-identifier",
            value_type="string",
            value_string="ABC123DEF"
        )

        assert ent.key == "com.apple.developer.team-identifier"
        assert ent.value_type == "string"
        assert ent.value_string == "ABC123DEF"

    def test_entitlement_array(self):
        """Test MachOEntitlement with array value."""
        from redb.models.dataclasses import MachOEntitlement

        ent = MachOEntitlement(
            key="com.apple.security.application-groups",
            value_type="array",
            value_array=["group.com.example.app", "group.com.example.shared"]
        )

        assert ent.key == "com.apple.security.application-groups"
        assert ent.value_type == "array"
        assert len(ent.value_array) == 2