Weidong Huang

158 papers A* 1A 2B 12C 33Misc 13Journal 54Unranked 41
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Ali Anaissi, Seid Miad Zandavi, Weidong Huang, Junaid Akram, Basem Suleiman, Ali Braytee, Jie Hua
2026 J jnl
CoRR
Ali Anaissi, Ali Braytee, Weidong Huang, Junaid Akram, Alaa Farhat, Jie Hua
2025 conf
CSAI
Ting Chen, Jiulong Chang, Xiaodan Dong, Weidong Huang
2025 J jnl
CoRR
Ali Anaissi, Deshao Liu, Yuanzhe Jia, Weidong Huang, Widad Alyassine, Junaid Akram
2025 B conf
SMC
Siqi Zhang, Alice Xiaodan Dong, Weidong Huang
2025 B conf
SMC
Zhicong Chen, Alice Xiaodan Dong, Gareth William Peters, Jennifer Chan, Weidong Huang, Chun-Cheng Lin
2025 Misc conf
AusDM
Dezhou Zhang, Xiaodan Dong, Weidong Huang
2025 Misc conf
AusDM
Ali Anaissi, Seid Miad Zandavi, Weidong Huang, Junaid Akram, Basem Suleiman, Ali Braytee, Jie Hua
2025 conf
ICIT
Ali Anaissi, Weidong Huang, Jie Hua, Junaid Akram, Ahmad Hussein, Ali Braytee
2025 J jnl
CoRR
Yuxin Miao, Xinyuan Yang, Hongda Fan, Yichun Li, Yishu Hong, Xiechen Guo, Ali Braytee, Weidong Huang, Ali Anaissi
2025 J jnl
J. Vis.
Nina Errey, Didar Zowghi, Tuck Wah Leong, Yadong Wu, Xiaoru Yuan, Weidong Huang, Christy Jie Liang
2025 conf
WWW (Companion Volume)
Md. Kowsar Hossain Sakib, Md. Rafiqul Islam, Shanjita Akter Prome, Sadia Jahan, David Asirvatham, Neethiahnanthan Ari Ragavan, Cesar Sanín, Weidong Huang
2025 Misc conf
AusDM
Sudarat Sukjaroen, Xiaodan Dong, S. T. Boris Choy, Weidong Huang
2025 conf
WWW (Companion Volume)
Rishik Sood, Ali Anaissi, Weidong Huang, Ali Braytee
2025 Misc conf
AusDM
Xiaodan Dong, Kittituch Wongwatcharapaiboon, Sugi Lee, Jennifer S. K. Chan, Weidong Huang
2025 conf
ICIT
Ali Anaissi, Weidong Huang, Jie Hua, Junaid Akram, Basem Suleiman
2025 B conf
SMC
Thanh-Nhan Le, Ali Anaissi, Weidong Huang, Jie Hua
2025 conf
CSAI
Valeria Roman Restrepo, Xiaodan Dong, Weidong Huang
2025 J jnl
Comput. Graph.
Hai-Ning Liang, Lingyun Yu, Weidong Huang, Ferran Argelaguet, Pedro Lopes, Mayra Donaji Barrera Machuca
2025 Misc conf
AusDM
Ali Anaissi, Ali Braytee, Weidong Huang, Junaid Akram, Alaa Farhat, Jie Hua
2024 conf
I-DO
Xiaodan Dong, Weidong Huang, Jitong Wang
2024 conf
BESC
Md. Rafiqul Islam, Thanh Thao Lam Nguyen, Shanjita Akter Prome, Md. Kowsar Hossain Sakib, Cesar Sanín, Guandong Xu, Weidong Huang
2024 C conf
VINCI
Xiaodan Dong, Weidong Huang, Jitong Wang
2024 C conf
IV
Tony Barnett, Weidong Huang, Carey Mather, Seungwon Kim
2024 conf
I-DO
Ibrahim Daghriri, Christy Jie Liang, Weidong Huang
2024 J jnl
Comput. Graph.
Troels Ammitsbøl Rasmussen, Kaj Grønbæk, Weidong Huang
2023 C conf
CDVE
Xiaojin Liao, Xiaodi Huang, Weidong Huang
2023 J jnl
Int. J. Data Sci. Anal.
Chun Xiao, Seokhee Hong, Weidong Huang
2022 C ed.
IV
Ebad Banissi, Anna Ursyn, Mark W. McK. Bannatyne, João Moura Pires, Nuno Datia, Kawa Nazemi, Boris Kovalerchuk, Razvan Andonie, Minoru Nakayama, Filippo Sciarrone, Weidong Huang, Quang Vinh Nguyen, Mabule Samuel Mabakane, Adrian Rusu, Marco Temperini, Urska Cvek, Marjan Trutschl, Heimo Müller, Harri Siirtola, Wai Lok Woo, Rita Francese, Veronica Rossano, Tania Di Mascio, Fatma Bouali, Gilles Venturini, Sebastian Kernbach, Delfina Malandrino, Rocco Zaccagnino, Jian J. Zhang, Xiaosong Yang, Vladimir Geroimenko
2022 J jnl
IEEE Access
Lihang Wen, Jianlong Zhou, Weidong Huang, Fang Chen
2022 J jnl
Vis. Informatics
Shijun Cai, Seok-Hee Hong, Xiaobo Xia, Tongliang Liu, Weidong Huang
2022 J jnl
J. Multimodal User Interfaces
Weidong Huang, Mathew Wakefield, Troels Ammitsbøl Rasmussen, Seungwon Kim, Mark Billinghurst
2022 J jnl
Health Informatics J.
Jane Li, Weidong Huang
2022 J jnl
J. Vis. Commun. Image Represent.
Troels A. Rasmussen, Tiare M. Feuchtner, Weidong Huang, Kaj Grønbæk
2021 C ed.
IV
Ebad Banissi, Anna Ursyn, Mark W. McK. Bannatyne, João Moura Pires, Nuno Datia, Mao Lin Huang, Weidong Huang, Quang Vinh Nguyen, Kawa Nazemi, Boris Kovalerchuk, Minoru Nakayama, John Counsell, Andrew Agapiou, Farzad Khosrow-shahi, Hing-Wah Chau, Mengbi Li, Richard Laing, Fatma Bouali, Gilles Venturini, Marco Temperini, Muhammad Sarfraz
2021 C conf
Diagrams
Nikita Dev Lomov, Weidong Huang, Jing Luo, Quang Vinh Nguyen
2021 J jnl
CoRR
Jianlong Zhou, Weidong Huang, Fang Chen
2021 C conf
CDVE
Hai-Chau Le, Weidong Huang, Mark Billinghurst, Eng Hwa Yap
2021 J jnl
J. Vis.
Chun-Cheng Lin, Weidong Huang, Wan-Yu Liu, Chang-Yu Chen
2021 J jnl
IEEE Access
Michael Burch, Weidong Huang, Mathew Wakefield, Helen C. Purchase, Daniel Weiskopf, Jie Hua
2020 C ed.
IV
Ebad Banissi, Farzad Khosrow-shahi, Anna Ursyn, Mark W. McK. Bannatyne, João Moura Pires, Nuno Datia, Kawa Nazemi, Boris Kovalerchuk, John Counsell, Andrew Agapiou, Zora Vrcelj, Hing-Wah Chau, Mengbi Li, Gehan Nagy, Richard Laing, Rita Francese, Muhammad Sarfraz, Fatma Bouali, Gilles Venturini, Marjan Trutschl, Urska Cvek, Heimo Müller, Minoru Nakayama, Marco Temperini, Tania Di Mascio, Filippo Sciarrone, Veronica Rossano, Ralf Dörner, Loredana Caruccio, Autilia Vitiello, Weidong Huang, Michele Risi, Ugo Erra, Razvan Andonie, Muhammad Aurangzeb Ahmad, Ana Figueiras, Alfredo Cuzzocrea, Mabule Samuel Mabakane
2020 B conf
PacificVis
Jianlong Zhou, Weidong Huang, Fang Chen
2020 C conf
IV
Seungwon Kim, Mark Billinghurst, Gun A. Lee, Weidong Huang
2020 C conf
CDVE
Feng Liu, Xiaodi Huang, Weidong Huang
2020 C conf
IV
Weidong Huang, Matthew James Goodwin, Xiaodi Huang, Mao Lin Huang, Jing Luo
2020 C conf
IV
Mao Lin Huang, Rui Zhao, Jie Hua, Quang Vinh Nguyen, Weidong Huang, Junhu Wang
2020 B conf
PacificVis
Seok-Hee Hong, Peter Eades, Marnijati Torkel, Weidong Huang, Cristina Cifuentes
2020 C conf
IV
Chun-Cheng Lin, Weidong Huang, Wan-Yu Liu, Chang-Yu Chen
2020 J jnl
Vis. Informatics
Quang Vinh Nguyen, Natalie Miller, David Arness, Weidong Huang, Mao Lin Huang, Simeon Simoff
2020 J jnl
IEEE Access
Seungwon Kim, Allison Jing, Hanhoon Park, Gun A. Lee, Weidong Huang, Mark Billinghurst
2020 J jnl
Health Informatics J.
Sirirat Suwatcharachaitiwong, Chun-Cheng Lin, Weidong Huang, Lun-Ping Hung
2020 J jnl
Symmetry
Feng Liu, Xiaodi Huang, Weidong Huang, Sophia Xiaoxia Duan
2020 J jnl
J. Multimodal User Interfaces
Seungwon Kim, Gun A. Lee, Mark Billinghurst, Weidong Huang
2020 Misc conf
OZCHI
Chun Xiao, Weidong Huang, Mark Billinghurst
2019 J jnl
J. Vis.
Chun-Cheng Lin, Weidong Huang, Wan-Yu Liu, Sheng-Feng Wu
2019 J jnl
Symmetry
Jie Hua, Mao Lin Huang, Weidong Huang, Chenglin Zhao
2019 conf
IV (2)
Abdur Rahim Mohammad Forkan, Geoff Kimm, Ahsan Morshed, Prem Prakash Jayaraman, Abhik Banerjee, Weidong Huang
2019 conf
IV (2)
Irfan Baig Mirza, Weidong Huang, Dimitrios Georgakopoulos, Hengyang Liu
2019 J jnl
J. Comput. Lang.
Xiaodi Huang, Weidong Huang
2019 A* conf
CHI
Seungwon Kim, Gun A. Lee, Weidong Huang, Hayun Kim, Woontack Woo, Mark Billinghurst
2019 J jnl
J. Comput. Lang.
Xiaojin Liao, Xiaodi Huang, Weidong Huang
2019 conf
ISMAR Adjunct
Troels Ammitsbøl Rasmussen, Weidong Huang
2019 conf
SIGGRAPH Asia XR
Troels A. Rasmussen, Weidong Huang
2019 conf
IV (2)
Weidong Huang, Prem Prakash Jayaraman, Ahsan Morshed, Shaun Blackburn, Cameron Redpath, Thomas Guerney, Ahmed Hussnain Shahid, Rachel Mui
2019 conf
IV (2)
Seungwon Kim, Mark Billinghurst, Gun A. Lee, Mitchell Norman, Weidong Huang, Jian He
2019 J jnl
J. Vis. Commun. Image Represent.
Weidong Huang, Seungwon Kim, Mark Billinghurst, Leila Alem
2019 B conf
PacificVis
Ciara Fletcher, Weidong Huang, David Arness, Quang Vinh Nguyen
2019 conf
IV (2)
Dilanka Abeysinghe, Caslon Chua, Weidong Huang
2018 J jnl
J. Multimodal User Interfaces
Weidong Huang, Leila Alem, Franco Tecchia, Henry Been-Lirn Duh
2018 conf
ICIMTH
Jane Li, Weidong Huang
2018 C conf
CDVE
Caslon Chua, Mathew Wakefield, Rachel Mui, Weidong Huang
2018 J jnl
Symmetry
Mayra Donaji Barrera Machuca, Winyu Chinthammit, Weidong Huang, Rainer Wasinger, Henry Been-Lirn Duh
2018 J jnl
J. Vis. Lang. Comput.
Chun-Cheng Lin, Weidong Huang, Wan-Yu Liu, Wen-Lin Chen
2018 J jnl
J. Vis. Lang. Comput.
Ebad Banissi, Weidong Huang
2018 Misc conf
OZCHI
Weidong Huang, Mark Billinghurst, Leila Alem, Seungwon Kim
2018 J jnl
J. Vis. Lang. Comput.
Weidong Huang, Jing Luo, Tomasz Bednarz, Henry B. L. Duh
2018 J jnl
Symmetry
Ethan R. Jones, Winyu Chinthammit, Weidong Huang, Ulrich Engelke, Christopher Lueg
2018 conf
ICIMTH
Weidong Huang, Jane Li, Leila Alem
2018 C conf
CDVE
Mayra Donaji Barrera Machuca, Winyu Chinthammit, Weidong Huang
2018 C conf
CDVE
Xiaojin Liao, Xiaodi Huang, Weidong Huang
2017 conf
BigData Congress
Simon Luo, Victor W. Chu, Jianlong Zhou, Fang Chen, Raymond K. Wong, Weidong Huang
2017 conf
BDIOT
Xiaodi Huang, Muxiong Huang, Weidong Huang
2017 J jnl
Inf. Sci.
Tze-Haw Huang, Mao Lin Huang, Quang Vinh Nguyen, Laiping Zhao, Weidong Huang, Jinjun Chen
2017 J jnl
J. Vis. Lang. Comput.
Yujie Liu, Mao Lin Huang, Weidong Huang, Jie Liang
2017 conf
CSHI
Carey Mather, Tony Barnett, Vlasti Broucek, Annette Saunders, Darren Grattidge, Weidong Huang
2016 C ed.
IV
Ebad Banissi, Mark W. McK. Bannatyne, Fatma Bouali, Remo Burkhard, John Counsell, Urska Cvek, Martin J. Eppler, Georges G. Grinstein, Weidong Huang, Sebastian Kernbach, Chun-Cheng Lin, Feng Lin, Francis T. Marchese, Chi Man Pun, Muhammad Sarfraz, Marjan Trutschl, Anna Ursyn, Gilles Venturini, Theodor G. Wyeld, Jian J. Zhang
2016 B conf
PacificVis
Weidong Huang, Peter Eades, Seok-Hee Hong, Henry Been-Lirn Duh
2016 J jnl
J. Vis. Lang. Comput.
Wenbo Wang, Mao Lin Huang, Quang Vinh Nguyen, Weidong Huang, Kang Zhang, Tze-Haw Huang
2016 C conf
CDVE
Weidong Huang, Min Zhu, Mao Lin Huang, Henry Been-Lirn Duh
2016 J jnl
J. Vis. Lang. Comput.
Chun-Cheng Lin, Weidong Huang, Wan-Yu Liu, Shierly Tanizar, Shun-Yu Jhong
2016 J jnl
Inf. Sci.
Weidong Huang, Mao Lin Huang, Chun-Cheng Lin
2016 C conf
IV
Yujie Liu, Mao Lin Huang, Jie Liang, Weidong Huang
2016 conf
SIGGRAPH ASIA Mobile Graphics and Interactive Applications
Yuan Wang, Weidong Huang, Henry Been-Lirn Duh
2016 C conf
CDVE
Likun He, Binbin Tang, Min Zhu, Binbin Lu, Weidong Huang
2016 Misc ed.
OzCHI
Henry B. L. Duh, Christopher Lueg, Mark Billinghurst, Weidong Huang
2016 J jnl
CoRR
Weidong Huang
2016 conf
SSCI
Xiaodi Huang, Weidong Huang, Wei Lai
2016 C conf
CDVE
Shibli Saleheen, Wei Lai, Xiaodi Huang, Weidong Huang, Mao Lin Huang
2015 C ed.
IV
Ebad Banissi, Mark W. McK. Bannatyne, Fatma Bouali, Remo Burkhard, John Counsell, Urska Cvek, Martin J. Eppler, Georges G. Grinstein, Weidong Huang, Sebastian Kernbach, Chun-Cheng Lin, Feng Lin, Francis T. Marchese, Chi Man Pun, Muhammad Sarfraz, Marjan Trutschl, Anna Ursyn, Gilles Venturini, Theodor G. Wyeld, Jian J. Zhang
2015 J jnl
Aust. J. Intell. Inf. Process. Syst.
Weidong Huang, Craig A. James, Kazys Stepanas, Eleonora Widzyk-Capehart, Leila Alem, Chris Gunn, Matt Adcock, Kerstin Haustein
2015 J jnl
Int. J. Softw. Informatics
Quang Vinh Nguyen, Yingcai Wu, Weidong Huang, Tomasz Bednarz
2015 C conf
CDVE
Xiaodi Huang, Xiaoling Dai, Edwin Singh, Weidong Huang
2015 J jnl
J. Vis. Lang. Comput.
Xiaodi Huang, Weidong Huang
2015 J jnl
Int. J. Softw. Eng. Knowl. Eng.
Yingcai Wu, Quang Vinh Nguyen, Weidong Huang, Tomasz Bednarz
2015 C conf
VINCI
Chun-Cheng Lin, Weidong Huang, Wan-Yu Liu, Shierly Tanizar
2015 C conf
CDVE
Weidong Huang, Bridgette Kaminski, Jing Luo, Xiaodi Huang, Jingwei Li, Aaron Ross, Jason Wright, Dohyung An
2015 C conf
HIS
Jane Li, Leila Alem, Weidong Huang
2015 conf
TALE
Weidong Huang, Jing Luo, Mao Lin Huang
2014 conf
BigComp
Seok-Hee Hong, Weidong Huang, Kazuo Misue, Wu Quan
2014 conf
CSE
Weidong Huang
2014 ch.
Handbook of Human Centric Visualization
Weidong Huang
2014 book
Weidong Huang
2014 J jnl
J. Vis. Lang. Comput.
Weidong Huang, Peter Eades, Seok-Hee Hong
2014 C conf
CDVE
Weidong Huang, Xiaodi Huang, Wei Lai
2014 C ed.
VINCI
Tomasz Bednarz, Weidong Huang, Quang Vinh Nguyen, Yingcai Wu
2014 C conf
VINCI
Weidong Huang, Tomasz Bednarz
2014 conf
CRIWG
Angus Donovan, Leila Alem, Weidong Huang, Ren Ping Liu, Mark Hedley
2013 J jnl
CoRR
Weidong Huang
2013 J jnl
CoRR
Craig A. James, Weidong Huang, Kazys Stepanas, Eleonora Widzyk-Capehart, Leila Alem, Chris Gunn, Matt Adcock, Kerstin Haustein
2013 J jnl
Pers. Ubiquitous Comput.
Weidong Huang
2013 J jnl
J. Univers. Comput. Sci.
Weidong Huang, Leila Alem
2013 conf
INTERACT (1)
Weidong Huang, Leila Alem, Franco Tecchia
2013 conf
SIGGRAPH ASIA Emerging Technologies
Weidong Huang, Leila Alem, Franco Tecchia
2013 conf
CSCW Companion
Weidong Huang, Leila Alem
2013 J jnl
J. Vis. Lang. Comput.
Weidong Huang, Peter Eades, Seok-Hee Hong, Chun-Cheng Lin
2013 conf
SIGGRAPH ASIA Mobile Graphics and Interactive Applications
Kostia Robert, Dingyun Zhu, Weidong Huang, Leila Alem, Tom Gedeon
2013 Misc conf
OZCHI
Weidong Huang, Leila Alem, Surya Nepal, Danan Thilakanathan
2013 J jnl
Sci. China Inf. Sci.
Weidong Huang, Raymes Khoury, Tim Dawborn, Bohan Huang, Mao Lin Huang, Xiaodi Huang
2012 conf
VRCAI
Franco Tecchia, Leila Alem, Weidong Huang
2012 Misc conf
OZCHI
Weidong Huang, Craig A. James, Leila Alem, Eleonora Widzyk-Capehart, Kerstin Haustein
2012 B conf
SMC
Weidong Huang, Leila Alem
2012 C conf
VINCI
Weidong Huang, Chun-Cheng Lin, Mao Lin Huang
2012 Misc conf
SAC
Mao Lin Huang, Weidong Huang, Chun-Cheng Lin
2012 C conf
IV
Jie Hua, Mao Lin Huang, Weidong Huang, Junhu Wang, Quang Vinh Nguyen
2012 Misc ed.
OZCHI
Vivienne Farrell, Graham Farrell, Caslon Chua, Weidong Huang, Rajesh Vasa, Clinton Woodward
2012 conf
CGIV
Weidong Huang
2011 B conf
VL/HCC
Weidong Huang, Mao Lin Huang, Chun-Cheng Lin
2011 conf
INTERACT (4)
Leila Alem, Weidong Huang
2011 J jnl
CoRR
Weidong Huang, Leila Alem, Jalal Albasri
2011 conf
SUComS
Shun-Yu Jhong, Chun-Cheng Lin, Wan-Yu Liu, Weidong Huang
2011 conf
BCS HCI
Weidong Huang, Leila Alem
2011 Misc conf
OZCHI
Raymes Khoury, Tim Dawborn, Weidong Huang
2010 J jnl
CoRR
Peter Eades, Weidong Huang, Seok-Hee Hong
2010 C conf
VINCI
Weidong Huang, Mao Lin Huang
2010 B conf
VL/HCC
Weidong Huang, Peter Eades, Seok-Hee Hong, Chun-Cheng Lin
2010 A conf
GD
Quan Hoang Nguyen, Peter Eades, Seok-Hee Hong, Weidong Huang
2009 B conf
PacificVis
Weidong Huang, Peter Eades, Seok-Hee Hong
2009 J jnl
Inf. Vis.
Weidong Huang, Peter Eades, Seok-Hee Hong
2008 J jnl
CoRR
Weidong Huang
2008 conf
BELIV
Weidong Huang, Peter Eades, Seok-Hee Hong
2008 B conf
PacificVis
Weidong Huang, Seok-Hee Hong, Peter Eades
2007 J jnl
J. Graph Algorithms Appl.
Weidong Huang, Seok-Hee Hong, Peter Eades
2007 conf
APVIS
Weidong Huang
2006 conf
APVIS
Weidong Huang, Seok-Hee Hong, Peter Eades
2006 conf
APVIS
Weidong Huang, Seok-Hee Hong, Peter Eades
2005 conf
APVIS
Weidong Huang, Peter Eades
2005 A conf
GD
Weidong Huang, Seok-Hee Hong, Peter Eades
2005 C conf
IV
Weidong Huang, Colin Murray, Xiaobin Shen, Le Song, Ying Xin Wu, Lanbo Zheng
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