Xiaofei Yang

41 papers A 1C 2Misc 1Journal 24Unranked 13
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Jiawen Wen, Suixuan Qiu, Zihang Luo, Xiaofei Yang, Haotian Shi
2026 J jnl
IEEE Trans. Comput. Biol. Bioinform.
Zheng Zhang, Tong Luo, Xiangan Chen, Xiaofei Yang, Jihong Gong
2026 J jnl
J. Chem. Inf. Model.
Shuo Wang, Hongchuan Yuan, Zhengcheng Hong, Xiangan Chen, Xiaofei Yang
2026 J jnl
J. Comput. Civ. Eng.
Xiaofei Yang, Yuguang Fu, Jinwoo Kim
2025 C conf
INDIN
Shuo Shao, Xiaofei Yang, Wei Liu, Xu Wang, Mengmeng Lou, Yuanguang Lin
2025 J jnl
Informatica (Slovenia)
Jian Zhang, Xiaofei Yang, Weilin Shi
2025 J jnl
Comput. Electron. Agric.
Sumeng Ye, Zhitao Zhang, Junying Chen, Haiying Chen, Bei Zhang, Xuqian Bai, Ning Yang, Ruiqi Du, Xiaofei Yang, Qi Xu, Long Qian, Yinwen Chen, Siying Zhang
2025 J jnl
IEEE Trans. Instrum. Meas.
Leling Jin, Hangkai Pan, Shouli Sun, Yinxu Bian, Jinming Gao, Xiaofei Yang, Cuifang Kuang, Xu Liu
2025 conf
ICSI (1)
Xiaofei Yang, Chenyu Wang, Jintao Hu, Xiaodong Liu
2025 J jnl
CoRR
Chunshan Li, Rong Wang, Xiaofei Yang, Dianhui Chu
2025 J jnl
IEEE Access
Xiaofei Yang, Wenjing Yang, Xiaoshuang Wang, Mei Gao, Lu Zhang
2025 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Ning Yang, Zhitao Zhang, Xiaofei Yang, Junrui Zhang, Bei Zhang, Pingliang Xie, Yujin Wang, Junying Chen, Liangsheng Shi
2024 conf
ICBBS
Xuebin Sun, Jinxi Wang, Xiaofei Yang
2024 J jnl
Comput. Appl. Math.
Kaiyun Wang, Huixin Wang, Xiaofei Yang
2024 J jnl
Sensors
Lin He, Quan Wei, Mengting Gong, Xiaofei Yang, Jianming Wei
2024 J jnl
Complex Intell. Syst.
Xue Zhao, Qiaoyan Li, Zhiwei Xing, Xiaofei Yang, Xuezhen Dai
2024 J jnl
IEEE Access
Lin He, Quan Wei, Mengting Gong, Xiaofei Yang, Jianming Wei
2023 J jnl
Digit. Scholarsh. Humanit.
Siyi Wang, Yong Duan, Xiaofei Yang, Chenxing Cao, Shouyong Pan
2023 J jnl
Comput. Biol. Medicine
Xiangan Chen, Xiaofei Yang, Chenhong Li, Xianguang Lin, Wen Zhang
2022 J jnl
Symmetry
Chuanwu Liao, Xiaochuan Xia, Xiaofei Yang, Liang Zhang, Guotong Du
2022 J jnl
Sensors
Xiaofei Yang, Zhaopeng Xue, Hui Zheng, Lei Qiu, Ke Xiong
2021 conf
ICONIP (5)
Wenjun Guo, Xianghong Lin, Xiaofei Yang
2021 J jnl
Sci. China Inf. Sci.
Qiang Luo, Zhe Guo, Shuai Zhang, Xiaofei Yang, Xuecheng Zou, Jeongmin Hong, Long You
2021 C conf
CIS
Tingyu Ren, Xianghong Lin, Xiaofei Yang, Xiangwen Wang
2021 J jnl
CoRR
Aoran Xiao, Xiaofei Yang, Shijian Lu, Dayan Guan, Jiaxing Huang
2020 J jnl
Neurocomputing
Xuebin Sun, Xiaofei Yang, Sukai Wang, Ming Liu
2019 Misc conf
ICASSP
Lei Chen, Cheng Chang, Cheng Zhang, Huan Luan, Jiawen Luo, Ge Guo, Xiaofei Yang, Yang Liu
2018 A conf
INTERSPEECH
Jiahong Yuan, Qiusi Dong, Fei Wu, Huan Luan, Xiaofei Yang, Hui Lin, Yang Liu
2018 conf
ICBBT
Xiaofei Yang, Shaogang Xu, Wentong Li, Ding Yuan, Jiangqi Qu
2017 conf
SmartCloud
Xiaofei Yang, Guangqian Xie, Xiaodong Yu, Yong Shi
2017 J jnl
Briefings Bioinform.
Xiaofei Yang, Lin Gao, Shihua Zhang
2017 J jnl
Comput. Biol. Chem.
Xiaoke Ma, Liang Yu, Peizhuo Wang, Xiaofei Yang
2017 conf
APWeb/WAIM (2)
Fei Yu, Zhijun Li, Shouxu Jiang, Xiaofei Yang
2016 conf
WCSP
Zhijun Yao, Quan Zhou, Xiaofei Yang, Chunhua Yang, Zhongyuan Lai
2016 conf
WCSP
Xiaofei Yang, Chunhua Yang, Zhijun Yao
2015 conf
CCBR
Xianglei Xing, Kejun Wang, Xiaofei Yang, Tongchun Du
2015 conf
CCBR
Kejun Wang, Xianglei Xing, Xiaofei Yang
2014 conf
ICSI (2)
Chenggang Cui, Xiaofei Yang, Tingyu Gao
2014 conf
PAKDD (2)
Xiaofei Yang, Jiming Liu, William Kwok-Wai Cheung, Xiao-Nong Zhou
2014 J jnl
Health Inf. Sci. Syst.
Xiaofei Yang, Jiming Liu, Xiao-Nong Zhou, William Kwok-Wai Cheung
2012 conf
BMEI
Sheng Huang, Gen Li, Xiong Wang, Xiaofei Yang
tests/unit/test_extractor_registry.py
← Index tests/unit/test_extractor_registry.py python
"""
Unit tests for the extractor registry (redb/extractor_registry.py).

Verifies that all file-type groups load correctly, return the expected
extractors, and that lookup/filtering logic works as intended.
"""
import pytest

from redb.extractor_registry import (
    get_filetype_modules,
    get_extractor_class,
    FILETYPE_TO_GROUP,
    _REGISTRY,
)

pytestmark = [pytest.mark.unit]


# ============================================================================
# get_filetype_modules — group loading
# ============================================================================

class TestGetFiletypeModules:

    @pytest.mark.parametrize("filetype,expected_names", [
        ("pebin", [
            "PEFeaturesExtractor", "PEImportExtractor", "PEResourceExtractor",
            "PEOverlayExtractor", "PESectionExtractor", "PESignatureExtractor",
            "PEExtraFindings", "PEInconstistencyTestsExtractor", "PEDotNetExtractor",
        ]),
        ("elf", [
            "ELFFeaturesExtractor", "ELFSegmentExtractor", "ELFSectionExtractor",
            "ELFDependencyExtractor", "ELFSymbolExtractor", "ELFImportExtractor",
            "ELFExportExtractor", "ELFRelocationExtractor", "ELFNotesExtractor",
        ]),
        ("macho", [
            "MachOFeaturesExtractor", "MachOSegmentExtractor",
            "MachOImportExtractor", "MachOExportExtractor",
            "MachODylibExtractor", "MachOSignatureExtractor",
        ]),
        ("apk", [
            "APKFeaturesExtractor", "APKManifestExtractor",
            "APKPermissionsExtractor", "APKSignatureExtractor",
            "APKDexExtractor", "APKResourceExtractor",
            "APKNativeLibExtractor", "APKInconsistencyTestsExtractor",
        ]),
    ])
    def test_loads_all_extractors_for_filetype(self, filetype, expected_names):
        """Each filetype group should return all its registered extractors."""
        modules = get_filetype_modules(filetype)
        names = [m.__name__ for m in modules]
        for expected in expected_names:
            assert expected in names, f"{expected} missing from {filetype} modules"

    def test_apk_excludes_decompilers(self):
        """get_filetype_modules should not include DecompileAPK."""
        modules = get_filetype_modules("apk")
        names = [m.__name__ for m in modules]
        assert "DecompileAPK" not in names

    def test_unknown_filetype_returns_empty(self):
        """An unrecognized filetype should return an empty list."""
        assert get_filetype_modules("unknown_format") == []

    def test_returned_classes_are_callable(self):
        """All returned extractor classes should be callable (i.e., actual classes)."""
        for filetype in FILETYPE_TO_GROUP:
            for cls in get_filetype_modules(filetype):
                assert callable(cls), f"{cls} is not callable"


# ============================================================================
# get_extractor_class — single lookup
# ============================================================================

class TestGetExtractorClass:

    def test_finds_pe_extractor(self):
        cls = get_extractor_class("PEFeaturesExtractor")
        assert cls is not None
        assert cls.__name__ == "PEFeaturesExtractor"

    def test_finds_elf_extractor(self):
        cls = get_extractor_class("ELFSectionExtractor")
        assert cls is not None
        assert cls.__name__ == "ELFSectionExtractor"

    def test_finds_macho_extractor(self):
        cls = get_extractor_class("MachOSignatureExtractor")
        assert cls is not None
        assert cls.__name__ == "MachOSignatureExtractor"

    def test_finds_apk_extractor(self):
        cls = get_extractor_class("APKDexExtractor")
        assert cls is not None
        assert cls.__name__ == "APKDexExtractor"

    def test_finds_decompile_apk(self):
        cls = get_extractor_class("DecompileAPK")
        assert cls is not None
        assert cls.__name__ == "DecompileAPK"

    def test_returns_none_for_unknown(self):
        assert get_extractor_class("NonExistentExtractor") is None


# ============================================================================
# Registry completeness
# ============================================================================

class TestRegistryCompleteness:

    def test_all_filetypes_have_registry_group(self):
        """Every filetype in FILETYPE_TO_GROUP should map to a valid registry group."""
        for filetype, group in FILETYPE_TO_GROUP.items():
            assert group in _REGISTRY, f"filetype {filetype} maps to unknown group {group}"

    def test_all_registry_groups_are_reachable(self):
        """Every registry group should be reachable via at least one filetype."""
        reachable = set(FILETYPE_TO_GROUP.values())
        for group in _REGISTRY:
            assert group in reachable, f"registry group {group} has no filetype mapping"


# ============================================================================
# Integration with workers.get_module_by_name
# ============================================================================

class TestWorkersGetModuleByName:

    def test_resolves_common_extractor(self):
        from redb.workers import get_module_by_name
        cls = get_module_by_name("BasicPropertiesExtractor")
        assert cls is not None
        assert cls.__name__ == "BasicPropertiesExtractor"

    def test_resolves_type_specific_extractor(self):
        from redb.workers import get_module_by_name
        cls = get_module_by_name("PEFeaturesExtractor")
        assert cls is not None
        assert cls.__name__ == "PEFeaturesExtractor"

    def test_resolves_decompile_apk(self):
        from redb.workers import get_module_by_name
        cls = get_module_by_name("DecompileAPK")
        assert cls is not None

    def test_returns_none_for_unknown(self):
        from redb.workers import get_module_by_name
        assert get_module_by_name("BogusExtractor") is None