Xiaole Zhao

40 papers A* 3A 2B 3Misc 1Journal 26Unranked 5
YearRankTypeTitle / Venue / Authors
2026 J jnl
Comput. Medical Imaging Graph.
Yan Liu, Yan Yang, Yongquan Jiang, Xiaole Zhao, Zhuyang Xie
2026 J jnl
Displays
Yan Liu, Yan Yang, Yongquan Jiang, Xiaole Zhao, Liang Fan
2026 J jnl
IEEE Trans. Consumer Electron.
Xiaole Zhao, Xinkun Wu, Xiangsong Jia, Xun Gong, Xiaobo Zhang, Tianrui Li, Xun Xu
2026 J jnl
Comput. Electron. Agric.
Abdul Qadeer, Qi Wang, Rizwan Azim, Xiaole Zhao, Wen Ma, Ibrahim Awuku, Fujia Li, Qinglin Liu, Yanping Liu, Bing Liu, Xuchun Li, Muhammad Sanaullah, Abdul Wakeel, Safiya Bibi
2026 J jnl
Comput. Electron. Agric.
Ibrahim Awuku, Abdul Qadeer, Xiaole Zhao, Rizwan Azim, Qi Wang, Wen Ma, Fujia Li, Muhammad Ishfaq, Xuchun Li, Bing Liu
2025 J jnl
Expert Syst. Appl.
Jin Gu, Xinbei Zha, Jiaming Zhang, Xiaole Zhao
2025 J jnl
IEEE Trans. Multim.
Pengzhan Chen, Shengdong Du, Xiaole Zhao, Jie Hu, Jingjing Li, Tianrui Li
2025 J jnl
Inf. Fusion
Yan Liu, Yan Yang, Yongquan Jiang, Xiaole Zhao, Zhuyang Xie
2025 B conf
IJCNN
Wenjia Yang, Xiaole Zhao, Xiaobo Zhang, Yan Yang, Tianrui Li
2025 J jnl
Big Data Min. Anal.
Changlong Guo, Yan Yang, Yongquan Jiang, Xiaobo Zhang, Xiaole Zhao, Jie Wang
2025 Misc conf
ICASSP
Yaohua Li, Xiaole Zhao, Xiaobo Zhang, Yan Yang, Tianrui Li
2025 conf
PAKDD (2)
Keyu Shen, Xiaobo Zhang, Yutao Liu, Yan Yang, Xiaole Zhao
2025 B conf
IJCNN
Chengxing Xie, Linze Li, Xiaole Zhao
2025 J jnl
Appl. Intell.
Yunyang Wu, Xiaobo Zhang, Xiaole Zhao, Yimin Sun, Tianrui Li
2024 B conf
IJCNN
Xiangsong Jia, Xinkun Wu, Xiaobo Zhang, Xiaole Zhao
2024 A* conf
ACM Multimedia
Xiaole Zhao, Linze Li, Chengxing Xie, Xiaoming Zhang, Ting Jiang, Wenjie Lin, Shuaicheng Liu, Tianrui Li
2024 J jnl
CoRR
Xiaole Zhao, Linze Li, Chengxing Xie, Xiaoming Zhang, Ting Jiang, Wenjie Lin, Shuaicheng Liu, Tianrui Li
2024 J jnl
CoRR
Chengxing Xie, Xiaoming Zhang, Linze Li, Haiteng Meng, Tianlin Zhang, Tianrui Li, Xiaole Zhao
2024 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Xiaobo Zhang, Tao Wang, Xiaole Zhao, Dengmin Wen, Donghai Zhai
2023 A* conf
ICCV
Xiaoming Zhang, Tianrui Li, Xiaole Zhao
2023 conf
CVPR Workshops
Chengxing Xie, Xiaoming Zhang, Linze Li, Haiteng Meng, Tianlin Zhang, Tianrui Li, Xiaole Zhao
2023 A conf
BMVC
Xiaole Zhao, Xinkun Wu
2023 conf
CVPR Workshops
Yawei Li, Yulun Zhang, Radu Timofte, Luc Van Gool, Lei Yu, Youwei Li, Xinpeng Li, Ting Jiang, Qi Wu, Mingyan Han, Wenjie Lin, Chengzhi Jiang, Jinting Luo, Haoqiang Fan, Shuaicheng Liu, Yucong Wang, Minjie Cai, Mingxi Li, Yuhang Zhang, Xianjun Fan, Yankai Sheng, Yanyu Mao, Nihao Zhang, Qian Wang, Mingjun Zheng, Long Sun, Jinshan Pan, Jiangxin Dong, Jinhui Tang, Zhongbao Yang, Yan Wang, Erlin Pan, Qixuan Cai, Xinan Dai, Magauiya Zhussip, Nikolay Kalyazin, Dmitry Vyal, Xueyi Zou, Youliang Yan, Heaseo Chung, Jin Zhang, Gaocheng Yu, Feng Zhang, Hongbin Wang, Bohao Liao, Zhibo Du, Yu-Liang Wu, Gege Shi, Long Peng, Yang Wang, Yang Cao, Zhengjun Zha, Zhi-Kai Huang, Yi-Chung Chen, Yuan-Chun Chiang, Hao-Hsiang Yang, Wei-Ting Chen, Hua-En Chang, I-Hsiang Chen, Chia-Hsuan Hsieh, Sy-Yen Kuo, Xin Liu, Jiahao Pan, Hongyuan Yu, Weichen Yu, Lin Ge, Jiahua Dong, Yajun Zou, Zhuoyuan Wu, Binnan Han, Xiaolin Zhang, Heng Zhang, Xuanwu Yin, Kunlong Zuo, Weijian Deng, Hongjie Yuan, Zengtong Lu, Mingyu Ouyang, Wenzhuo Ma, Nian Liu, Hanyou Zheng, Yuantong Zhang, Junxi Zhang, Zhenzhong Chen, Garas Gendy, Nabil Sabor, Jingchao Hou, Guanghui He, Yurui Zhu, Xi Wang, Xueyang Fu, Zheng-Jun Zha, Daheng Yin, Mengyang Liu, Baijun Chen, Ao Li, Lei Luo, Kangjun Jin, Ce Zhu, Xiaoming Zhang, Chengxing Xie, Linze Li, Haiteng Meng, Tianlin Zhang, Tianrui Li, Xiaole Zhao, Zhao Zhang, Baiang Li, Huan Zheng, Suiyi Zhao, Yangcheng Gao, Jiahuan Ren, Kang Hu, Jingpeng Shi, Zhijian Wu, Dingjiang Huang, Jinchen Zhu, Hui Li, Qianru Xv, Tianle Liu, Gang Wu, Junpeng Jiang, Xianming Liu, Junjun Jiang, Mingjian Zhang, Shizhuang Weng, Jing Hu, Chengxu Wu, Qinrui Fan, Chengming Feng, Ziwei Luo, Shu Hu, Siwei Lyu, Xi Wu, Xin Wang
2022 J jnl
Knowl. Based Syst.
Xiaole Zhao, Yulun Zhang, Yun Qin, Qian Wang, Tao Zhang, Tianrui Li
2022 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Haoqian Wang, Xiaowan Hu, Xiaole Zhao, Yulun Zhang
2021 A* conf
CVPR
Xiaowan Hu, Ruijun Ma, Zhihong Liu, Yuanhao Cai, Xiaole Zhao, Yulun Zhang, Haoqian Wang
2021 A conf
ICME
Xiaowan Hu, Haoqian Wang, Yuanhao Cai, Xiaole Zhao, Yulun Zhang
2020 J jnl
Comput. Vis. Image Underst.
Xiaole Zhao, Xiafei Hu, Ying Liao, Tian He, Tao Zhang, Xueming Zou, Jinsha Tian
2020 J jnl
Multim. Tools Appl.
Xiaole Zhao, Huali Zhang, Yuliang Zhou, Wei Bian, Tao Zhang, Xueming Zou
2020 J jnl
Int. J. Neural Syst.
Yun Qin, Nan Zhang, Yan Chen, Xiaojun Zuo, Sisi Jiang, Xiaole Zhao, Li Dong, Jianfu Li, Tao Zhang, Dezhong Yao, Cheng Luo
2019 J jnl
IEEE Access
Xiaole Zhao, Tao Zhang, Hangfei Liu, Gaiyan Zhu, Xueming Zou
2019 J jnl
IEEE Trans. Image Process.
Xiaole Zhao, Yulun Zhang, Tao Zhang, Xueming Zou
2019 J jnl
CoRR
Xiaole Zhao, Ying Liao, Ye Li, Tao Zhang, Xueming Zou
2019 J jnl
CoRR
Xiaole Zhao, Huali Zhang, Hangfei Liu, Yun Qin, Tao Zhang, Xueming Zou
2018 J jnl
CoRR
Xiaole Zhao, Yulun Zhang, Tao Zhang, Xueming Zou
2018 conf
PRCV (1)
Xiaole Zhao, Hangfei Liu, Tao Zhang, Wei Bian, Xueming Zou
2016 J jnl
Comput. Vis. Media
Xiaole Zhao, Yadong Wu, Jinsha Tian, Hongying Zhang
2016 J jnl
Neurocomputing
Xiaole Zhao, Yadong Wu, Jinsha Tian, Hongying Zhang
2015 conf
CCCV (1)
Xiaole Zhao, Yadong Wu, Jinsha Tian, Hongying Zhang
2011 J jnl
Microelectron. Reliab.
Jiann Min Chin, Vinod Narang, Xiaole Zhao, Meng Yeow Tay, Angeline Phoa, Venkat Ravikumar, Lwin Hnin Ei, Soon Huat Lim, Chea Wei Teo, Syahirah Zulkifli, Mei Chyn Ong, Ming Chuan Tan
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