Xianglong Tang

143 papers A* 2B 6C 5Misc 2Journal 105Unranked 23
YearRankTypeTitle / Venue / Authors
2025 J jnl
Entropy
Soumia Mehimeh, Xianglong Tang
2025 Misc conf
ICASSP
Gong Li, Wei Zhao, Peng Liu, Xianglong Tang
2025 J jnl
Int. J. Mach. Learn. Cybern.
Suo Gao, Rui Wu, Songbo Liu, Ugur Erkan, Abdurrahim Toktas, Jiafeng Liu, Xianglong Tang
2025 J jnl
IEEE Trans. Affect. Comput.
Yuanyi Luo, Wei Liu, Qiang Sun, Sirui Li, Jichunyang Li, Rui Wu, Xianglong Tang
2025 J jnl
Pattern Recognit.
Xiaoyan Tian, Ye Jin, Zhao Zhang, Peng Liu, Xianglong Tang
2024 J jnl
Vis. Comput.
Peng Liu, Gong Li, Wei Zhao, Xianglong Tang
2024 J jnl
Multim. Tools Appl.
Yuanyi Luo, Rui Wu, Jiafeng Liu, Xianglong Tang
2024 J jnl
Multim. Syst.
Yuanyi Luo, Rui Wu, Jiafeng Liu, Xianglong Tang
2024 J jnl
Image Vis. Comput.
Ye Jin, Xiaoyan Tian, Zhao Zhang, Peng Liu, Xianglong Tang
2024 J jnl
Vis. Comput.
Peng Liu, Gong Li, Wei Zhao, Xianglong Tang
2024 J jnl
IEEE Internet Things J.
Suo Gao, Herbert Ho-Ching Iu, Ugur Erkan, Cemaleddin Simsek, Jun Mou, Abdurrahim Toktas, Rui Wu, Xianglong Tang
2024 J jnl
IEEE Internet Things J.
Suo Gao, Herbert Ho-Ching Iu, Mengjiao Wang, Donghua Jiang, Ahmed A. Abd El-Latif, Rui Wu, Xianglong Tang
2024 Misc conf
ICASSP
Xiaoyan Tian, Ye Jin, Zhao Zhang, Peng Liu, Xianglong Tang
2024 J jnl
ISPRS Int. J. Geo Inf.
Jin Shi, Xianglong Tang
2024 J jnl
IEEE Internet Things J.
Rui Wu, Suo Gao, Herbert Ho-Ching Iu, Shuang Zhou, Ugur Erkan, Abdurrahim Toktas, Xianglong Tang
2024 J jnl
Neural Comput. Appl.
Rui Wu, Yuanyi Luo, Jiafeng Liu, Xianglong Tang
2024 J jnl
Multim. Tools Appl.
Xiaoyan Tian, Ye Jin, Zhao Zhang, Peng Liu, Xianglong Tang
2023 J jnl
Signal Process.
Suo Gao, Rui Wu, Xingyuan Wang, Jin Wang, Qi Li, Chunpeng Wang, Xianglong Tang
2023 J jnl
Neurocomputing
Yuanyi Luo, Rui Wu, Jiafeng Liu, Xianglong Tang
2023 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Suo Gao, Rui Wu, Xingyuan Wang, Jiafeng Liu, Qi Li, Chunpeng Wang, Xianglong Tang
2023 J jnl
IEEE Geosci. Remote. Sens. Lett.
Peng Liu, Gong Li, Wei Zhao, Xianglong Tang
2023 J jnl
Inf. Sci.
Suo Gao, Rui Wu, Xingyuan Wang, Jiafeng Liu, Qi Li, Xianglong Tang
2023 J jnl
Multim. Syst.
Xiaoyan Tian, Ye Jin, Xianglong Tang
2023 J jnl
Inf. Sci.
Yushan Wu, Rui Wu, Jiafeng Liu, Xianglong Tang
2023 J jnl
Appl. Intell.
Suo Gao, Songbo Liu, Xingyuan Wang, Rui Wu, Jin Wang, Qi Li, Xianglong Tang
2023 conf
ICME Workshops
Xiaoyan Tian, Ye Jin, Zhao Zhang, Peng Liu, Xianglong Tang
2023 J jnl
Pattern Anal. Appl.
Xiaoyan Tian, Ye Jin, Xianglong Tang
2023 J jnl
Knowl. Based Syst.
Soumia Mehimeh, Xianglong Tang, Wei Zhao
2023 J jnl
Neural Process. Lett.
Yingnan Zhao, Peng Liu, Wei Zhao, Xianglong Tang
2022 J jnl
Neurocomputing
Yushan Wu, Rui Wu, Yutai Hou, Jiafeng Liu, Xianglong Tang
2022 J jnl
ISPRS Int. J. Geo Inf.
Xianglong Tang, Tianfeng Wei, Yueming He, Kun He
2022 J jnl
Trans. GIS
Linchuan Yang, Xianglong Tang, Hongtai Yang, Fanyu Meng, Jixiang Liu
2021 J jnl
Algorithms
Dan Yu, Peng Liu, Dezhi Qiao, Xianglong Tang
2021 J jnl
Algorithms
Yiran Xue, Rui Wu, Jiafeng Liu, Xianglong Tang
2021 C conf
ACML
Hongjiao Guan, Bin Ma, Yingtao Zhang, Xianglong Tang
2021 J jnl
CoRR
Cangning Fan, Fangyi Zhang, Peng Liu, Xiuyu Sun, Hao Li, Ting Xiao, Wei Zhao, Xianglong Tang
2021 J jnl
Appl. Intell.
Hongjiao Guan, Yingtao Zhang, Min Xian, Heng-Da Cheng, Xianglong Tang
2020 J jnl
Int. J. Appl. Math. Comput. Sci.
Hongjiao Guan, Yingtao Zhang, Heng-Da Cheng, Xianglong Tang
2020 A* conf
CVPR
Fei Du, Peng Liu, Wei Zhao, Xianglong Tang
2020 J jnl
Neurocomputing
Cangning Fan, Peng Liu, Ting Xiao, Wei Zhao, Xianglong Tang
2020 J jnl
Int. J. Appl. Math. Comput. Sci.
Depeng Gao, Rui Wu, Jiafeng Liu, Xiaopeng Fan, Xianglong Tang
2020 J jnl
Knowl. Based Syst.
Peng Liu, Chenjia Bai, Yingnan Zhao, Chenyao Bai, Wei Zhao, Xianglong Tang
2020 J jnl
Expert Syst. Appl.
Peng Liu, Ting Xiao, Cangning Fan, Wei Zhao, Xianglong Tang, Hongwei Liu
2020 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Fei Du, Peng Liu, Wei Zhao, Xianglong Tang
2020 J jnl
ISPRS Int. J. Geo Inf.
Chenyu Lu, Min Pang, Yang Zhang, Hengji Li, Chengpeng Lu, Xianglong Tang, Wei Cheng
2020 J jnl
Knowl. Based Syst.
Yingnan Zhao, Peng Liu, Chenjia Bai, Wei Zhao, Xianglong Tang
2020 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Chang Liu, Peng Liu, Wei Zhao, Xianglong Tang
2019 J jnl
Int. J. Bio Inspired Comput.
Xingxing Hao, Jing Liu, Xiaoxiao Yuan, Xianglong Tang, Zhangtao Li
2019 J jnl
Int. J. Appl. Math. Comput. Sci.
Dongfang Zhao, Jiafeng Liu, Rui Wu, Dansong Cheng, Xianglong Tang
2019 J jnl
Appl. Intell.
Peng Liu, Yingnan Zhao, Wei Zhao, Xianglong Tang, Zichan Yang
2019 J jnl
Neurocomputing
Hongjiao Guan, Yingtao Zhang, Heng-Da Cheng, Min Xian, Xianglong Tang
2019 J jnl
J. Electronic Imaging
Depeng Gao, Jiafeng Liu, Rui Wu, Xianglong Tang
2019 J jnl
Neurocomputing
Chenjia Bai, Peng Liu, Wei Zhao, Xianglong Tang
2019 J jnl
Pattern Recognit.
Peng Liu, Chang Liu, Wei Zhao, Xianglong Tang
2019 J jnl
IEEE Access
Dongfang Zhao, Jiafeng Liu, Rui Wu, Dansong Cheng, Xianglong Tang
2019 J jnl
Neurocomputing
Ting Xiao, Peng Liu, Wei Zhao, Hongwei Liu, Xianglong Tang
2019 J jnl
Int. J. Appl. Math. Comput. Sci.
Depeng Gao, Jiafeng Liu, Rui Wu, Dansong Cheng, Xiaopeng Fan, Xianglong Tang
2018 J jnl
CoRR
Hongjiao Guan, Yingtao Zhang, Heng-Da Cheng, Xianglong Tang
2018 J jnl
Comput. Informatics
Songbo Liu, Xudong Zhao, Xianglong Tang
2018 conf
ICONIP (3)
Dongfang Zhao, Jiafeng Liu, Rui Wu, Dansong Cheng, Xianglong Tang
2018 J jnl
Trans. Inst. Meas. Control
Ye Tao, Duzhou Zhang, Shengjun Cheng, Xianglong Tang
2018 J jnl
J. Electronic Imaging
Ting Xiao, Peng Liu, Wei Zhao, Xianglong Tang
2018 J jnl
IEEE Trans. Multim.
Chang Liu, Peng Liu, Wei Zhao, Xianglong Tang
2018 J jnl
Signal Process. Image Commun.
Fei Du, Peng Liu, Wei Zhao, Xianglong Tang
2017 J jnl
Biomed. Signal Process. Control.
Songbo Liu, Peng Liu, Zhixun Li, Yingtao Zhang, Weimin Li, Xianglong Tang
2017 conf
IScIDE
Songbo Liu, Ye Jin, Ye Tao, Xianglong Tang
2017 J jnl
Int. J. Appl. Math. Comput. Sci.
Jingzhe Jiang, Peng Liu, Zhipeng Ye, Wei Zhao, Xianglong Tang
2017 J jnl
Neurocomputing
Peng Liu, Ye Tao, Wei Zhao, Xianglong Tang
2017 J jnl
Int. J. Appl. Math. Comput. Sci.
Yiran Xue, Peng Liu, Ye Tao, Xianglong Tang
2017 J jnl
Biomed. Signal Process. Control.
Zhixun Li, Yingtao Zhang, Huiling Gong, Guangzhong Liu, Weimin Li, Xianglong Tang
2017 conf
IScIDE
Rui Wu, Dongfang Zhao, Jiafeng Liu, Xianglong Tang, Qingcheng Huang
2017 B conf
ICTAI
Peng Liu, Chang Liu, Wei Zhao, Xianglong Tang
2017 B conf
ICIP
Peng Liu, Zhipeng Ye, Xianglong Tang, Wei Zhao
2017 conf
ICONIP (6)
Depeng Gao, Rui Wu, Jiafeng Liu, Qingcheng Huang, Xianglong Tang, Peng Liu
2017 J jnl
Neurocomputing
Ye Jin, Rui Wu, Weiming Liu, Xianglong Tang
2016 J jnl
Comput. Medical Imaging Graph.
Zhixun Li, Yingtao Zhang, Huiling Gong, Weimin Li, Xianglong Tang
2016 J jnl
J. Electronic Imaging
Dan Yu, Peng Liu, Zhipeng Ye, Xianglong Tang, Wei Zhao
2016 J jnl
Neurocomputing
Zhipeng Ye, Peng Liu, Jiafeng Liu, Xianglong Tang, Wei Zhao
2016 J jnl
Int. Arab J. Inf. Technol.
Peng Liu, Zhipeng Ye, Wei Zhao, Xianglong Tang
2016 B conf
ICPR
Hongjiao Guan, Yingtao Zhang, Min Xian, Heng-Da Cheng, Xianglong Tang
2015 J jnl
Smart Comput. Rev.
Zhipeng Ye, Peng Liu, Wei Zhao, Xianglong Tang
2015 J jnl
Biomed. Signal Process. Control.
Zhixun Li, Yingtao Zhang, Guangzhong Liu, Haoyang Shao, Weimin Li, Xianglong Tang
2015 conf
IScIDE (1)
Jinzhe Jiang, Ye Tao, Wei Zhao, Xianglong Tang
2015 J jnl
J. Electronic Imaging
Zhipeng Ye, Peng Liu, Wei Zhao, Xianglong Tang
2015 J jnl
Neurocomputing
Guojun Liu, Xianglong Tang, Maozu Guo, Yang Liu
2015 J jnl
J. Electronic Imaging
Zhipeng Ye, Peng Liu, Wei Zhao, Xianglong Tang
2015 B conf
ICIP
Rui Wu, Zhipeng Ye, Peng Liu, Xianglong Tang, Wei Zhao
2015 B conf
ICIP
Zhipeng Ye, Peng Liu, Xianglong Tang, Wei Zhao
2015 J jnl
Int. J. Mach. Learn. Cybern.
Liming Yuan, Jiafeng Liu, Xianglong Tang, Daming Shi, Lu Zhao
2015 conf
IScIDE (1)
Dan Yu, Zhipeng Ye, Wei Zhao, Xianglong Tang
2015 conf
ICONIP (3)
Xiping Duan, Jiafeng Liu, Xianglong Tang
2014 J jnl
Neurocomputing
Liming Yuan, Jiafeng Liu, Xianglong Tang
2014 conf
ICONIP (3)
Ye Tao, Peng Liu, Wei Zhao, Xianglong Tang
2014 J jnl
Int. J. Appl. Math. Comput. Sci.
Liming Yuan, Jiafeng Liu, Xianglong Tang
2013 conf
IScIDE
Yingtao Zhang, Heng-Da Cheng, Jianhua Huang, Xianglong Tang
2013 J jnl
J. Digit. Imaging
Yan Liu, Heng-Da Cheng, Jianhua Huang, Yingtao Zhang, Xianglong Tang, Jiawei Tian
2013 C conf
VCIP
Songbo Liu, Heng-Da Cheng, Yan Liu, Jianhua Huang, Yingtao Zhang, Xianglong Tang
2013 conf
IScIDE
Guojun Liu, Xianglong Tang
2013 conf
IScIDE
Xiping Duan, Jiafeng Liu, Xianglong Tang
2013 C conf
VCIP
Boyu Zhang, Jiafeng Liu, Xianglong Tang
2013 J jnl
IET Comput. Vis.
Xudong Zhao, Peng Liu, Jiafeng Liu, Xianglong Tang
2012 conf
IScIDE
Dansong Cheng, Daming Shi, Xianglong Tang, Jiafeng Liu
2012 conf
IScIDE
Shengjun Cheng, Qingcheng Huang, Jiafeng Liu, Xianglong Tang
2012 J jnl
J. Digit. Imaging
Yan Liu, Heng-Da Cheng, Jianhua Huang, Yingtao Zhang, Xianglong Tang
2012 J jnl
Comput. Inf. Sci.
Jing Xu, Wei Zhao, Peng Liu, Xianglong Tang
2012 J jnl
Pattern Recognit.
Yingtao Zhang, Heng-Da Cheng, Jianhua Huang, Xianglong Tang
2012 J jnl
J. Medical Syst.
Yan Liu, Heng-Da Cheng, Jianhua Huang, Yingtao Zhang, Xianglong Tang, Jin-Wen Tian, Yajie Wang
2012 J jnl
Pattern Recognit.
Yuru wang, Xianglong Tang, Qing Cui
2012 B conf
ICIP
Min Xian, Jianhua Huang, Yingtao Zhang, Xianglong Tang
2012 conf
IScIDE
Liming Yuan, Qingcheng Huang, Jiafeng Liu, Xianglong Tang
2012 conf
ICONIP (3)
Liming Yuan, Songbo Liu, Qingcheng Huang, Jiafeng Liu, Xianglong Tang
2011 C conf
VCIP
Xudong Zhao, Peng Liu, Jiafeng Liu, Xianglong Tang
2011 C conf
VCIP
Xudong Zhao, Peng Liu, Jiafeng Liu, Xianglong Tang
2011 J jnl
Int. J. Comput. Intell. Syst.
Shan Gai, Peng Liu, Jiafeng Liu, Xianglong Tang
2011 conf
IScIDE
Boyu Zhang, Wei Zhao, Jiafeng Liu, Rui Wu, Xianglong Tang
2010 J jnl
J. Intell. Robotic Syst.
Chenguang Liu, Peng Liu, Jiafeng Liu, Jianhua Huang, Xianglong Tang
2010 J jnl
Pattern Recognit.
Yingtao Zhang, Heng-Da Cheng, Jiawei Tian, Jianhua Huang, Xianglong Tang
2010 J jnl
Pattern Recognit.
Bo Liu, Heng-Da Cheng, Jianhua Huang, Jiawei Tian, Xianglong Tang, Jiafeng Liu
2010 J jnl
Pattern Recognit.
Bo Liu, Heng-Da Cheng, Jianhua Huang, Jiawei Tian, Xianglong Tang, Jiafeng Liu
2009 J jnl
Comput. Inf. Sci.
Shan Gai, Peng Liu, Jiafeng Liu, Xianglong Tang
2009 J jnl
Pattern Recognit.
Guojun Liu, Xianglong Tang, Heng-Da Cheng, Jianhua Huang, Jiafeng Liu
2009 J jnl
Comput. Inf. Sci.
Peng Liu, Jing Xu, Jiafeng Liu, Xianglong Tang
2009 J jnl
Comput. Inf. Sci.
Guojun Liu, Xianglong Tang
2009 conf
CSIE (6)
Xuesong Yu, Jiafeng Liu, Xianglong Tang, Jianhua Huang
2008 J jnl
IEEE Signal Process. Lett.
Ye Jin, Ling Song, Xianglong Tang, Ming Du
2008 J jnl
Comput. Inf. Sci.
Rui Wu, Jianhua Huang, Xianglong Tang, Jiafeng Liu
2008 J jnl
Pattern Recognit. Lett.
Xifeng Tong, Songbo Liu, Jianhua Huang, Xianglong Tang
2008 J jnl
Comput. Inf. Sci.
Dansong Cheng, Xianglong Tang, Jiafeng Liu, Xiaofang Liu
2007 J jnl
Comput. Biol. Medicine
Jie Li, Xianglong Tang
2007 J jnl
Pattern Recognit.
Jie Li, Xianglong Tang, Wei Zhao, Jianhua Huang
2007 A* conf
ICCV
Guojun Liu, Xianglong Tang, Jianhua Huang, Jiafeng Liu, Da Sun
2006 J jnl
Int. J. Document Anal. Recognit.
Hui Zhu, Xianglong Tang, Peng Liu
2006 J jnl
J. Comput. Res. Dev.
Bo Yang, Yadong Wang, Xiaohong Su, Xianglong Tang
2005 conf
FSKD (2)
Jie Li, Xianglong Tang, Xia Li
2005 J jnl
Pattern Recognit. Lett.
Liying Zheng, Xianglong Tang
2005 J jnl
Pattern Recognit. Lett.
Hui Zhu, Xianglong Tang
2005 J jnl
Pattern Recognit. Lett.
Xifeng Tong, Jianhua Huang, Xianglong Tang, Daming Shi
2004 J jnl
Pattern Recognit. Lett.
Liying Zheng, Abbas H. Hassin, Xianglong Tang
2004 conf
ICPR (2)
Guangling Sun, Jianhua Huang, Xianglong Tang
2004 conf
ICPR (1)
Geok See Ng, Xifeng Tong, Xianglong Tang, Daming Shi
2004 conf
ICPR (3)
Hui Zhu, Jianhua Huang, Xianglong Tang
2004 J jnl
J. Comput. Sci. Technol.
Abbas H. Hassin, Xianglong Tang, Jiafeng Liu, Wei Zhao
2004 conf
ISNN (1)
Hui Zhu, Jiafeng Liu, Xianglong Tang, Jianhuan Huang
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