Kaixiang Yang

123 papers A* 7A 1B 6C 1Misc 3Journal 96Unranked 9
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Knowl. Data Eng.
Wuxing Chen, Zhiwen Yu, Kaixiang Yang, Ziwei Fan, C. L. Philip Chen
2026 A* conf
AAAI
Xianling Yang, Zhiwen Yu, Song Sun, Kaixiang Yang
2026 A* conf
WWW
Jiahao Liang, Yutian Xiao, Haoran Yang, Zhiwen Yu, Jia-Nan Liu, Kaixiang Yang
2026 J jnl
IEEE Trans. Knowl. Data Eng.
Jiahao Liang, Haoran Yang, Xiangyu Zhao, Zhiwen Yu, Guandong Xu, Wanyu Wang, Kaixiang Yang
2026 J jnl
Inf. Fusion
Jiahao Liang, Wuxing Chen, Zhiwen Yu, Tong Zhang, C. L. Philip Chen, Kaixiang Yang
2026 J jnl
IEEE Trans. Knowl. Data Eng.
Mianfen Lin, Zhiwen Yu, Kaixiang Yang, C. L. Philip Chen
2026 A* conf
AAAI
Kaixiang Yang, Boyang Shen, Xin Li, Yuchen Dai, Yuxuan Luo, Yueran Ma, Wei Fang, Qiang Li, Zhiwei Wang
2026 J jnl
Adv. Eng. Informatics
Yanyun Pu, Chengyuan Zhu, Gongxin Yao, Kaixiang Yang, Qinmin Yang, C. L. Philip Chen
2026 J jnl
IEEE Trans. Affect. Comput.
Kaixiang Yang, Yifan Luo, Zongyan Zhang, C. L. Philip Chen, Tong Zhang
2026 J jnl
J. Control. Decis.
Ruonan Lu, Qinmin Yang, Chao Li, Kaixiang Yang
2026 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Guojie Li, Ziwei Fan, Zhiwen Yu, Kaixiang Yang, C. L. Philip Chen
2026 J jnl
Biomed. Signal Process. Control.
Wenqi Shan, Kaixiang Yang, Chongwei Wu, Xudong Li, Xuan Wang, Qiang Li, Zhiwei Wang
2026 J jnl
IEEE Trans. Cybern.
Zhiwen Yu, Chenchen Yu, Kaixiang Yang, Xu Chen, Yifan Shi, C. L. Philip Chen
2026 J jnl
IEEE Trans. Knowl. Data Eng.
Guojie Li, Zhiwen Yu, Ziwei Fan, Kaixiang Yang, C. L. Philip Chen
2025 J jnl
CoRR
Kaixiang Yang, Jiarong Liu, Yupeng Song, Shuanghua Yang, Yujue Zhou
2025 J jnl
Frontiers Comput. Sci.
Zhiwen Yu, Ziyang Dong, Chenchen Yu, Kaixiang Yang, Ziwei Fan, C. L. Philip Chen
2025 J jnl
CoRR
Yuxiang Xiao, Yang Hu, Bin Li, Tianyang Zhang, Zexi Li, Huazhu Fu, Jens Rittscher, Kaixiang Yang
2025 J jnl
IEEE Trans. Fuzzy Syst.
Wuxing Chen, Kaixiang Yang, Zhiwen Yu, Feiping Nie, C. L. Philip Chen
2025 J jnl
IEEE Trans. Cybern.
Xu Chen, Zhiwen Yu, Ziwei Fan, Kaixiang Yang, C. L. Philip Chen
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Zhijie Zhong, Zhiwen Yu, Ziwei Fan, C. L. Philip Chen, Kaixiang Yang
2025 conf
BIBM
Xin Li, Kaixiang Yang, Qiang Li, Zhiwei Wang
2025 J jnl
CoRR
Xin Li, Kaixiang Yang, Qiang Li, Zhiwei Wang
2025 J jnl
CoRR
Zhijie Zhong, Zhiwen Yu, Yiu-ming Cheung, Kaixiang Yang
2025 J jnl
CoRR
Kaixiang Yang, Xin Li, Qiang Li, Zhiwei Wang
2025 J jnl
Artif. Intell. Rev.
Yanyun Pu, Chengyuan Zhu, Gongxin Yao, Chao Li, Yu Pan, Kaixiang Yang, Qinmin Yang
2025 Misc conf
ICASSP
Kaixiang Yang, Qiang Li, Zhiwei Wang
2025 J jnl
Knowl. Based Syst.
Yuao Zhang, Shuya Ke, Jing Li, Weihua Liu, Jueliang Hu, Kaixiang Yang
2025 J jnl
CoRR
Jiahao Liang, Haoran Yang, Xiangyu Zhao, Zhiwen Yu, Guandong Xu, Wanyu Wang, Kaixiang Yang
2025 J jnl
CAAI Trans. Intell. Technol.
Ziwei Fan, Zhiwen Yu, Kaixiang Yang, Wuxing Chen, Xiaoqing Liu, Guojie Li, Xianling Yang, C. L. Philip Chen
2025 J jnl
IEEE Trans. Image Process.
Xiaoqing Liu, Zhiwen Yu, Kaixiang Yang, Jun Yu, Huanqiang Zeng, C. L. Philip Chen
2025 J jnl
Knowl. Based Syst.
Qi Li, Tingyu Xie, Jian Zhang, Ke Ma, Jiayuan Su, Kaixiang Yang, Hongwei Wang
2025 J jnl
IEEE Trans. Big Data
Zhiwen Yu, Siyong Huang, Kaixiang Yang, Jianming Lv, C. L. Philip Chen
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Yuanxin Lin, Zhiwen Yu, Kaixiang Yang, C. L. Philip Chen
2025 J jnl
IEEE Trans. Multim.
Xiaoqing Liu, Huanqiang Zeng, Yifan Shi, Jianqing Zhu, Kaixiang Yang, Zhiwen Yu
2025 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Guojie Li, Zhiwen Yu, Kaixiang Yang, C. L. Philip Chen, Xuelong Li
2025 J jnl
CoRR
Kaixiang Yang, Boyang Shen, Xin Li, Yuchen Dai, Yuxuan Luo, Yueran Ma, Wei Fang, Qiang Li, Zhiwei Wang
2025 J jnl
IEEE Signal Process. Lett.
Yuankang Fu, Kaixiang Yang, Song Sun, Xinrong Gong, Huanqiang Zeng
2025 J jnl
Appl. Soft Comput.
Song Sun, Zhijie Zhong, Nanlan Yu, Xinrong Gong, Kaixiang Yang
2025 J jnl
IEEE Trans. Big Data
Mianfen Lin, Zhiwen Yu, Kaixiang Yang, C. L. Philip Chen
2025 J jnl
IEEE Trans. Artif. Intell.
Guojie Li, Zhiwen Yu, Kaixiang Yang, Ziwei Fan, C. L. Philip Chen
2025 J jnl
Inf. Fusion
Peifeng Zhang, Jiahui Chen, Chunxiang Xiang, Huiwu Huang, Huaien Jiang, Kaixiang Yang
2025 A* conf
ACM Multimedia
Xin Li, Kaixiang Yang, Qiang Li, Zhiwei Wang
2025 J jnl
CoRR
Xin Li, Kaixiang Yang, Qiang Li, Zhiwei Wang
2025 J jnl
IEEE Trans. Comput. Soc. Syst.
Kaixiang Yang, Zhijie Zhong, Song Sun, Zhiwen Yu, C. L. Philip Chen, Tong Zhang
2025 J jnl
CoRR
Zhijie Zhong, Zhiwen Yu, Kaixiang Yang, C. L. Philip Chen
2025 J jnl
CoRR
Jiahao Liang, Haoran Yang, Xiangyu Zhao, Zhiwen Yu, Mianjie Li, Chuan Shi, Kaixiang Yang
2025 A* conf
ACM Multimedia
Yanyun Pu, Kehan Li, Zeyi Huang, Zhijie Zhong, Kaixiang Yang
2025 J jnl
CoRR
Yanyun Pu, Kehan Li, Zeyi Huang, Zhijie Zhong, Kaixiang Yang
2025 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Yanyun Pu, Chengyuan Zhu, Gongxin Yao, Yu Pan, Kaixiang Yang, Qinmin Yang
2025 J jnl
Knowl. Based Syst.
Wuxing Chen, Zhiwen Yu, Kaixiang Yang, Jun Jiang, Fan Zhang, C. L. Philip Chen
2025 J jnl
CoRR
Muhammad Imran, Jonathan R. Krebs, Vishal Balaji Sivaraman, Teng Zhang, Amarjeet Kumar, Walker R. Ueland, Michael J. Fassler, Jinlong Huang, Xiao Sun, Lisheng Wang, Pengcheng Shi, Maximilian Rokuss, Michael Baumgartner, Yannick Kirchhoff, Klaus H. Maier-Hein, Fabian Isensee, Shuolin Liu, Bing Han, Bong Thanh Nguyen, Dong-jin Shin, Park Ji-Woo, Mathew Choi, Kwang-Hyun Uhm, Sung-Jea Ko, Chanwoong Lee, Jaehee Chun, Jin Sung Kim, Minghui Zhang, Hanxiao Zhang, Xin You, Yun Gu, Zhaohong Pan, Xuan Liu, XiaoKun Liang, Markus Tiefenthaler, Enrique Almar-Munoz, Matthias Schwab, Mikhail Kotyushev, Rostislav Epifanov, Marek Wodzinski, Henning Müller, Abdul Qayyum, Moona Mazher, Steven A. Niederer, Zhiwei Wang, Kaixiang Yang, Jintao Ren, Stine Sofia Korreman, Yuchong Gao, Hongye Zeng, Haoyu Zheng, Rui Zheng, Jinghua Yue, Fugen Zhou, Bo Liu, Alexander Cosman, Muxuan Liang, Chang Zhao, Gilbert R. Upchurch Jr., Jun Ma, Yuyin Zhou, Michol A. Cooper, Wei Shao
2025 J jnl
IEEE Trans. Big Data
Zhijie Zhong, Zhiwen Yu, Yiyuan Yang, Weizheng Wang, Kaixiang Yang, C. L. Philip Chen
2025 J jnl
CoRR
Yuehan Jin, Xiaoqing Liu, Yiyuan Yang, Zhiwen Yu, Tong Zhang, Kaixiang Yang
2025 J jnl
CoRR
Tao Yin, Xiaohong Zhang, Shaochen Fu, Zhibin Zhang, Li Huang, Yiyuan Yang, Kaixiang Yang, Meng Yan
2025 J jnl
Medical Image Anal.
Xiangde Luo, Jia Fu, Yunxin Zhong, Shuolin Liu, Bing Han, Mehdi Astaraki, Simone Bendazzoli, Iuliana Toma-Dasu, Yiwen Ye, Ziyang Chen, Yong Xia, Yanzhou Su, Jin Ye, Junjun He, Zhaohu Xing, Hongqiu Wang, Lei Zhu, Kaixiang Yang, Xin Fang, Zhiwei Wang, Chan Woong Lee, Sang Joon Park, Jaehee Chun, Constantin Ulrich, Klaus H. Maier-Hein, Nchongmaje Ndipenoch, Alina Dana Miron, Yongmin Li, Yimeng Zhang, Yu Chen, Lu Bai, Jinlong Huang, Chengyang An, Lisheng Wang, Kaiwen Huang, Yunqi Gu, Tao Zhou, Mu Zhou, Shichuan Zhang, Wenjun Liao, Guotai Wang, Shaoting Zhang
2025 C conf
ISNN
Guojie Li, Zhiwen Yu, Ziwei Fan, Kaixiang Yang
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Zhijie Zhong, Zhiwen Yu, Xing Xi, Yue Xu, Wenming Cao, Yiyuan Yang, Kaixiang Yang, Jane You
2025 J jnl
Knowl. Based Syst.
Liujian Zhang, Zhiwen Yu, Kaixiang Yang, Bin Wang, C. L. Philip Chen
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Chengyuan Zhu, Yanyun Pu, Zhuoling Lyu, Aonan Wu, Kaixiang Yang, Qinmin Yang
2024 J jnl
CoRR
Pengyu Li, Zhijie Zhong, Tong Zhang, Zhiwen Yu, C. L. Philip Chen, Kaixiang Yang
2024 J jnl
IEEE Trans. Ind. Informatics
Yanyun Pu, Chengyuan Zhu, Kaixiang Yang, Zhuoling Lü, Qinmin Yang
2024 J jnl
IEEE Trans. Artif. Intell.
Chengyuan Zhu, Yanyun Pu, Kaixiang Yang, Qinmin Yang, C. L. Philip Chen
2024 J jnl
Artif. Intell. Rev.
Wuxing Chen, Kaixiang Yang, Zhiwen Yu, Yifan Shi, C. L. Philip Chen
2024 A* conf
AAAI
Chengyuan Zhu, Yiyuan Yang, Kaixiang Yang, Haifeng Zhang, Qinmin Yang, C. L. Philip Chen
2024 conf
AortaSeg@MICCAI
Kaixiang Yang, Yuxuan Luo, Qiang Li, Zhiwei Wang
2024 J jnl
IEEE Trans. Knowl. Data Eng.
Fan Yun, Zhiwen Yu, Kaixiang Yang, C. L. Philip Chen
2024 J jnl
IEEE CAA J. Autom. Sinica
Yuanxin Lin, Zhiwen Yu, Kaixiang Yang, Ziwei Fan, C. L. Philip Chen
2024 J jnl
IEEE Trans. Knowl. Data Eng.
Zhiwen Yu, Zhijie Zhong, Kaixiang Yang, Wenming Cao, C. L. Philip Chen
2024 J jnl
CoRR
Kaixiang Yang, Qiang Li, Zhiwei Wang
2024 J jnl
CoRR
Lincan Li, Wei Shao, Wei Dong, Yijun Tian, Qiming Zhang, Kaixiang Yang, Wenjie Zhang
2024 conf
BIBM
Kaixiang Yang, Wenqi Shan, Xudong Li, Xuan Wang, Xikai Yang, Xi Wang, Pheng-Ann Heng, Qiang Li, Zhiwei Wang
2024 J jnl
CoRR
Kaixiang Yang, Wenqi Shan, Xudong Li, Xuan Wang, Xikai Yang, Xi Wang, Pheng-Ann Heng, Qiang Li, Zhiwei Wang
2024 J jnl
Inf. Sci.
Lincan Li, Jichao Bi, Kaixiang Yang, Fengji Luo
2024 J jnl
IEEE Trans. Knowl. Data Eng.
Guojie Li, Zhiwen Yu, Kaixiang Yang, Mianfen Lin, C. L. Philip Chen
2024 J jnl
IEEE Trans. Ind. Informatics
Mianfen Lin, Kaixiang Yang, Zhiwen Yu, Yifan Shi, C. L. Philip Chen
2024 conf
ACM TUR-C
Zhijie Zhong, Zhiwen Yu, Jiahui Chen, Kaixiang Yang
2024 J jnl
Knowl. Based Syst.
Chengyuan Zhu, Yanyun Pu, Zhuoling Lyu, Kaixiang Yang, Qinmin Yang
2024 J jnl
Inf. Sci.
Dacheng Zheng, Zhiwen Yu, Wuxing Chen, Weiwen Zhang, Qiying Feng, Yifan Shi, Kaixiang Yang
2024 J jnl
CoRR
Zhijie Zhong, Zhiwen Yu, Yiyuan Yang, Weizheng Wang, Kaixiang Yang
2024 A* conf
AAAI
Sihang Liu, Wenming Cao, Ruigang Fu, Kaixiang Yang, Zhiwen Yu
2024 Misc conf
ICASSP
Lincan Li, Kaixiang Yang, Jichao Bi, Fengji Luo
2024 J jnl
Neural Networks
Weiwen Zhang, Ziyu Liu, Yifeng Jiang, Wuxing Chen, Bowen Zhao, Kaixiang Yang
2024 J jnl
CoRR
Zhijie Zhong, Zhiwen Yu, Xing Xi, Yue Xu, Jiahui Chen, Kaixiang Yang
2024 J jnl
IEEE Trans. Artif. Intell.
Kaixiang Yang, Wuxing Chen, Yifan Shi, Zhiwen Yu, C. L. Philip Chen
2024 J jnl
IEEE Trans. Knowl. Data Eng.
Kaixiang Yang, Zhiwen Yu, Wuxing Chen, Zefeng Liang, C. L. Philip Chen
2024 J jnl
IEEE Trans. Instrum. Meas.
Zhuoling Lyu, Chengyuan Zhu, Yanyun Pu, Zuan Chen, Kaixiang Yang, Qinmin Yang
2024 B conf
WCNC
Hang Lu, Kaixiang Yang, Wenqin Zhuang, Mingkai Chen
2024 J jnl
CoRR
Sen Huang, Kaixiang Yang, Sheng Qi, Rui Wang
2024 J jnl
Swarm Evol. Comput.
Sen Huang, Kaixiang Yang, Sheng Qi, Rui Wang
2023 J jnl
IEEE Trans. Instrum. Meas.
Yanyun Pu, Chengyuan Zhu, Kaixiang Yang, Huan Hu, Qinmin Yang
2023 J jnl
CoRR
Chengyuan Zhu, Yiyuan Yang, Kaixiang Yang, Haifeng Zhang, Qinmin Yang, C. L. Philip Chen
2023 J jnl
IEEE Trans. Knowl. Data Eng.
Yifan Shi, Kaixiang Yang, Zhiwen Yu, C. L. Philip Chen, Huanqiang Zeng
2023 J jnl
Multim. Tools Appl.
Kaixiang Yang, Hongya Wang, Ming Du, Zhizheng Wang, Zongyuan Tan, Jie Zhang, Yingyuan Xiao
2023 J jnl
IEEE Trans. Instrum. Meas.
Chengyuan Zhu, Yanyun Pu, Kaixiang Yang, Qinmin Yang, C. L. Philip Chen
2023 J jnl
IEEE Trans. Knowl. Data Eng.
Kaixiang Yang, Yuchen Liu, Zhiwen Yu, C. L. Philip Chen
2023 B conf
IJCNN
Kaixiang Yang, Yifan Shi, Zhiwen Yu, Zhijie Zhong, Jichao Bi, Mengzhi Wang
2023 A conf
ICME
Kaixiang Yang, Junyu Gao, Yangbo Feng, Changsheng Xu
2023 conf
ICANN (10)
Chengyuan Zhu, Yanyun Pu, Zhuoling Lyu, Jiren Qian, Kaixiang Yang
2023 J jnl
CoRR
Lincan Li, Kaixiang Yang, Fengji Luo, Jichao Bi
2023 J jnl
CoRR
Xiangde Luo, Jia Fu, Yunxin Zhong, Shuolin Liu, Bing Han, Mehdi Astaraki, Simone Bendazzoli, Iuliana Toma-Dasu, Yiwen Ye, Ziyang Chen, Yong Xia, Yanzhou Su, Jin Ye, Junjun He, Zhaohu Xing, Hongqiu Wang, Lei Zhu, Kaixiang Yang, Xin Fang, Zhiwei Wang, Chan Woong Lee, Sang Joon Park, Jaehee Chun, Constantin Ulrich, Klaus H. Maier-Hein, Nchongmaje Ndipenoch, Alina Dana Miron, Yongmin Li, Yimeng Zhang, Yu Chen, Lu Bai, Jinlong Huang, Chengyang An, Lisheng Wang, Kaiwen Huang, Yunqi Gu, Tao Zhou, Mu Zhou, Shichuan Zhang, Wenjun Liao, Guotai Wang, Shaoting Zhang
2023 J jnl
IEEE Trans. Ind. Informatics
Kaixiang Yang, Yifan Shi, Zhiwen Yu, Qinmin Yang, Arun Kumar Sangaiah, Huanqiang Zeng
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Shumin Wang, Youming Luo, Mengyao Li, Kaixiang Yang, Qiang Liu, Xiuhong Li
2022 J jnl
Frontiers Neurorobotics
Zefeng Liang, Huan Wang, Kaixiang Yang, Yifan Shi
2022 J jnl
Knowl. Based Syst.
Wuxing Chen, Kaixiang Yang, Zhiwen Yu, Weiwen Zhang
2022 J jnl
Neural Comput. Appl.
Wuxing Chen, Kaixiang Yang, Weiwen Zhang, Yifan Shi, Zhiwen Yu
2022 conf
IC4E
Wuxing Chen, Weiwen Zhang, Kaixiang Yang, Dacheng Zheng, Lianglun Cheng
2022 Misc conf
ICASSP
Chao Dong, Qi Ye, Wenchao Meng, Kaixiang Yang
2022 J jnl
IEEE Trans. Knowl. Data Eng.
Kaixiang Yang, Zhiwen Yu, C. L. Philip Chen, Wenming Cao, Jane You, Hau-San Wong
2022 B conf
SMC
Lincan Li, Jichao Bi, Kaixiang Yang, Fengji Luo, Luxing Yang
2022 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Kaixiang Yang, Zhiwen Yu, C. L. Philip Chen, Wenming Cao, Hau-San Wong, Jane You, Guoqiang Han
2022 J jnl
Remote. Sens.
Kaixiang Yang, Youming Luo, Mengyao Li, Shouyi Zhong, Qiang Liu, Xiuhong Li
2022 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Zhiwen Yu, Fengxu Ye, Kaixiang Yang, Wenming Cao, C. L. Philip Chen, Lianglun Cheng, Jane You, Hau-San Wong
2022 conf
ICANN (3)
Lincan Li, Jichao Bi, Kaixiang Yang, Fengji Luo
2021 conf
DASFAA (Workshops)
Hongya Wang, Zeng Zhao, Kaixiang Yang, Hui Song, Yingyuan Xiao
2021 J jnl
Remote. Sens.
Shumin Wang, Youming Luo, Xia Li, Kaixiang Yang, Qiang Liu, Xiaobo Luo, Xiuhong Li
2021 J jnl
CoRR
Chao Dong, Qi Ye, Wenchao Meng, Kaixiang Yang
2021 conf
PG (Short Papers, Posters, and Work-in-Progress Papers)
Kaixiang Yang, Hongya Wang, Ming Du, Zhizheng Wang, Zongyuan Tan, Yingyuan Xiao
2021 B conf
IJCNN
Zhihao Li, Zhiwen Yu, Kaixiang Yang, Yifan Shi, Yuhong Xu, C. L. Philip Chen
2021 B conf
IJCNN
Yuchen Liu, Kaixiang Yang, Zhiwen Yu, Zhulin Liu, Yifan Shi, C. L. Philip Chen
2021 J jnl
CoRR
Kaixiang Yang, Hongya Wang, Bo Xu, Wei Wang, Yingyuan Xiao, Ming Du, Junfeng Zhou
2020 J jnl
CoRR
Hongya Wang, Zhizheng Wang, Wei Wang, Yingyuan Xiao, Zeng Zhao, Kaixiang Yang
2020 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Kaixiang Yang, Zhiwen Yu, Xin Wen, Wenming Cao, C. L. Philip Chen, Hau-San Wong, Jane You
2019 B conf
ICTAI
Mingyong Li, Hongya Wang, Liangliang Wang, Kaixiang Yang, Yingyuan Xiao
tests/integration/test_pe_extractor.py
← Index tests/integration/test_pe_extractor.py python
"""
Integration tests for the PEExtractor base class.
"""
import pytest
from unittest.mock import Mock, patch, MagicMock

pytestmark = [pytest.mark.integration, pytest.mark.pe]


class TestPEExtractorInitialization:
    """Tests for PEExtractor initialization."""

    def test_pe_extractor_with_valid_pe(self, pe_binary_path, mock_logger):
        """Test PEExtractor initialization with valid PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            assert extractor.pe is not None
            assert extractor.filepath == pe_binary_path

    def test_pe_extractor_with_provided_pe_object(self, pe_binary_path, mock_logger, pe_object):
        """Test PEExtractor initialization with pre-existing PE object."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger, pe=pe_object)

            # Should use the provided PE object, not create a new one
            assert extractor.pe is pe_object

    def test_pe_extractor_with_invalid_file(self, elf_binary_path, mock_logger):
        """Test PEExtractor initialization with non-PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(elf_binary_path, mock_logger)

            # Should return None for pe when file is not a valid PE
            assert extractor.pe is None
            # Logger should have recorded an error
            assert mock_logger.error.called


class TestPEExtractorMethods:
    """Tests for PEExtractor helper methods."""

    def test_check_dotnet_true(self, pe_binary_path, mock_logger):
        """Test _check_dotnet returns True for .NET PE."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            # The test PE file is a .NET binary
            if extractor.pe is not None:
                result = extractor._check_dotnet()
                # d8637bdbcfc9112fcb1f0167b398e771 is a .NET binary
                assert result is True

    def test_check_dotnet_false(self, elf_binary_path, mock_logger):
        """Test _check_dotnet returns False for non-PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(elf_binary_path, mock_logger)

            # Should return False when PE is None
            result = extractor._check_dotnet()
            assert result is False

    def test_is_signed_false(self, pe_binary_path, mock_logger):
        """Test _is_signed method."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                result = extractor._is_signed()
                # Result depends on the actual binary
                assert isinstance(result, bool)

    def test_has_overlay(self, pe_binary_path, mock_logger):
        """Test _has_overlay method."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                result = extractor._has_overlay()
                assert isinstance(result, bool)


class TestGeneratePEFileObject:
    """Tests for _generate_pefile_object method."""

    def test_generate_pefile_object_valid(self, pe_binary_path, mock_logger):
        """Test _generate_pefile_object with valid PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            # The PE object should be created successfully
            assert extractor.pe is not None

    def test_generate_pefile_object_invalid(self, temp_text_file, mock_logger):
        """Test _generate_pefile_object with invalid file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(temp_text_file, mock_logger)

            # Should return None for invalid PE
            assert extractor.pe is None


class TestGenerateDotNetFileObject:
    """Tests for _generate_dotnetfile_object method."""

    def test_generate_dotnetfile_object_valid(self, pe_binary_path, mock_logger):
        """Test _generate_dotnetfile_object with .NET PE file."""
        from redb.extractors.pe_extractors.pe_dotnet import PEDotNetExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEDotNetExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None and extractor._check_dotnet():
                dotnet, error = extractor._generate_dotnetfile_object()
                # Should create dotnet object for .NET PE
                assert dotnet is not None
                assert error is None

    def test_generate_dotnetfile_object_invalid(self, elf_binary_path, mock_logger):
        """Test _generate_dotnetfile_object with non-.NET file."""
        from redb.extractors.pe_extractors.pe_dotnet import PEDotNetExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEDotNetExtractor(elf_binary_path, mock_logger)

            dotnet, error = extractor._generate_dotnetfile_object()
            # Should return error for non-.NET file
            assert dotnet is None
            assert error is not None


class TestPEExtractorTag:
    """Tests for tag method in PE extractors."""

    def test_pe_features_tag(self, pe_binary_path, mock_logger):
        """Test that PEFeaturesExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_FEATURES.value

    def test_pe_import_tag(self, pe_binary_path, mock_logger):
        """Test that PEImportExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_IMPORT.value

    def test_pe_section_tag(self, pe_binary_path, mock_logger):
        """Test that PESectionExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_SECTION.value


class TestPEExtractorClickHouseTable:
    """Tests for get_clickhouse_table method in PE extractors."""

    def test_pe_features_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PEFeaturesExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_features"

    def test_pe_import_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PEImportExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_imports"

    def test_pe_section_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PESectionExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_sections"


class TestPEExtractorPrepareExportData:
    """Tests for prepare_export_data method in PE extractors."""

    def test_pe_features_prepare_export_elasticsearch(self, pe_binary_path, mock_logger):
        """Test prepare_export_data for Elasticsearch."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                # First extract
                extractor.extract()
                result = extractor.prepare_export_data("ElasticsearchExporter")
                # Should return the pe_features dataclass
                assert result is extractor.pe_features

    def test_pe_features_prepare_export_clickhouse(self, pe_binary_path, mock_logger):
        """Test prepare_export_data for ClickHouse."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                # First extract
                extractor.extract()
                result = extractor.prepare_export_data("ClickHouseExporter")

                # Should return tuple of (data, column_names, column_type_names)
                assert isinstance(result, tuple)
                assert len(result) == 3
                data, column_names, column_type_names = result
                assert isinstance(data, list)
                assert isinstance(column_names, list)
                assert isinstance(column_type_names, list)
                # Column names and types should match in length
                assert len(column_names) == len(column_type_names)