M. Elif Karsligil

56 papers B 5C 7Misc 1Journal 9Unranked 33
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Can Ekkazan, M. Elif Karsligil
2024 conf
SIU
Zainab Malik, Ziya Cihan Taysi, M. Elif Karsligil
2022 conf
SIU
Oguz Kahraman, M. Elif Karsligil
2022 conf
SIU
Ensar Emirali, M. Elif Karsligil
2021 conf
SIU
Berk Taskin, M. Elif Karsligil
2021 J jnl
IEEE Access
Fuat Ögme, Ali Gökhan Yavuz, M. Amaç Güvensan, M. Elif Karsligil
2021 conf
SIU
Ensar Bayhan, Ali Gökhan Yavuz, M. Amaç Güvensan, M. Elif Karsligil
2021 conf
SIU
Mustafa Furkan Eseoglu, M. Elif Karsligil, Ismail Koçak
2021 conf
SIU
Ali Asaf Polat, Mehmet Furkan Sahin, M. Elif Karsligil
2020 J jnl
IEEE Access
Baris Can, Ali Gökhan Yavuz, M. Elif Karsligil, M. Amaç Güvensan
2020 conf
SIU
Khadija Hanifi, M. Elif Karsligil
2020 conf
SIU
Berna Yilmaz, M. Elif Karsligil
2020 conf
SIU
Fuat Ögme, M. Elif Karsligil, Ali Gökhan Yavuz, M. Amaç Güvensan
2020 conf
SIU
Güven Asci, M. Elif Karsligil
2019 J jnl
Medical Biol. Eng. Comput.
H. Irem Türkmen, M. Elif Karsligil
2018 conf
SIU
Koray Gunduz, Abdulkadir Albayrak, Gokhan Bilgin, M. Elif Karsligil
2018 conf
SIU
Hurkal Husem, M. Elif Karsligil
2017 conf
SIU
Tasnim Zayet, M. Elif Karsligil
2017 J jnl
Sensors
M. Amaç Güvensan, A. Oguz Kansiz, N. Cihan Camgoz, H. Irem Türkmen, Ali Gökhan Yavuz, M. Elif Karsligil
2017 Misc conf
ICNC
Baris Yamansavascilar, M. Amaç Güvensan, Ali Gökhan Yavuz, M. Elif Karsligil
2017 conf
SIU
Ilkin Huseynli, M. Elif Karsligil
2017 conf
SIU
M. Elif Karsligil, Ali Gökhan Yavuz, M. Amaç Güvensan, Khadija Hanifi, Hasan Bank
2017 conf
SIU
M. Elif Karsligil, Furkan Kaynar
2017 J jnl
J. Electronic Imaging
H. Irem Türkmen, Abdulkadir Albayrak, M. Elif Karsligil, Ismail Kocak
2016 C conf
ISM
Okan Candir, M. Elif Karsligil
2015 J jnl
Comput. Biol. Medicine
H. Irem Türkmen, M. Elif Karsligil, Ismail Kocak
2015 conf
SIU
Kadir Kebabci, M. Elif Karsligil
2015 conf
SIU
Halis Yilboga, M. Elif Karsligil
2014 J jnl
J. Real Time Image Process.
Z. Cihan Taysi, Ali Gökhan Yavuz, M. Amaç Güvensan, M. Elif Karsligil
2014 J jnl
Mach. Vis. Appl.
Ömer Aköz, M. Elif Karsligil
2013 conf
SIU
N. Cihan Camgoz, Z. Cihan Taysi, M. Amaç Güvensan, M. Elif Karsligil, Ali Gökhan Yavuz
2013 conf
MLSP
H. Irem Türkmen, M. Elif Karsligil, Ismail Kocak
2013 conf
SIU
Muhammet Said Aydemir, M. Elif Karsligil
2013 conf
SIU
Z. Cihan Taysi, M. Elif Karsligil, Ali Gökhan Yavuz, Resit Sahin, Taner Yilmaz, Hüseyin Demirel
2013 conf
SIU
Elif Bektuzun, Yigit S. Kucuksoz, M. Elif Karsligil
2012 conf
EMBC
H. Irem Türkmen, M. Elif Karsligil, Ismail Kocak
2012 conf
SIU
H. Irem Türkmen, M. Elif Karsligil, Ismail Kocak
2012 conf
SIU
Adem Guclu, M. Elif Karsligil
2012 B conf
ICPR
Uygar Er, Suleyman Yuksel, Omer Aköz, M. Elif Karsligil
2012 B conf
ICPR
Muhammet Said Aydemir, Ugur Ergul, Adem Guclu, M. Elif Karsligil
2011 C conf
EUC
M. Amaç Güvensan, Ali Gökhan Yavuz, Z. Cihan Taysi, M. Elif Karsligil, Esra Celik
2011 B conf
ICIP
Omer Aköz, M. Elif Karsligil
2010 conf
ITSC
Fuat Coskun, Özgür Tunçer, M. Elif Karsligil, Levent Güvenç
2010 conf
ITSC
Ömer Aköz, M. Elif Karsligil
2010 B conf
ICIP
Omer Aköz, M. Elif Karsligil
2010 B conf
SMC
Özgür Tunçer, Levent Guvenç, Fuat Coskun, M. Elif Karsligil
2008 C conf
MMSP
Serhat Aydin, M. Elif Karsligil
2008 C conf
CIARP
H. Irem Türkmen, M. Elif Karsligil
2007 conf
EUSIPCO
H. Irem Türkmen, Zeyneb Kurt, M. Elif Karsligil
2007 C conf
CAIP
Ilktan Ar, M. Elif Karsligil
2005 conf
NODALIDA
Ergin Altintas, M. Elif Karsligil, Vedat Coskun
2005 C conf
CAIP
Emre Özgündüz, Tülin Sentürk, M. Elif Karsligil
2005 conf
EUSIPCO
Emre Özgündüz, Tülin Sentürk, M. Elif Karsligil
2005 conf
ISCIS
Ergin Altintas, M. Elif Karsligil, Vedat Coskun
1999 C conf
CAIP
M. Elif Karsligil, M. Yahya Karsligil
1998
M. Elif Karsligil
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)