Vincent Chau

63 papers A* 3A 3B 7C 5Misc 5Journal 32Unranked 6
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Jiawei Wang, Vincent Chau, Weiwei Wu
2025 A* conf
AAAI
Xingchen Sha, Shuyu Bao, Hau Chan, Vincent Chau, Ken C. K. Fong, Minming Li
2025 A* conf
AAAI
Yixuan Li, Can Chen, Jiajun Li, Jiahui Duan, Xiongwei Han, Tao Zhong, Vincent Chau, Weiwei Wu, Wanyuan Wang
2025 J jnl
CoRR
Yixuan Li, Can Chen, Jiajun Li, Jiahui Duan, Xiongwei Han, Tao Zhong, Vincent Chau, Weiwei Wu, Wanyuan Wang
2025 J jnl
Comput. Oper. Res.
Xi Liu, Xin Chen, Vincent Chau, Jedrzej Musial, Jacek Blazewicz
2025 ed.
IJTCS-FAW
Vincent Chau, Christoph Dürr, Minming Li, Pinyan Lu
2025 A conf
ECAI
Xingchen Sha, Hau Chan, Vincent Chau, Ken C. K. Fong, Minming Li, Wai Lun Lo
2025 J jnl
ACM Trans. Sens. Networks
Ziyao Huang, Weiwei Wu, Vincent Chau, Kui Wu, Xiang Liu, Jianping Wang
2025 J jnl
IEEE J. Sel. Areas Commun.
Xiaoxing Qiu, Chenchen Fu, Sujunjie Sun, Yuhan Du, Vincent Chau, Weiwei Wu, Junzhou Luo, Song Han
2025 J jnl
J. Imaging
Chenchen Fu, Sujunjie Sun, Ning Wei, Vincent Chau, Xueyong Xu, Weiwei Wu
2024 conf
CBD
Yu Xia, Anmin Li, Xueyong Xu, Yuhang Xu, Jinchen Wang, Vincent Chau, Chenchen Fu, Weiwei Wu
2024 J jnl
Algorithmica
Yicheng Xu, Vincent Chau, Chenchen Wu, Yong Zhang, Vassilis Zissimopoulos, Yifei Zou
2024 J jnl
IEEE Trans. Mob. Comput.
Ziyao Huang, Weiwei Wu, Chenchen Fu, Vincent Chau, Xiang Liu, Jianping Wang, Junzhou Luo
2024 J jnl
IEEE Trans. Knowl. Data Eng.
Chenchen Fu, Xiaoxing Qiu, Vincent Chau, Zelin Yun, Chun Jason Xue, Weiwei Wu, Junzhou Luo, Song Han
2024 C conf
PDCAT
Yixuan Li, Yi Huang, Junlan Feng, Chao Deng, Chunyu Liu, Vincent Chau, Wanyuan Wang
2024 conf
IJTCS-FAW
Chi Kit Ken Fong, Xingchen Sha, Hau Chan, Vincent Chau, Wai-Lun Lo
2023 J jnl
IEEE Trans. Mob. Comput.
Xiang Liu, Chenchen Fu, Weiwei Wu, Minming Li, Wanyuan Wang, Vincent Chau, Junzhou Luo
2023 J jnl
J. Sched.
Vincent Chau, Shengzhong Feng, Kim Thang Nguyen
2023 A conf
RTSS
Xiaoxing Qiu, Weiwei Wu, Chenchen Fu, Zelin Yun, Vincent Chau, Song Han
2023 A* conf
AAAI
Xuezhen Wang, Vincent Chau, Hau Chan, Ken C. K. Fong, Minming Li
2023 J jnl
CoRR
Jiawei Wang, Vincent Chau, Weiwei Wu
2022 J jnl
Comput. Electr. Eng.
Chenchen Fu, Zhengxuan Gao, Weiwei Wu, Vincent Chau, Jie Wang, Xueyong Xu, Junzhou Luo
2022 Misc conf
FAW
Lu Han, Vincent Chau, Chi Kit Ken Fong
2022 J jnl
Comput. Electr. Eng.
Yicheng Xu, Vincent Chau, Rolf H. Möhring
2022 C conf
TAMC
Vincent Chau, Chenchen Fu, Yan Lyu, Weiwei Wu, Yizheng Zhang
2021 J jnl
J. Sched.
Eric Angel, Evripidis Bampis, Vincent Chau, Vassilis Zissimopoulos
2021 J jnl
Theor. Comput. Sci.
Vincent Chau, Chi Kit Ken Fong, Shengxin Liu, Elaine Yinling Wang, Yong Zhang
2021 ed.
PAAP
Li Ning, Vincent Chau, Francis C. M. Lau
2021 J jnl
Theor. Comput. Sci.
Hua Chen, Lin Chen, Guochuan Zhang, Vincent Chau
2020 conf
Complexity and Approximation
Vincent Chau, Minming Li
2020 J jnl
Theor. Comput. Sci.
Vincent Chau, Xin Chen, Ken C. K. Fong, Minming Li, Kai Wang
2020 Misc conf
FAW
Vincent Chau, Chi Kit Ken Fong, Shengxin Liu, Elaine Yinling Wang, Yong Zhang
2020 J jnl
Theor. Comput. Sci.
Vincent Chau, Minming Li, Elaine Yinling Wang, Ruilong Zhang, Yingchao Zhao
2020 J jnl
IEEE Internet Things J.
Yicheng Xu, Vincent Chau, Chenchen Wu, Yong Zhang, Yifei Zou
2020 J jnl
CoRR
Yicheng Xu, Vincent Chau, Chenchen Wu, Yong Zhang, Yifei Zou
2020 C conf
AAIM
Hua Chen, Vincent Chau, Lin Chen, Guochuan Zhang
2020 J jnl
CoRR
Yicheng Xu, Vincent Chau, Chenchen Wu, Yong Zhang, Vassilis Zissimopoulos, Yifei Zou
2019 Misc conf
COCOON
Vincent Chau, Minming Li, Yinling Wang, Ruilong Zhang, Yingchao Zhao
2019 B conf
WADS
Vincent Chau, Shengzhong Feng, Minming Li, Yinling Wang, Guochuan Zhang, Yong Zhang
2018 B conf
LATIN
Vincent Chau, Shengzhong Feng, Kim Thang Nguyen
2018 J jnl
J. Comb. Optim.
Chenchen Fu, Vincent Chau, Minming Li, Chun Jason Xue
2018 J jnl
J. Sched.
Kai Wang, Vincent Chau, Minming Li
2017 J jnl
Comput. Ind. Eng.
Xin Chen, Vincent Chau, Pengyu Xie, Malgorzata Sterna, Jacek Blazewicz
2017 conf
e-Energy
Vincent Chau, Xiaowen Chu, Hai Liu, Yiu-Wing Leung
2017 B conf
SPAA
Vincent Chau, Minming Li, Samuel McCauley, Kai Wang
2017 Misc conf
FAW
Eric Angel, Evripidis Bampis, Vincent Chau, Vassilis Zissimopoulos
2017 C conf
TAMC
Vincent Chau, Minming Li, Kai Wang
2016 Misc conf
COCOON
Vincent Chau, Ken C. K. Fong, Minming Li, Kai Wang
2016 J jnl
J. Sched.
Eric Angel, Evripidis Bampis, Vincent Chau, Dimitrios Letsios
2016 J jnl
Theor. Comput. Sci.
Eric Angel, Evripidis Bampis, Vincent Chau, Kim Thang Nguyen
2015 B conf
ISAAC
Eric Angel, Evripidis Bampis, Vincent Chau, Alexander V. Kononov
2015 J jnl
CoRR
Eric Angel, Evripidis Bampis, Vincent Chau, Vassilis Zissimopoulos
2015 conf
Euro-Par
Eric Angel, Evripidis Bampis, Vincent Chau, Kim Thang Nguyen
2014 conf
Euro-Par
Evripidis Bampis, Vincent Chau, Dimitrios Letsios, Giorgio Lucarelli, Ioannis Milis, Georgios Zois
2014 J jnl
CoRR
Evripidis Bampis, Vincent Chau, Dimitrios Letsios, Giorgio Lucarelli, Ioannis Milis, Georgios Zois
2014 J jnl
Discret. Appl. Math.
Eric Angel, Evripidis Bampis, Vincent Chau
2014 B conf
ISAAC
Eric Angel, Evripidis Bampis, Vincent Chau, Kim Thang Nguyen
2014 J jnl
CoRR
Eric Angel, Evripidis Bampis, Vincent Chau, Kim Thang Nguyen
2014 A conf
STACS
Eric Angel, Evripidis Bampis, Vincent Chau
2013 B conf
SEA
Evripidis Bampis, Vincent Chau, Dimitrios Letsios, Giorgio Lucarelli, Ioannis Milis
2013 C conf
TAMC
Eric Angel, Evripidis Bampis, Vincent Chau, Dimitrios Letsios
2013 J jnl
CoRR
Eric Angel, Evripidis Bampis, Vincent Chau
2012 B conf
LATIN
Eric Angel, Evripidis Bampis, Vincent Chau
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