Man Lung Yiu

156 papers A* 32A 4B 19Journal 70Unranked 22
YearRankTypeTitle / Venue / Authors
2025 conf
SIGMOD Conference Companion
Yangshen Deng, Zhengxin You, Long Xiang, Qilong Li, Peiqi Yuan, Zhaoyang Hong, Yitao Zheng, Wanting Li, Runzhong Li, Haotian Liu, Kyriakos Mouratidis, Man Lung Yiu, Huan Li, Qiaomu Shen, Rui Mao, Bo Tang
2025 J jnl
CoRR
Yangshen Deng, Zhengxin You, Long Xiang, Qilong Li, Peiqi Yuan, Zhaoyang Hong, Yitao Zheng, Wanting Li, Runzhong Li, Haotian Liu, Kyriakos Mouratidis, Man Lung Yiu, Huan Li, Qiaomu Shen, Rui Mao, Bo Tang
2025 J jnl
CoRR
Jiaping Cao, Ting Sun, Man Lung Yiu, Xiao Yan, Bo Tang
2025 A* conf
ICDE
Wei Tian, Jieming Shi, Man Lung Yiu
2025 J jnl
CoRR
Wei Tian, Jieming Shi, Man Lung Yiu
2025 J jnl
Proc. ACM Manag. Data
Jiaping Cao, Le Xu, Man Lung Yiu, Jianbin Qin, Bo Tang
2025 A* conf
SIGIR
Zheng Bian, Man Lung Yiu, Bo Tang
2025 A conf
CIKM
Yu Li, Zulong Chen, Wenjian Xu, Hong Wen, Yipeng Yu, Man Lung Yiu, Yuyu Yin
2025 J jnl
CoRR
Yu Li, Zulong Chen, Wenjian Xu, Hong Wen, Yipeng Yu, Man Lung Yiu, Yuyu Yin
2025 J jnl
Proc. VLDB Endow.
Zhengxin You, Qiaomu Shen, Man Lung Yiu, Bo Tang
2025 J jnl
Artif. Intell. Medicine
Haohui Lu, Ye Lin, Zhidong Li, Man Lung Yiu, Yu Gao, Shahadat Uddin
2024 A* conf
ICDE
Zheng Bian, Xiao Yan, Jiahao Zhang, Man Lung Yiu, Bo Tang
2023 J jnl
Proc. ACM Manag. Data
Fang Wang, Xiao Yan, Man Lung Yiu, Shuai Li, Zunyao Mao, Bo Tang
2022 J jnl
IEEE Trans. Knowl. Data Eng.
Tsz Nam Chan, Leong Hou U, Reynold Cheng, Man Lung Yiu, Shivansh Mittal
2022 A* conf
ICDE
Jiahao Zhang, Man Lung Yiu, Bo Tang, Qing Li
2022 J jnl
IEEE Trans. Knowl. Data Eng.
Jiahao Zhang, Man Lung Yiu, Bo Tang, Qing Li
2022 conf
SIGMOD Conference
Haotian Liu, Bo Tang, Jiashu Zhang, Yangshen Deng, Xinying Zheng, Qiaomu Shen, Xiao Yan, Dan Zeng, Zunyao Mao, Chaozu Zhang, Zhengxin You, Zhihao Wang, Runzhe Jiang, Fang Wang, Man Lung Yiu, Huan Li, Mingji Han, Qian Li, Zhenghai Luo
2022 conf
SoCC
Haotian Liu, Bo Tang, Jiashu Zhang, Yangshen Deng, Xiao Yan, Xinying Zheng, Qiaomu Shen, Dan Zeng, Zunyao Mao, Chaozu Zhang, Zhengxin You, Zhihao Wang, Runzhe Jiang, Fang Wang, Man Lung Yiu, Huan Li, Mingji Han, Qian Li, Zhenghai Luo
2022 J jnl
GeoInformatica
Bo Tang, Man Lung Yiu, Kyriakos Mouratidis, Jiahao Zhang, Kai Wang
2022 A* conf
ICDE
Zhe Li, Man Lung Yiu, Tsz Nam Chan
2022 conf
SIGMOD Conference
Jiahao Zhang, Bo Tang, Man Lung Yiu, Xiao Yan, Keming Li
2021 A* conf
ICDE
Fang Wang, Man Lung Yiu, Zili Shao
2021 J jnl
IEEE Trans. Serv. Comput.
Yu Li, Wenjian Xu, Man Lung Yiu
2021 B conf
EDBT
Zhe Li, Tsz Nam Chan, Man Lung Yiu, Christian S. Jensen
2021 J jnl
IEEE Trans. Knowl. Data Eng.
Tsz Nam Chan, Man Lung Yiu, Leong Hou U
2020 J jnl
World Wide Web
Jie Shao, Man Lung Yiu, Masashi Toyoda
2020 J jnl
CoRR
Zhe Li, Tsz Nam Chan, Man Lung Yiu, Christian S. Jensen
2020 conf
SIGMOD Conference
Tsz Nam Chan, Reynold Cheng, Man Lung Yiu
2020 A* conf
ICDE
Tsz Nam Chan, Man Lung Yiu, Leong Hou U
2019 B conf
MDM
Zhe Li, Yu Li, Man Lung Yiu
2019 J jnl
Proc. VLDB Endow.
Bo Tang, Kyriakos Mouratidis, Man Lung Yiu, Zhenyu Chen
2019 B conf
EDBT
Jiahao Zhang, Bo Tang, Man Lung Yiu
2019 A* conf
ICDE
Tsz Nam Chan, Man Lung Yiu, Leong Hou U
2019 ed.
APWeb/WAIM (1)
Jie Shao, Man Lung Yiu, Masashi Toyoda, Dongxiang Zhang, Wei Wang, Bin Cui
2019 ed.
APWeb/WAIM (2)
Jie Shao, Man Lung Yiu, Masashi Toyoda, Dongxiang Zhang, Wei Wang, Bin Cui
2018 A* conf
ICDE
Wengen Li, Jiannong Cao, Jihong Guan, Man Lung Yiu, Shuigeng Zhou
2018 conf
SIGSPATIAL/GIS
Zhe Li, Yu Li, Man Lung Yiu
2018 ch.
Encyclopedia of Social Network Analysis and Mining. 2nd Ed.
Takazumi Matsumoto, Edward Hung, Man Lung Yiu
2018 J jnl
Inf. Sci.
Jingjing Luo, Xianfang Sun, Man Lung Yiu, Longcun Jin, Xinyi Peng
2018 J jnl
Inf. Syst.
Hua Lu, Man Lung Yiu, Xike Xie
2017 J jnl
Proc. VLDB Endow.
Ye Li, Leong Hou U, Man Lung Yiu, Ngai Meng Kou
2017 conf
SIGMOD Conference
Bo Tang, Kyriakos Mouratidis, Man Lung Yiu
2017 J jnl
GeoInformatica
Pui Hang Li, Man Lung Yiu, Kyriakos Mouratidis
2017 B conf
EDBT
Bo Tang, Man Lung Yiu, Kyriakos Mouratidis, Kai Wang
2017 J jnl
IEEE Trans. Knowl. Data Eng.
Wengen Li, Jiannong Cao, Jihong Guan, Man Lung Yiu, Shuigeng Zhou
2017 J jnl
IEEE Trans. Knowl. Data Eng.
Tsz Nam Chan, Man Lung Yiu, Kien A. Hua
2017 A* conf
ICDE
Bo Tang, Man Lung Yiu, Kien A. Hua
2017 conf
SIGMOD Conference
Bo Tang, Shi Han, Man Lung Yiu, Rui Ding, Dongmei Zhang
2017 conf
SIGMOD Conference
Hui Li, Tsz Nam Chan, Man Lung Yiu, Nikos Mamoulis
2017 B conf
EDBT
Yuhong Li, Bo Tang, Leong Hou U, Man Lung Yiu, Zhiguo Gong
2017 J jnl
Inf. Syst.
Petrie Wong, Cliz Sun, Eric Lo, Man Lung Yiu, Xiaowei Wu, Zhichao Zhao, T.-H. Hubert Chan, Ben Kao
2017 ch.
Encyclopedia of GIS
Man Lung Yiu, Yufei Tao, Nikos Mamoulis
2017 ch.
Encyclopedia of GIS
Dimitris Papadias, Man Lung Yiu, Nikos Mamoulis, Yufei Tao
2016 A* conf
ICDE
Bailong Liao, Leong Hou U, Man Lung Yiu, Zhiguo Gong
2016 J jnl
VLDB J.
Yuhong Li, Leong Hou U, Man Lung Yiu, Zhiguo Gong
2016 J jnl
IEEE Trans. Knowl. Data Eng.
Xike Xie, Peiquan Jin, Man Lung Yiu, Jiang Du, Mingxuan Yuan, Christian S. Jensen
2016 A* conf
ICDE
Xike Xie, Peiquan Jin, Man Lung Yiu, Jiang Du, Christian S. Jensen, Mingxuan Yuan
2016 J jnl
IEEE Trans. Knowl. Data Eng.
Bo Tang, Man Lung Yiu, Kien A. Hua
2016 conf
ADMS/IMDM@VLDB
Bo Tang, Man Lung Yiu, Yuhong Li, Leong Hou U
2016 conf
WAIM (1)
Wengen Li, Jiannong Cao, Jihong Guan, Man Lung Yiu, Shuigeng Zhou
2015 B conf
SSTD
Tsz Nam Chan, Man Lung Yiu, Kien A. Hua
2015 A* conf
ICDM
Takazumi Matsumoto, Man Lung Yiu
2015 J jnl
IEEE Trans. Knowl. Data Eng.
Bailong Liao, Leong Hou U, Man Lung Yiu, Zhiguo Gong
2015 A* conf
ICDE
Chuanfei Xu, Bo Tang, Man Lung Yiu
2015 J jnl
IEEE Trans. Mob. Comput.
Duncan Yung, Yu Li, Eric Lo, Man Lung Yiu
2015 J jnl
IEEE Trans. Knowl. Data Eng.
Jing Li, Jeppe Rishede Thomsen, Man Lung Yiu, Nikos Mamoulis
2015 J jnl
GeoInformatica
Wenjian Xu, Chi-Yin Chow, Man Lung Yiu, Qing Li, Chung Keung Poon
2015 B conf
SSTD
Yu Li, Man Lung Yiu, Wenjian Xu
2015 J jnl
Distributed Parallel Databases
Takazumi Matsumoto, Edward Hung, Man Lung Yiu
2015 B conf
EDBT
Yu Li, Eric Lo, Man Lung Yiu, Wenjian Xu
2015 A* conf
ICDE
Yuhong Li, Leong Hou U, Man Lung Yiu, Zhiguo Gong
2015 J jnl
IEEE Trans. Knowl. Data Eng.
Yu Li, Man Lung Yiu
2014 J jnl
ACM Trans. Inf. Syst.
Jianguo Wang, Eric Lo, Man Lung Yiu, Jiancong Tong, Gang Wang, Xiaoguang Liu
2014 conf
SIGSPATIAL/GIS
Jeppe Rishede Thomsen, Man Lung Yiu, Christian S. Jensen
2014 conf
DASFAA (1)
Petrie Wong, Duncan Yung, Ming-Hay Luk, Eric Lo, Man Lung Yiu, Kenny Q. Zhu
2014 conf
SIGSPATIAL/GIS
Pui Hang Li, Man Lung Yiu, Kyriakos Mouratidis
2014 J jnl
IEEE Trans. Knowl. Data Eng.
Hoyoung Jeung, Hua Lu, Saket Sathe, Man Lung Yiu
2014 J jnl
Proc. VLDB Endow.
Xin Cao, Gao Cong, Christian S. Jensen, Man Lung Yiu
2014 J jnl
IEEE Trans. Knowl. Data Eng.
Xike Xie, Man Lung Yiu, Reynold Cheng, Hua Lu
2014 J jnl
IEEE Trans. Knowl. Data Eng.
Leong Hou U, Hong Jun Zhao, Man Lung Yiu, Yuhong Li, Zhiguo Gong
2013 conf
HICSS
Junyi Chai, James N. K. Liu, Man Lung Yiu, Hongwei Wang, Anming Li
2013 J jnl
Proc. VLDB Endow.
Yuhong Li, Leong Hou U, Man Lung Yiu, Zhiguo Gong
2013 A* conf
ICDE
Jing Li, Man Lung Yiu, Nikos Mamoulis
2013 J jnl
IEEE Trans. Knowl. Data Eng.
Jianguo Wang, Eric Lo, Man Lung Yiu
2013 J jnl
ACM Trans. Database Syst.
Dingming Wu, Man Lung Yiu, Christian S. Jensen
2013 A* conf
SIGIR
Jianguo Wang, Eric Lo, Man Lung Yiu, Jiancong Tong, Gang Wang, Xiaoguang Liu
2013 J jnl
VLDB J.
Xike Xie, Reynold Cheng, Man Lung Yiu, Liwen Sun, Jinchuan Chen
2012 J jnl
Data Knowl. Eng.
Duncan Yung, Man Lung Yiu, Eric Lo
2012 A conf
CIKM
Duncan Yung, Eric Lo, Man Lung Yiu
2012 conf
SIGMOD Conference
Jeppe Rishede Thomsen, Man Lung Yiu, Christian S. Jensen
2012 B conf
SSDBM
Xike Xie, Reynold Cheng, Man Lung Yiu
2012 J jnl
IEEE Trans. Knowl. Data Eng.
Dingming Wu, Man Lung Yiu, Gao Cong, Christian S. Jensen
2012 J jnl
IEEE Trans. Knowl. Data Eng.
Man Lung Yiu, Eric Lo, Duncan Yung
2012 conf
SIGSPATIAL/GIS
Wenjian Xu, Chi-Yin Chow, Man Lung Yiu, Qing Li, Chung Keung Poon
2012 J jnl
IEEE Trans. Knowl. Data Eng.
Man Lung Yiu, Ira Assent, Christian S. Jensen, Panos Kalnis
2012 J jnl
CoRR
Kyriakos Mouratidis, Man Lung Yiu
2012 J jnl
Proc. VLDB Endow.
Kyriakos Mouratidis, Man Lung Yiu
2012 A conf
ER
Xin Cao, Lisi Chen, Gao Cong, Christian S. Jensen, Qiang Qu, Anders Skovsgaard, Dingming Wu, Man Lung Yiu
2011 A* conf
ICDE
Man Lung Yiu, Eric Lo, Duncan Yung
2011 J jnl
ACM Trans. Database Syst.
Man Lung Yiu, Christian S. Jensen, Jesper Møller, Hua Lu
2011 A* conf
ICDE
Dingming Wu, Man Lung Yiu, Christian S. Jensen, Gao Cong
2011 J jnl
IEEE Trans. Knowl. Data Eng.
Hua Lu, Man Lung Yiu
2011 J jnl
IEEE Trans. Knowl. Data Eng.
Man Lung Yiu, Hua Lu, Nikos Mamoulis, Michail Vaitis
2011 ch.
Computing with Spatial Trajectories
Hoyoung Jeung, Man Lung Yiu, Christian S. Jensen
2010 J jnl
IEEE Trans. Knowl. Data Eng.
Kyriakos Mouratidis, Man Lung Yiu
2010 J jnl
CoRR
Hoyoung Jeung, Man Lung Yiu, Xiaofang Zhou, Christian S. Jensen, Heng Tao Shen
2010 J jnl
Proc. VLDB Endow.
Man Lung Yiu, Leong Hou U, Simonas Saltenis, Kostas Tzoumas
2010 A* conf
ICDE
Man Lung Yiu, Yimin Lin, Kyriakos Mouratidis
2010 J jnl
VLDB J.
Man Lung Yiu, Gabriel Ghinita, Christian S. Jensen, Panos Kalnis
2010 J jnl
ACM Trans. Database Syst.
Leong Hou U, Kyriakos Mouratidis, Man Lung Yiu, Nikos Mamoulis
2010 J jnl
VLDB J.
Hoyoung Jeung, Man Lung Yiu, Xiaofang Zhou, Christian S. Jensen
2010 A* conf
ICDE
Kyriakos Mouratidis, Yimin Lin, Man Lung Yiu
2010 B conf
Mobile Data Management
Laurynas Siksnys, Jeppe Rishede Thomsen, Simonas Saltenis, Man Lung Yiu
2010 A* conf
ICDE
Reynold Cheng, Xike Xie, Man Lung Yiu, Jinchuan Chen, Liwen Sun
2009 B conf
SSTD
Laurynas Siksnys, Jeppe Rishede Thomsen, Simonas Saltenis, Man Lung Yiu, Ove Andersen
2009 J jnl
IEEE Trans. Knowl. Data Eng.
Man Lung Yiu, Nikos Mamoulis, Xiangyuan Dai, Yufei Tao, Michail Vaitis
2009 A conf
CIKM
Ming-Hay Luk, Man Lung Yiu, Eric Lo
2009 B conf
SSDBM
Hua Lu, Man Lung Yiu
2009 conf
Privacy in Location-Based Applications
Christian S. Jensen, Hua Lu, Man Lung Yiu
2009 J jnl
VLDB J.
Man Lung Yiu, Nikos Mamoulis
2009 A* conf
ICDE
Man Lung Yiu, Gabriel Ghinita, Christian S. Jensen, Panos Kalnis
2009 J jnl
GeoInformatica
Man Lung Yiu, Nikos Mamoulis, Spiridon Bakiras
2009 B conf
Mobile Data Management
Zhifeng Lin, Man Lung Yiu, Nikos Mamoulis
2009 J jnl
Proc. VLDB Endow.
Kostas Tzoumas, Man Lung Yiu, Christian S. Jensen
2008 conf
SIGMOD Conference
Leong Hou U, Man Lung Yiu, Kyriakos Mouratidis, Nikos Mamoulis
2008 A* conf
ICDE
Man Lung Yiu, Nikos Mamoulis, Panagiotis Karras
2008 J jnl
IEEE Trans. Knowl. Data Eng.
Leong Hou U, Nikos Mamoulis, Man Lung Yiu
2008 J jnl
Proc. VLDB Endow.
Hoyoung Jeung, Man Lung Yiu, Xiaofang Zhou, Christian S. Jensen, Heng Tao Shen
2008 J jnl
Data Knowl. Eng.
Man Lung Yiu, Nikos Mamoulis, Vagelis Hristidis
2008 ch.
Encyclopedia of GIS
Man Lung Yiu, Yufei Tao, Nikos Mamoulis
2008 ch.
Encyclopedia of GIS
Dimitris Papadias, Man Lung Yiu, Nikos Mamoulis, Yufei Tao
2008 conf
MobiDE
Hua Lu, Christian S. Jensen, Man Lung Yiu
2008 B conf
EDBT
Man Lung Yiu, Panagiotis Karras, Nikos Mamoulis
2008 A* conf
ICDE
Man Lung Yiu, Christian S. Jensen, Xuegang Huang, Hua Lu
2008 J jnl
VLDB J.
Man Lung Yiu, Yufei Tao, Nikos Mamoulis
2007 B conf
SSTD
Leong Hou U, Nikos Mamoulis, Man Lung Yiu
2007 A* conf
VLDB
Man Lung Yiu, Nikos Mamoulis
2007 J jnl
ACM Trans. Database Syst.
Nikos Mamoulis, Man Lung Yiu, Kit Hung Cheng, David W. Cheung
2007 B conf
SSDBM
Man Lung Yiu, Nikos Mamoulis, Spiridon Bakiras
2007 J jnl
IEEE Trans. Knowl. Data Eng.
Man Lung Yiu, Nikos Mamoulis
2007 A* conf
ICDE
Man Lung Yiu, Xiangyuan Dai, Nikos Mamoulis, Michail Vaitis
2006
Man Lung Yiu
2006 A* conf
VLDB
Kyriakos Mouratidis, Man Lung Yiu, Dimitris Papadias, Nikos Mamoulis
2006 A* conf
ICDE
Nikos Mamoulis, Kit Hung Cheng, Man Lung Yiu, David W. Cheung
2006 B conf
EDBT
Man Lung Yiu, Nikos Mamoulis, Yufei Tao
2006 J jnl
IEEE Trans. Knowl. Data Eng.
Yufei Tao, Man Lung Yiu, Nikos Mamoulis
2006 A* conf
ICDE
Man Lung Yiu, Nikos Mamoulis
2006 J jnl
IEEE Trans. Knowl. Data Eng.
Man Lung Yiu, Dimitris Papadias, Nikos Mamoulis, Yufei Tao
2005 J jnl
IEEE Trans. Knowl. Data Eng.
Man Lung Yiu, Nikos Mamoulis, Dimitris Papadias
2005 J jnl
IEEE Trans. Knowl. Data Eng.
Man Lung Yiu, Nikos Mamoulis
2005 B conf
SSTD
Xiangyuan Dai, Man Lung Yiu, Nikos Mamoulis, Yufei Tao, Michail Vaitis
2005 conf
SIGMOD Conference
Yufei Tao, Man Lung Yiu, Dimitris Papadias, Marios Hadjieleftheriou, Nikos Mamoulis
2005 A* conf
ICDE
Man Lung Yiu, Dimitris Papadias, Nikos Mamoulis, Yufei Tao
2004 conf
SIGMOD Conference
Man Lung Yiu, Nikos Mamoulis
2004 B conf
EDBT
Nikos Mamoulis, Man Lung Yiu
2003 A* conf
ICDM
Man Lung Yiu, Nikos Mamoulis
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