Rainer E. Burkard

105 papers A 1B 3Journal 96Unranked 2
YearRankTypeTitle / Venue / Authors
2014 J jnl
Networks
Roswitha Rissner, Rainer E. Burkard
2013 J jnl
Central Eur. J. Oper. Res.
Behrooz Alizadeh, Rainer E. Burkard
2011 J jnl
Networks
Behrooz Alizadeh, Rainer E. Burkard
2011 J jnl
Math. Methods Oper. Res.
Fahimeh Baroughi Bonab, Rainer E. Burkard, Elisabeth Gassner
2011 J jnl
J. Comb. Optim.
Rainer E. Burkard, Roswitha Rissner
2011 J jnl
Discret. Appl. Math.
Behrooz Alizadeh, Rainer E. Burkard
2010 J jnl
Electron. Notes Discret. Math.
Rainer E. Burkard, Behrooz Alizadeh
2010 J jnl
Central Eur. J. Oper. Res.
Fahimeh Baroughi Bonab, Rainer E. Burkard, Behrooz Alizadeh
2010 J jnl
J. Comb. Optim.
Rainer E. Burkard, Johannes Hatzl
2010 J jnl
Eur. J. Oper. Res.
Rainer E. Burkard, Mohammadreza Galavii, Elisabeth Gassner
2009 book
Rainer E. Burkard, Mauro Dell'Amico, Silvano Martello
2009 ch.
Encyclopedia of Optimization
Rainer E. Burkard
2009 J jnl
Computing
Behrooz Alizadeh, Rainer E. Burkard, Ulrich Pferschy
2008 J jnl
Discret. Appl. Math.
Rainer E. Burkard, Elisabeth Gassner, Johannes Hatzl
2008 J jnl
Discret. Optim.
Rainer E. Burkard, Carmen Pleschiutschnig, Jianzhong Zhang
2007 J jnl
Math. Methods Oper. Res.
Rainer E. Burkard, Jafar Fathali
2007 J jnl
Ann. Oper. Res.
Rainer E. Burkard
2007 J jnl
Eur. J. Oper. Res.
Rainer E. Burkard
2007 J jnl
Oper. Res. Lett.
Rainer E. Burkard, Jafar Fathali, Hossein Taghizadeh Kakhki
2006 J jnl
Eur. J. Oper. Res.
Rainer E. Burkard, Johannes Hatzl
2006 J jnl
Networks
Rainer E. Burkard, Elisabeth Gassner, Johannes Hatzl
2006 J jnl
Central Eur. J. Oper. Res.
Jafar Fathali, Hossein Taghizadeh Kakhki, Rainer E. Burkard
2006 J jnl
J. Comb. Optim.
Guangting Chen, Gu Zhang, Rainer E. Burkard
2005 J jnl
Math. Methods Oper. Res.
Rainer E. Burkard
2005 J jnl
Comput. Chem. Eng.
Rainer E. Burkard, Johannes Hatzl
2004 J jnl
Discret. Optim.
Rainer E. Burkard, Carmen Pleschiutschnig, Jianzhong Zhang
2004 J jnl
Inf. Process. Lett.
Rainer E. Burkard, Vladimir G. Deineko
2004 J jnl
Eur. J. Oper. Res.
Rainer E. Burkard, Yixun Lin, Jianzhong Zhang
2003 J jnl
Eur. J. Oper. Res.
Rainer E. Burkard, Helidon Dollani
2003 J jnl
RAIRO Oper. Res.
Guangting Chen, Rainer E. Burkard
2003 J jnl
Discret. Appl. Math.
Rainer E. Burkard, Peter Butkovic
2003 J jnl
Math. Program.
Rainer E. Burkard, Peter Butkovic
2002 J jnl
Ann. Oper. Res.
Rainer E. Burkard, Helidon Dollani
2002 J jnl
Discret. Appl. Math.
Rainer E. Burkard
2001 J jnl
RAIRO Oper. Res.
Rainer E. Burkard, Bettina Klinz, Jianzhong Zhang
2001 J jnl
J. Glob. Optim.
Rainer E. Burkard, Helidon Dollani, Phan Thien Thach
2001 J jnl
Ann. Oper. Res.
Henrik Blank, Rainer E. Burkard, Gautam Mitra, Toshihide Ibaraki, Steven D. Noble, William R. Pulleyblank
2001 J jnl
Networks
Rainer E. Burkard, Helidon Dollani
2001 J jnl
SIAM J. Discret. Math.
Rainer E. Burkard, Helidon Dollani, Yixun Lin, Günter Rote
2000 J jnl
Discret. Appl. Math.
Rainer E. Burkard, Eranda Çela, Helidon Dollani
2000 J jnl
Eur. J. Oper. Res.
Rainer E. Burkard, Martine Labbé, M. Teresa Ramos, Joaquin Sicilia
1999 J jnl
Math. Methods Oper. Res.
Steffen G. Meusel, Rainer E. Burkard
1999 J jnl
Math. Oper. Res.
Rainer E. Burkard, Vladimir G. Deineko, Gerhard J. Woeginger
1999 B ed.
IPCO
Gérard Cornuéjols, Rainer E. Burkard, Gerhard J. Woeginger
1999 ch.
Handbook of Combinatorial Optimization
Rainer E. Burkard, Eranda Çela
1999 J jnl
Networks
Rainer E. Burkard, Karin Feldbacher, Bettina Klinz, Gerhard J. Woeginger
1999 J jnl
Eur. J. Oper. Res.
Rainer E. Burkard
1999 J jnl
Computing
Rainer E. Burkard, M. M. Miatselski
1998 J jnl
Computing
Rainer E. Burkard, Jakob Krarup
1998 J jnl
Computing
Rainer E. Burkard, Y. He, Hans Kellerer
1998 J jnl
Computing
Rainer E. Burkard, Y. He
1998 conf
IFIP Congress: Fundamentals - Foundations of Computer Science
Rainer E. Burkard
1998 J jnl
Inf. Process. Lett.
Rainer E. Burkard, Vladimir G. Deineko
1998 J jnl
Ann. Oper. Res.
Rainer E. Burkard, Toshihide Ibaraki, William R. Pulleyblank
1998 J jnl
J. Comb. Optim.
Rainer E. Burkard, Vladimir G. Deineko, Gerhard J. Woeginger
1998 J jnl
Math. Oper. Res.
Rainer E. Burkard, Vladimir G. Deineko, Gerhard J. Woeginger
1998 J jnl
Math. Program.
Rainer E. Burkard, Eranda Çela, Günter Rote, Gerhard J. Woeginger
1998 J jnl
SIAM Rev.
Rainer E. Burkard, Vladimir G. Deineko, René van Dal, Jack A. A. van der Veen, Gerhard J. Woeginger
1997 A ed.
ESA
Rainer E. Burkard, Gerhard J. Woeginger
1997 J jnl
Acta Cybern.
Rainer E. Burkard, Guochuan Zhang
1997 J jnl
Math. Program.
Rainer E. Burkard
1997 J jnl
Discret. Math.
Qi Fan Yang, Rainer E. Burkard, Eranda Çela, Gerhard J. Woeginger
1997 J jnl
Ann. Oper. Res.
Rainer E. Burkard, Toshihide Ibaraki, Maurice Queyranne
1997 J jnl
J. Glob. Optim.
Rainer E. Burkard, Stefan E. Karisch, Franz Rendl
1996 J jnl
J. Glob. Optim.
Rainer E. Burkard
1996 J jnl
Discret. Math.
Rainer E. Burkard, Tibor Dudás, Thomas Maier
1996 J jnl
Discret. Appl. Math.
Rainer E. Burkard, Bettina Klinz, Rüdiger Rudolf
1996 J jnl
Acta Cybern.
Rainer E. Burkard, Tibor Dudás
1996 B conf
IPCO
Rainer E. Burkard, Eranda Çela, Günter Rote, Gerhard J. Woeginger
1996 B conf
IPCO
Rainer E. Burkard, Vladimir G. Deineko, Gerhard J. Woeginger
1996 J jnl
Discret. Appl. Math.
Rainer E. Burkard, Rüdiger Rudolf, Gerhard J. Woeginger
1995 J jnl
Oper. Res. Lett.
Rainer E. Burkard
1995 J jnl
Computing
Rainer E. Burkard, Vladimir G. Deineko
1995 J jnl
Ann. Oper. Res.
Rainer E. Burkard, Toshihide Ibaraki, Maurice Queyranne
1995 J jnl
Ann. Oper. Res.
Rainer E. Burkard, Bernd Fruhwirth, Günter Rote
1993 J jnl
Discret. Appl. Math.
Rainer E. Burkard, En-Yu Yao
1993 conf
Quadratic Assignment and Related Problems
Rainer E. Burkard, Eranda Çela, Bettina Klinz
1993 J jnl
ZOR Methods Model. Oper. Res.
Rainer E. Burkard, Karin Dlaska, Bettina Klinz
1991 J jnl
ZOR Methods Model. Oper. Res.
Rainer E. Burkard, Ulrich Faigle
1991 J jnl
Discret. Appl. Math.
Rainer E. Burkard, W. Sandholzer
1991 J jnl
Oper. Res. Lett.
Rainer E. Burkard, Franz Rendl
1991 J jnl
J. Glob. Optim.
Phan Thien Thach, Rainer E. Burkard, Werner Oettli
1990 J jnl
ZOR Methods Model. Oper. Res.
Rainer E. Burkard
1990 J jnl
Discret. Appl. Math.
Rainer E. Burkard, En-Yu Yao
1990 J jnl
Computing
Rainer E. Burkard, Günter Rote, En-Yu Yao, Zhongliang Yu
1986 J jnl
Discret. Math.
Reinhardt Euler, Rainer E. Burkard, R. Grommes
1986 J jnl
Discret. Appl. Math.
Rainer E. Burkard
1985 J jnl
Z. Oper. Research
Franz Josef Radermacher, Thomas M. Liebling, Hansjörg Wacker, Siegfried Schaible, Rainer E. Burkard, A. Aigner, Raymond A. Cuninghame-Green
1985 J jnl
Discret. Appl. Math.
Rainer E. Burkard, Ulrich Fincke
1985 J jnl
Computing
Rainer E. Burkard
1983 J jnl
Z. Oper. Research
B. Nagels, B. Wobith, Mynt Zijlstra, Rainer E. Burkard, Hans Ziegler, Gustav Feichtinger
1983 J jnl
Z. Oper. Research
Rainer E. Burkard, Ulrich Fincke
1982 J jnl
Z. Oper. Research
P. van Beek, Peter Hammann, Rainer E. Burkard, Hans Ziegler, A. Bachem
1982 J jnl
Z. Oper. Research
Rainer E. Burkard, Horst W. Hamacher, Jørgen Tind
1982 J jnl
Math. Program.
Rainer E. Burkard, Ulrich Fincke
1981 J jnl
Comput. Oper. Res.
Rainer E. Burkard, Hans Keiding, Peter M. Pruzan, Jakob Krarup
1980 J jnl
J. Comb. Theory B
Rainer E. Burkard, Peter L. Hammer
1978 J jnl
Discret. Math.
Rainer E. Burkard
1978 J jnl
Z. Oper. Research
H. Helmut Merkel, H. Läpple, Peter Hammann, Heiner Müller-Merbach, Werner Krabs, Günter Fandel, Gert Dehnert, Rainer E. Burkard, B. Jahnke, R. Cremer, H. Sommer
1977 J jnl
Math. Program.
Rainer E. Burkard, Willi Hahn, Uwe Zimmermann
1977 J jnl
Math. Methods Oper. Res.
Rainer E. Burkard, Josef Offermann
1975 J jnl
Computing
Rainer E. Burkard, H. Enge
1975 J jnl
Z. Oper. Research
Helmuth Späth, Helmut Wegmann, K. Fallaschinski, F. Münnich, Rainer E. Burkard, Thomas M. Liebling, Wolfgang Bühler, Josef Heinhold, K. Eicher, H. Läpple
1975 J jnl
Z. Oper. Research
Rainer E. Burkard
1970 J jnl
Unternehmensforschung
Rainer E. Burkard
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)