Wei-Chiang Hong

82 papers B 6Misc 1Journal 65Unranked 9
YearRankTypeTitle / Venue / Authors
2026 J jnl
Swarm Evol. Comput.
Xiang-Yang Li, Zhong-Yi Yang, Ming-Wei Li, Wei-Chiang Hong
2025 J jnl
Appl. Soft Comput.
Ming-Wei Li, Yi-Zhang Lei, Zhong-Yi Yang, Hsin-Pou Huang, Wei-Chiang Hong
2025 J jnl
Appl. Soft Comput.
Ming-Wei Li, Xiang-Yang Li, Jing Geng, Zhong-Yi Yang, Wei-Chiang Hong
2025 J jnl
Knowl. Based Syst.
Zichen Zhang, Chenglong Zhang, Yongquan Dong, Wei-Chiang Hong
2025 J jnl
Swarm Evol. Comput.
Ming-Wei Li, Xiang-Yang Li, Yu-Tian Wang, Zhong-Yi Yang, Wei-Chiang Hong
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Zichen Zhang, Yongquan Dong, Wei-Chiang Hong
2025 J jnl
Neurocomputing
He Ma, Xu Zhang, Mei Song, Yi Zhu, Wei-Chiang Hong
2024 J jnl
IEEE Access
Bharti Rana, Yashwant Singh, Pradeep Kumar Singh, Wei-Chiang Hong
2024 J jnl
Expert Syst. Appl.
Guo-Feng Fan, Ying-Ying Han, Jin-wei Li, Li-Ling Peng, Yi-Hsuan Yeh, Wei-Chiang Hong
2024 J jnl
Expert Syst. Appl.
Zhong-Yi Yang, Xia Cao, Rui-Zhe Xu, Wei-Chiang Hong, Sulong Sun
2024 J jnl
Intell. Syst. Appl.
A. J. Umbarkar, P. M. Sheth, Wei-Chiang Hong, S. M. Jagdeo
2024 J jnl
Inf. Sci.
Zichen Zhang, Wei-Chiang Hong, Yongquan Dong
2024 J jnl
Appl. Soft Comput.
Ming-Wei Li, Rui-Zhe Xu, Zhong-Yi Yang, Wei-Chiang Hong, Xiao-Gang An, Yi-Hsuan Yeh
2024 J jnl
Appl. Soft Comput.
Ming-Wei Li, Rui-Zhe Xu, Zhong-Yi Yang, Yi-Hsuan Yeh, Wei-Chiang Hong
2024 J jnl
Appl. Soft Comput.
Guo-Feng Fan, Jin-wei Li, Li-Ling Peng, Hsin-Pou Huang, Wei-Chiang Hong
2023 J jnl
Appl. Soft Comput.
Da Li, Mei-Rong Jiang, Ming-Wei Li, Wei-Chiang Hong, Rui-Zhe Xu
2023 J jnl
Knowl. Based Syst.
Guo-Feng Fan, Ying-Ying Han, Jing-Jing Wang, Hao-Li Jia, Li-Ling Peng, Hsin-Pou Huang, Wei-Chiang Hong
2022 J jnl
Multim. Tools Appl.
Pradeep Kumar Singh, Bharat K. Bhargava, Wei-Chiang Hong, Pelin Angin
2022 J jnl
IEEE Access
Dhiren Rohera, Harshal Shethna, Keyur Patel, Urvish Thakker, Sudeep Tanwar, Rajesh Gupta, Wei-Chiang Hong, Ravi Sharma
2022 J jnl
Appl. Soft Comput.
Ming-Wei Li, Dong-Yang Xu, Jing Geng, Wei-Chiang Hong
2022 J jnl
IEEE Access
Rushil Kaushikkumar Patel, Aparna Kumari, Sudeep Tanwar, Wei-Chiang Hong, Ravi Sharma
2022 J jnl
J. Oper. Res. Soc.
Guo-Feng Fan, Xiang-Ru Jin, Wei-Chiang Hong
2022 J jnl
IEEE Access
Parag Verma, Rajeev Tiwari, Wei-Chiang Hong, Shuchi Upadhyay, Yi-Hsuan Yeh
2022 J jnl
IET Commun.
Rohit Sharma, Qin Xin, Patrick Siarry, Wei-Chiang Hong
2022 J jnl
IEEE Access
Harshvardhan GM, Aanchal Sahu, Mahendra Kumar Gourisaria, Pradeep Kumar Singh, Wei-Chiang Hong, Vijander Singh, Bunil Kumar Balabantaray
2022 J jnl
Appl. Artif. Intell.
Xia Cao, Zhong-Yi Yang, Wei-Chiang Hong, Rui-Zhe Xu, Yu-Tian Wang
2021 J jnl
Knowl. Based Syst.
Zichen Zhang, Wei-Chiang Hong
2021 J jnl
Sensors
Parushi Malhotra, Yashwant Singh, Pooja Anand, Deep Kumar Bangotra, Pradeep Kumar Singh, Wei-Chiang Hong
2021 J jnl
Scalable Comput. Pract. Exp.
Ashutosh Sharma, Pradeep Kumar Singh, Wei-Chiang Hong, Gaurav Dhiman, Adam Slowik
2021 J jnl
Sensors
Sumit Kumar, Rajeev Tiwari, Wei-Chiang Hong
2020 J jnl
IEEE Access
Umesh Bodkhe, Dhyey Mehta, Sudeep Tanwar, Pronaya Bhattacharya, Pradeep Kumar Singh, Wei-Chiang Hong
2020 J jnl
Sensors
Deep Kumar Bangotra, Yashwant Singh, Arvind Kumar Selwal, Nagesh Kumar, Pradeep Kumar Singh, Wei-Chiang Hong
2020 J jnl
IEEE Access
Zichen Zhang, Wei-Chiang Hong, Junchi Li
2020 J jnl
IEEE Access
Sudeep Tanwar, Qasim Bhatia, Pruthvi Patel, Aparna Kumari, Pradeep Kumar Singh, Wei-Chiang Hong
2020 J jnl
Sustain. Comput. Informatics Syst.
Pradeep Kumar Singh, Bharat K. Bhargava, Pao-Ann Hsiung, Wei-Chiang Hong
2017 J jnl
Neural Comput. Appl.
Ming-Wei Li, Jing Geng, Wei-Chiang Hong, Zhi-Yuan Chen
2017 J jnl
Neural Comput. Appl.
Ming-Wei Li, Wei-Chiang Hong, Jing Geng, Jianlun Wang
2016 J jnl
Int. J. Bio Inspired Comput.
A. J. Umbarkar, Madhuri Satish Joshi, Wei-Chiang Hong
2016 J jnl
Neurocomputing
Guo-Feng Fan, Li-Ling Peng, Wei-Chiang Hong, Fan Sun
2015 J jnl
Soft Comput.
Yucheng Dong, Xia Chen, Cong-Cong Li, Wei-Chiang Hong, Yin-Feng Xu
2015 J jnl
Appl. Soft Comput.
Rong Chen, Chang-yong Liang, Wei-Chiang Hong, Dongxiao Gu
2015 J jnl
Neurocomputing
Jing Geng, Min-Liang Huang, Ming-Wei Li, Wei-Chiang Hong
2015 B conf
SMC
Jing Geng, Ming-Wei Li, Wei-Chiang Hong, Tian-Ju Zheng, Xin-Yu Niu, Shi-Ling Ma
2014 J jnl
Int. J. Appl. Evol. Comput.
Shih-Yung Wei, Nan-Yu Chu, Wei-Chiang Hong
2014 J jnl
J. Comb. Optim.
Feifeng Zheng, E. Zhang, Yinfeng Xu, Wei-Chiang Hong
2014 J jnl
Int. J. Appl. Evol. Comput.
Bijaya K. Panigrahi, Manjaree Pandit, Hari Mohan Dubey, Ashish Agarwal, Wei-Chiang Hong
2014 J jnl
J. Appl. Math.
Guo-Feng Fan, Li-Ling Peng, Wei-Chiang Hong, Fan Sun
2014 J jnl
Appl. Math. Comput.
A. J. Umbarkar, Madhuri Satish Joshi, Wei-Chiang Hong
2014 J jnl
Int. J. Appl. Evol. Comput.
Bin Pan, Shih-Yung Wei, Xuanhua Xu, Wei-Chiang Hong
2013 J jnl
IEEE Trans. Fuzzy Syst.
Yucheng Dong, Guiqing Zhang, Wei-Chiang Hong, Shui Yu
2013 J jnl
Soft Comput.
Yucheng Dong, Wei-Chiang Hong, Yinfeng Xu
2013 J jnl
Eur. J. Oper. Res.
Yucheng Dong, Wei-Chiang Hong, Yinfeng Xu, Shui Yu
2013 J jnl
Neurocomputing
Ming-Wei Li, Wei-Chiang Hong, Hai-Gui Kang
2012 J jnl
Neural Comput. Appl.
Wei-Chiang Hong
2012 conf
ICGEC
Wei-Chiang Hong, Yucheng Dong, Li-Yueh Chen, Shih-Yung Wei
2011 J jnl
Int. J. Appl. Evol. Comput.
Shih-Yung Wei, Wei-Chiang Hong, Kai Wang
2011 J jnl
Appl. Math. Comput.
Wei-Chiang Hong, Yucheng Dong, Feifeng Zheng, Shih-Yung Wei
2011 conf
SEMCCO (1)
Li-Yueh Chen, Wei-Chiang Hong, Bijaya K. Panigrahi, Shih-Yung Wei
2011 J jnl
Appl. Soft Comput.
Wei-Chiang Hong, Yucheng Dong, Li-Yueh Chen, Shih-Yung Wei
2011 conf
SocProS (1)
Wei-Chiang Hong, Yucheng Dong, Li-Yueh Chen, Bijaya K. Panigrahi, Shih-Yung Wei
2011 J jnl
Int. J. Appl. Evol. Comput.
Shih-Yung Wei, Jack J. W. Yang, Jen-Tseng Chen, Wei-Chiang Hong
2011 J jnl
Neurocomputing
Wei-Chiang Hong
2010 J jnl
Expert Syst. Appl.
Ching-Torng Lin, Wei-Chiang Hong, Yi-Fun Chen, Yucheng Dong
2010 J jnl
Decis. Support Syst.
Yucheng Dong, Guiqing Zhang, Wei-Chiang Hong, Yinfeng Xu
2010 conf
NaBIC
Wei-Chiang Hong, Yucheng Dong, Wei-Mou Hung, Shih-Yung Wei
2010 J jnl
Expert Syst. Appl.
Wei-Chiang Hong, Yucheng Dong, Li-Yueh Chen, Chien-Yuan Lai
2009 B conf
IEEE Congress on Evolutionary Computation
Wei-Mou Hung, Wei-Chiang Hong, Tung-Bo Chen
2009 ch.
Encyclopedia of Artificial Intelligence
Wei-Chiang Hong
2008 J jnl
Appl. Math. Comput.
Wei-Chiang Hong
2008 J jnl
Int. J. Artif. Intell. Soft Comput.
Wei-Chiang Hong, Chien-Yuan Lai
2007 B conf
IEEE Congress on Evolutionary Computation
Wei-Chiang Hong, Young-Jou Lai, Ping-Feng Pai, Shao-Lun Lee, Shun-Lin Yang
2007 Misc conf
IWANN
Wei-Chiang Hong, Ping-Feng Pai, Shun-Lin Yang, Chien-Yuan Lai
2007 conf
ICNC (1)
Wei-Chiang Hong, Yu-Fen Chen, Peng-Wen Chen, Yi-Hsuan Yeh
2007 B conf
IJCNN
Wei-Chiang Hong, Shao-Lun Lee, Chien-Yuan Lai, Yi-Hsien Wu, Kuo-Liang Wang
2007 B conf
IEEE Congress on Evolutionary Computation
Shao-Lun Lee, Wei-Chiang Hong
2006 conf
JCIS
Ping-Feng Pai, Wei-Chiang Hong, Feng-Min Lai, Jia-Hroung Wu, Shun-Lin Yang
2006 B conf
IJCNN
Wei-Chiang Hong, Ping-Feng Pai, Shun-Lin Yang, Robert Theng
2006 J jnl
J. Syst. Softw.
Ping-Feng Pai, Wei-Chiang Hong
2005 conf
ICNC (1)
Wei-Chiang Hong, Ping-Feng Pai, Yuying Huang, Shun-Lin Yang
2005 J jnl
J. Adv. Comput. Intell. Intell. Informatics
Ping-Feng Pai, Wei-Chiang Hong, Chih-Shen Lin
2005 conf
CIS (1)
Ping-Feng Pai, Wei-Chiang Hong, Chih-Sheng Lin
2005 conf
ICNC (1)
Wei-Chiang Hong, Ping-Feng Pai, Chen-Tung Chen, Ping-Teng Chang
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)