Weili Guan

144 papers A* 36B 1C 1Journal 101Unranked 3
YearRankTypeTitle / Venue / Authors
2026 A* conf
AAAI
Shenghao Chen, Yibo Zhao, Tianyi Wang, Chunjie Ma, Weili Guan, Ming Li, Zan Gao
2026 J jnl
CoRR
Ji Shi, Peiming Guo, Meishan Zhang, Miao Zhang, Xuebo Liu, Min Zhang, Weili Guan
2026 J jnl
CoRR
Weisheng Dai, Kai Lan, Jianyi Zhou, Bo Zhao, Xiu Su, Junwen Tong, Weili Guan, Shuo Yang
2026 A* conf
AAAI
Changjian Wang, Weihong Deng, Weili Guan, Quan Lu, Ning Jiang
2026 J jnl
CoRR
Zhiming Liu, Yujie Wei, Lei Feng, Xiu Su, Xiaobo Xia, Weili Guan, Zeke Xie, Shuo Yang
2026 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Wentao Tan, Fengling Li, Lei Zhu, Weili Guan, Jingjing Li, Zhiyong Cheng, Heng Tao Shen
2026 J jnl
CoRR
Mingchen Song, Xiang Deng, Jie Wei, Dongmei Jiang, Liqiang Nie, Weili Guan
2026 J jnl
Neural Networks
Chao Zeng, Jiaqi Zhao, Miao Zhang, Li Wang, Weili Guan, Liqiang Nie
2026 J jnl
CoRR
Rui Shao, Ruize Gao, Bin Xie, Yixing Li, Kaiwen Zhou, Shuai Wang, Weili Guan, Gongwei Chen
2026 J jnl
CoRR
Shaokun Wang, Yifan Yu, Yuhang He, Weili Guan, Yihong Gong
2026 J jnl
CoRR
Zesheng Yang, Xi Jiang, Bingzhang Hu, Weili Guan, Runmin Cong, Guo-Jun Qi, Feng Zheng
2026 J jnl
CoRR
Yibo Lyu, Gongwei Chen, Rui Shao, Weili Guan, Liqiang Nie
2026 J jnl
CoRR
Shaokun Wang, Weili Guan, Jizhou Han, Jianlong Wu, Yupeng Hu, Liqiang Nie
2026 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Kejie Wang, Xuemeng Song, Meng Liu, Jin Yuan, Weili Guan
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Zan Gao, Hongwei Wei, Weili Guan, Jie Nie, Meng Wang, Shengyong Chen
2025 J jnl
CoRR
Yaning Zhang, Jiahe Zhang, Chunjie Ma, Weili Guan, Tian Gan, Zan Gao
2025 J jnl
Trans. Mach. Learn. Res.
Weiyang Zhang, Xinyang Chen, Yu Sun, Weili Guan, Liqiang Nie
2025 J jnl
CoRR
Jiaqi Zhao, Miao Zhang, Weili Guan, Liqiang Nie
2025 A* conf
AAAI
Yudong Han, Haocong Wang, Yupeng Hu, Yongshun Gong, Xuemeng Song, Weili Guan
2025 J jnl
CoRR
Changjian Wang, Weihong Deng, Weili Guan, Quan Lu, Ning Jiang
2025 A* conf
CVPR
Yanda Chen, Gongwei Chen, Miao Zhang, Weili Guan, Liqiang Nie
2025 J jnl
CoRR
Yanda Chen, Gongwei Chen, Miao Zhang, Weili Guan, Liqiang Nie
2025 A* conf
ACM Multimedia
Ming Li, Yupeng Hu, Yinwei Wei, Hao Liu, Haocong Wang, Weili Guan
2025 J jnl
CoRR
Xiaolin Chen, Xuemeng Song, Haokun Wen, Weili Guan, Xiangyu Zhao, Liqiang Nie
2025 A* conf
AAAI
Zixu Li, Zhiwei Chen, Haokun Wen, Zhiheng Fu, Yupeng Hu, Weili Guan
2025 J jnl
CoRR
Runling Long, Yunlong Wang, Jia Wan, Xiang Deng, Xinting Zhu, Weili Guan, Antoni B. Chan, Liqiang Nie
2025 J jnl
CoRR
Renshan Zhang, Rui Shao, Gongwei Chen, Kaiwen Zhou, Weili Guan, Liqiang Nie
2025 J jnl
CoRR
Mingchen Song, Xiang Deng, Guoqiang Zhong, Qi Lv, Jia Wan, Yinchuan Li, Jianye Hao, Weili Guan
2025 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Yibo Zhao, Zan Gao, Chunjie Ma, Weili Guan, Riwei Wang, Shengyong Chen
2025 J jnl
CoRR
Yingjie Zhu, Xuefeng Bai, Kehai Chen, Yang Xiang, Weili Guan, Jun Yu, Min Zhang
2025 J jnl
CoRR
Xiangyu Mu, Dongliang Zhou, Jie Hou, Haijun Zhang, Weili Guan
2025 J jnl
CoRR
Haoyu Zhang, Yisen Feng, Qiaohui Chu, Meng Liu, Weili Guan, Yaowei Wang, Liqiang Nie
2025 A* conf
ACM Multimedia
Zhiwei Chen, Yupeng Hu, Zixu Li, Zhiheng Fu, Haokun Wen, Weili Guan
2025 J jnl
CoRR
Zhiwei Chen, Yupeng Hu, Zixu Li, Zhiheng Fu, Haokun Wen, Weili Guan
2025 A* conf
ICML
Yuchen Wang, Xuefeng Bai, Xiucheng Li, Weili Guan, Liqiang Nie, Xinyang Chen
2025 J jnl
CoRR
Yuchen Wang, Xuefeng Bai, Xiucheng Li, Weili Guan, Liqiang Nie, Xinyang Chen
2025 B conf
ICMR
Mingzhu Xu, Jing Wang, Mingcai Wang, Yiping Li, Yupeng Hu, Xuemeng Song, Weili Guan
2025 book
Meng Liu, Yupeng Hu, Weili Guan, Liqiang Nie
2025 A* conf
ACM Multimedia
Yujia Zhu, Hao Yang, Yibo Zhao, Chunjie Ma, Weili Guan, Zan Gao
2025 J jnl
Trans. Mach. Learn. Res.
Jiacheng You, Xinyang Chen, Yu Sun, Weili Guan, Liqiang Nie
2025 J jnl
CoRR
Xinrui Li, Jianlong Wu, Xinchuan Huang, Chong Chen, Weili Guan, Xian-Sheng Hua, Liqiang Nie
2025 J jnl
IEEE Trans. Image Process.
Shengxun Wei, Zan Gao, Chunjie Ma, Yibo Zhao, Weili Guan, Shengyong Chen
2025 J jnl
CoRR
Yisen Feng, Haoyu Zhang, Qiaohui Chu, Meng Liu, Weili Guan, Yaowei Wang, Liqiang Nie
2025 A* conf
CVPR
Yisen Feng, Haoyu Zhang, Meng Liu, Weili Guan, Liqiang Nie
2025 J jnl
CoRR
Yisen Feng, Haoyu Zhang, Meng Liu, Weili Guan, Liqiang Nie
2025 J jnl
CoRR
Zaijing Li, Yuquan Xie, Rui Shao, Gongwei Chen, Weili Guan, Dongmei Jiang, Liqiang Nie
2025 conf
ACL (1)
Jiaqi Zhao, Miao Zhang, Ming Wang, Yuzhang Shang, Kaihao Zhang, Weili Guan, Yaowei Wang, Min Zhang
2025 J jnl
CoRR
Jiaqi Zhao, Miao Zhang, Ming Wang, Yuzhang Shang, Kaihao Zhang, Weili Guan, Yaowei Wang, Min Zhang
2025 A* conf
ACM Multimedia
Yibo Lyu, Rui Shao, Gongwei Chen, Yijie Zhu, Weili Guan, Liqiang Nie
2025 J jnl
CoRR
Yibo Lyu, Rui Shao, Gongwei Chen, Yijie Zhu, Weili Guan, Liqiang Nie
2025 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Xue Dong, Xuemeng Song, Tongliang Liu, Weili Guan
2025 J jnl
CoRR
Haoyu Zhang, Meng Liu, Zaijing Li, Haokun Wen, Weili Guan, Yaowei Wang, Liqiang Nie
2025 J jnl
CoRR
Haomiao Qiu, Miao Zhang, Ziyue Qiao, Weili Guan, Min Zhang, Liqiang Nie
2025 J jnl
CoRR
Qiaohui Chu, Haoyu Zhang, Yisen Feng, Meng Liu, Weili Guan, Yaowei Wang, Liqiang Nie
2025 A* conf
CVPR
Wenliang Zhong, Haoyu Tang, Qinghai Zheng, Mingzhu Xu, Yupeng Hu, Weili Guan
2025 A* conf
ACM Multimedia
Jianqiang Xiao, Yuexuan Sun, Yixin Shao, Boxi Gan, Rongqiang Liu, Yanjin Wu, Weili Guan, Xiang Deng
2025 J jnl
CoRR
Jianqiang Xiao, Yuexuan Sun, Yixin Shao, Boxi Gan, Rongqiang Liu, Yanjin Wu, Weili Guan, Xiang Deng
2025 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Tiantian Geng, Teng Wang, Jinming Duan, Yanfu Zhang, Weili Guan, Feng Zheng, Ling Shao
2024 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Yibo Zhao, Hua Zhang, Zan Gao, Weili Guan, Meng Wang, Shengyong Chen
2024 A* conf
NeurIPS
Mingyang Liu, Xinyang Chen, Yang Shu, Xiucheng Li, Weili Guan, Liqiang Nie
2024 J jnl
ACM Trans. Multim. Comput. Commun. Appl.
Xiushan Nie, Yang Shi, Ziyu Meng, Jin Huang, Weili Guan, Yilong Yin
2024 J jnl
CoRR
Yudong Han, Haocong Wang, Yupeng Hu, Yongshun Gong, Xuemeng Song, Weili Guan
2024 J jnl
ACM Trans. Inf. Syst.
Lei Guo, Hao Liu, Lei Zhu, Weili Guan, Zhiyong Cheng
2024 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Zan Gao, Shengxun Wei, Weili Guan, Lei Zhu, Meng Wang, Shengyong Chen
2024 J jnl
CoRR
Han Liu, Yinwei Wei, Xuemeng Song, Weili Guan, Yuan-Fang Li, Liqiang Nie
2024 A* conf
NeurIPS
Leyang Shen, Gongwei Chen, Rui Shao, Weili Guan, Liqiang Nie
2024 J jnl
CoRR
Leyang Shen, Gongwei Chen, Rui Shao, Weili Guan, Liqiang Nie
2024 J jnl
IEEE Trans. Knowl. Data Eng.
Lei Zhu, Chaoqun Zheng, Weili Guan, Jingjing Li, Yang Yang, Heng Tao Shen
2024 J jnl
CoRR
Shengxun Wei, Zan Gao, Yibo Zhao, Weili Guan
2024 A* conf
ACM Multimedia
Guojin Zhong, Yihu Guo, Jin Yuan, Qianjun Zhang, Weili Guan, Long Chen
2024 J jnl
CoRR
Xue Dong, Xuemeng Song, Tongliang Liu, Weili Guan
2024 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Haokun Wen, Xuemeng Song, Jianhua Yin, Jianlong Wu, Weili Guan, Liqiang Nie
2024 J jnl
CoRR
Renshan Zhang, Yibo Lyu, Rui Shao, Gongwei Chen, Weili Guan, Liqiang Nie
2024 J jnl
CoRR
Tiantian Geng, Teng Wang, Yanfu Zhang, Jinming Duan, Weili Guan, Feng Zheng
2024 J jnl
CoRR
Kejie Wang, Xuemeng Song, Meng Liu, Weili Guan, Liqiang Nie
2023 A* conf
ACM Multimedia
Zan Gao, Xinglei Cui, Yibo Zhao, Tao Zhuo, Weili Guan, Meng Wang
2023 J jnl
IEEE Trans. Multim.
Peiguang Jing, Kai Cui, Weili Guan, Liqiang Nie, Yuting Su
2023 A* conf
ACM Multimedia
Guojin Zhong, Jin Yuan, Pan Wang, Kailun Yang, Weili Guan, Zhiyong Li
2023 J jnl
CoRR
Guojin Zhong, Jin Yuan, Pan Wang, Kailun Yang, Weili Guan, Zhiyong Li
2023 J jnl
IEEE Trans. Knowl. Data Eng.
Tao Yao, Yiru Li, Weili Guan, Gang Wang, Ying Li, Lianshan Yan, Qi Tian
2023 J jnl
IEEE Trans. Knowl. Data Eng.
Ansong Li, Zhiyong Cheng, Fan Liu, Zan Gao, Weili Guan, Yuxin Peng
2023 J jnl
IEEE Trans. Knowl. Data Eng.
Zhongying Zhao, Zhan Yang, Chao Li, Qingtian Zeng, Weili Guan, MengChu Zhou
2023 J jnl
J. Intell. Fuzzy Syst.
Boting Liu, Weili Guan, Changjin Yang, Zhijie Fang
2023 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Weili Guan, Xuemeng Song, Kejie Wang, Haokun Wen, Hongda Ni, Yaowei Wang, Xiaojun Chang
2023 J jnl
IEEE Trans. Knowl. Data Eng.
Lei Zhu, Yang Xu, Jingjing Li, Weili Guan, Zhiyong Cheng
2023 J jnl
CoRR
Zan Gao, Shenxun Wei, Weili Guan, Lei Zhu, Meng Wang, Shenyong Chen
2023 A* conf
ICCV
Baoshuo Kan, Teng Wang, Wenpeng Lu, Xiantong Zhen, Weili Guan, Feng Zheng
2023 J jnl
CoRR
Baoshuo Kan, Teng Wang, Wenpeng Lu, Xiantong Zhen, Weili Guan, Feng Zheng
2023 J jnl
CoRR
Haokun Wen, Xuemeng Song, Jianhua Yin, Jianlong Wu, Weili Guan, Liqiang Nie
2023 A* conf
CVPR
Zhiliang Wu, Hanyu Xuan, Changchang Sun, Weili Guan, Kang Zhang, Yan Yan
2023 A* conf
ICCV
Dong Lu, Zhiqiang Wang, Teng Wang, Weili Guan, Hongchang Gao, Feng Zheng
2023 J jnl
CoRR
Dong Lu, Zhiqiang Wang, Teng Wang, Weili Guan, Hongchang Gao, Feng Zheng
2023 J jnl
IEEE Trans. Knowl. Data Eng.
Zan Gao, Chao Sun, Zhiyong Cheng, Weili Guan, Anan Liu, Meng Wang
2023 J jnl
Pattern Recognit.
Chaoran Cui, Xiaojie Li, Chunyun Zhang, Weili Guan, Meng Wang
2023 A* conf
ACM Multimedia
Meng Liu, Yongqiang Li, Shuyan Zhai, Weili Guan, Liqiang Nie
2023 J jnl
Int. J. Comput. Intell. Syst.
Boting Liu, Weili Guan, Changjin Yang, Zhijie Fang, Zhiheng Lu
2023 J jnl
CoRR
Haoyu Zhang, Meng Liu, Yaowei Wang, Da Cao, Weili Guan, Liqiang Nie
2023 J jnl
IEEE Trans. Knowl. Data Eng.
Lei Zhu, Xize Wu, Jingjing Li, Zheng Zhang, Weili Guan, Heng Tao Shen
2022 A* conf
ACM Multimedia
Meng Liu, Shuyan Zhai, Yongqiang Li, Weili Guan, Liqiang Nie
2022 C conf
VCIP
Fenglei Zhang, Da Li, Shenghua Li, Weili Guan, Meng Liu
2022 J jnl
CoRR
Zan Gao, Hongwei Wei, Weili Guan, Jie Nie, Meng Wang, Shenyong Chen
2022 J jnl
IEEE Trans. Image Process.
Yibo Zhao, Hua Zhang, Zan Gao, Weili Guan, Jie Nie, Anan Liu, Meng Wang, Shengyong Chen
2022 A* conf
ACM Multimedia
Weili Guan, Xuemeng Song, Haoyu Zhang, Meng Liu, Chung-Hsing Yeh, Xiaojun Chang
2022 A* conf
SIGIR
Wentao Tan, Lei Zhu, Weili Guan, Jingjing Li, Zhiyong Cheng
2022 conf
MCFR@MM
Liqiang Jing, Minghui Tian, Xiaolin Chen, Teng Sun, Weili Guan, Xuemeng Song
2022 J jnl
IEEE Trans. Cybern.
Maofu Liu, Huijun Hu, Lingjun Li, Yan Yu, Weili Guan
2022 J jnl
CoRR
Ansong Li, Zhiyong Cheng, Fan Liu, Zan Gao, Weili Guan, Yuxin Peng
2022 A* conf
ACM Multimedia
Zan Gao, Shenghao Chen, Yangyang Guo, Weili Guan, Jie Nie, Anan Liu
2022 A* conf
SIGIR
Xiaocong Chen, Lina Yao, Julian J. McAuley, Weili Guan, Xiaojun Chang, Xianzhi Wang
2022 A* conf
ACM Multimedia
Xuemeng Song, Jingjing Chen, Federico Becattini, Weili Guan, Yibing Zhan, Tat-Seng Chua
2022 ed.
MCFR@MM
Xuemeng Song, Jingjing Chen, Federico Becattini, Weili Guan, Yibing Zhan, Tat-Seng Chua
2022 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Zan Gao, Yan Zhang, Hua Zhang, Weili Guan, Dong Feng, Shengyong Chen
2022 A* conf
ACM Multimedia
Zan Gao, Hongwei Wei, Weili Guan, Weizhi Nie, Meng Liu, Meng Wang
2022 J jnl
IEEE Trans. Image Process.
Weili Guan, Haokun Wen, Xuemeng Song, Chun Wang, Chung-Hsing Yeh, Xiaojun Chang, Liqiang Nie
2022 A* conf
SIGIR
Weili Guan, Fangkai Jiao, Xuemeng Song, Haokun Wen, Chung-Hsing Yeh, Xiaojun Chang
2022 A* conf
ACM Multimedia
Hui Cui, Lei Zhu, Jingjing Li, Zheng Zhang, Weili Guan
2022 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Caixia Yan, Xiaojun Chang, Zhihui Li, Weili Guan, Zongyuan Ge, Lei Zhu, Qinghua Zheng
2021 A* conf
ACM Multimedia
Zan Gao, Yuxiang Shao, Weili Guan, Meng Liu, Zhiyong Cheng, Shengyong Chen
2021 J jnl
CoRR
Zan Gao, Yuxiang Shao, Weili Guan, Meng Liu, Zhiyong Cheng, Shengyong Chen
2021 J jnl
IEEE Trans. Image Process.
Zan Gao, Leming Guo, Weili Guan, An-An Liu, Tongwei Ren, Shengyong Chen
2021 A* conf
ACM Multimedia
Tianyu Su, Xuemeng Song, Na Zheng, Weili Guan, Yan Li, Liqiang Nie
2021 J jnl
IEEE Trans. Cybern.
Weili Guan, Xuemeng Song, Tian Gan, Junyu Lin, Xiaojun Chang, Liqiang Nie
2021 J jnl
ACM Trans. Multim. Comput. Commun. Appl.
Sichao Fu, Weifeng Liu, Weili Guan, Yicong Zhou, Dapeng Tao, Changsheng Xu
2021 J jnl
IET Image Process.
Changtong Zan, Baodi Liu, Weili Guan, Kai Zhang, Weifeng Liu
2021 J jnl
CoRR
Zan Gao, Hongwei Wei, Weili Guan, Weizhi Nie, Meng Liu, Meng Wang
2021 A* conf
ACM Multimedia
Weili Guan, Haokun Wen, Xuemeng Song, Chung-Hsing Yeh, Xiaojun Chang, Liqiang Nie
2021 J jnl
Pattern Recognit.
Xin Xu, Lei Liu, Xiaolong Zhang, Weili Guan, Ruimin Hu
2021 J jnl
CoRR
Zan Gao, Chao Sun, Zhiyong Cheng, Weili Guan, Anan Liu, Meng Wang
2021 J jnl
Pattern Recognit.
Weifeng Liu, Jinfeng Li, Bao-Di Liu, Weili Guan, Yicong Zhou, Changsheng Xu
2021 J jnl
ACM Trans. Multim. Comput. Commun. Appl.
Weili Guan, Zhaozheng Chen, Fuli Feng, Weifeng Liu, Liqiang Nie
2020 J jnl
Pattern Recognit.
Jin Yuan, Heng-Chang Xiong, Yi Xiao, Weili Guan, Meng Wang, Richang Hong, Zhiyong Li
2020 J jnl
Inf. Process. Manag.
Maofu Liu, Lingjun Li, Huijun Hu, Weili Guan, Jing Tian
2020 J jnl
Inf. Process. Manag.
Lianhai Miao, Da Cao, Juntao Li, Weili Guan
2020 J jnl
IEEE Trans. Image Process.
Yinwei Wei, Xiang Wang, Weili Guan, Liqiang Nie, Zhouchen Lin, Baoquan Chen
2020 A* conf
SIGIR
Zan Gao, Yin-Ming Li, Weili Guan, Weizhi Nie, Zhiyong Cheng, Anan Liu
2020 J jnl
Multim. Tools Appl.
Li Tang, Weili Guan
2020 J jnl
Neurocomputing
Yang Yang, Zhuo Chen, Xiaoli Li, Weili Guan, Dexing Zhong, Meifeng Xu
2020 J jnl
Multim. Tools Appl.
Peiguang Jing, Weili Guan, Xu Bai, Hongbin Guo, Yuting Su
2020 A* conf
ACM Multimedia
Li-Shuai Gao, Hua Zhang, Zan Gao, Weili Guan, Zhiyong Cheng, Meng Wang
2019 J jnl
IEEE Access
Rui Chen, Qingyi Hua, Bo Wang, Min Zheng, Weili Guan, Xiang Ji, Quanli Gao, Xiangjie Kong
2019 J jnl
J. Vis. Commun. Image Represent.
Jihua Zhu, Jiaxing Wang, Shanmin Pang, Weili Guan, Zhongyu Li, Yaochen Li, Xueming Qian
2019 J jnl
J. Vis. Commun. Image Represent.
Maofu Liu, Weili Guan, Jie Yan, Huijun Hu
2019 conf
EMNLP/IJCNLP (1)
Linmei Hu, Luhao Zhang, Chuan Shi, Liqiang Nie, Weili Guan, Cheng Yang
2019 J jnl
Knowl. Based Syst.
Jin Yuan, Xingxing Hou, Yaoqiang Xiao, Da Cao, Weili Guan, Liqiang Nie
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)