Valeria De Antonellis

190 papers A* 2A 18B 6C 8Misc 1Journal 36Unranked 105
YearRankTypeTitle / Venue / Authors
2025 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori, Anisa Rula
2024 J jnl
Knowl. Inf. Syst.
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda
2024 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda
2024 conf
WISE (3)
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2024 conf
DEXA (2)
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2023 conf
ICEIS (1)
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2023 J jnl
Future Gener. Comput. Syst.
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda
2023 conf
SEBD
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2022 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda
2022 B conf
CoopIS
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda
2022 conf
SEBD
Silvana Castano, Valeria De Antonellis, Maria Grazia Fugini, Barbara Pernici
2021 conf
WISE (1)
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2021 conf
SEBD
Ada Bagozi, Devis Bianchini, Valeria De Antonellis
2021 J jnl
Data Sci. Eng.
Ada Bagozi, Devis Bianchini, Valeria De Antonellis
2021 J jnl
Inf. Sci.
Ada Bagozi, Devis Bianchini, Valeria De Antonellis
2021 conf
ISC2
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2020 conf
ISC2
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2020 conf
DEXA (2)
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2020 conf
WISE (1)
Ada Bagozi, Devis Bianchini, Valeria De Antonellis
2020 conf
WISE (2)
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Massimiliano Garda
2020 conf
SEBD
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2019 J jnl
Future Gener. Comput. Syst.
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Alessandro Marini
2019 conf
OTM Conferences
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2019 C conf
iiWAS
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2019 conf
OTM Conferences
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2019 A conf
ICWS
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2019 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2018 conf
OTM Conferences (1)
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Alessandro Marini
2018 J jnl
Enterp. Model. Inf. Syst. Archit.
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Alessandro Marini, Davide Ragazzi
2018 conf
WISE (2)
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Alessandro Marini
2018 conf
SEBD
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Alessandro Marini, Davide Ragazzi
2018 conf
OTM Conferences (1)
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2018 conf
WISE (2)
Devis Bianchini, Valeria De Antonellis, Massimiliano Garda, Michele Melchiori
2018 ch.
A Comprehensive Guide Through the Italian Database Research
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2017 conf
Conceptual Modeling Perspectives
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2017 conf
OTM Conferences (1)
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Alessandro Marini, Davide Ragazzi
2017 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2017 conf
IISSC/CN4IoT
Devis Bianchini, Valeria De Antonellis, Michele Melchiori, Paolo Bellagente, Stefano Rinaldi
2017 B conf
ICWE
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2017 A conf
ICWS
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Alessandro Marini, Davide Ragazzi
2017 J jnl
Comput. Stand. Interfaces
Devis Bianchini, Valeria De Antonellis, Nicola De Franceschi, Michele Melchiori
2017 A conf
CAiSE
Ada Bagozi, Devis Bianchini, Valeria De Antonellis, Alessandro Marini, Davide Ragazzi
2017 J jnl
ACM Trans. Web
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2016 conf
CAiSE Forum
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2016 A conf
ICWS
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2016 conf
OTM Conferences
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2016 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2016 J jnl
Int. J. Web Inf. Syst.
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2015 conf
ER Workshops
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2015 conf
WISE (2)
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2015 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2015 conf
DEXA (2)
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2015 C conf
iiWAS
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2015 B conf
ICWE
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2015 ed.
Trans. Large-Scale Data- and Knowledge-Centered Systems
Abdelkader Hameurlain, Josef Küng, Roland R. Wagner, Devis Bianchini, Valeria De Antonellis, Roberto De Virgilio
2014 conf
OTM Conferences
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2014 conf
DEXA (1)
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2014 conf
WISE (1)
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2014 J jnl
Trans. Large Scale Data Knowl. Centered Syst.
Devis Bianchini, Silvana Castano, Valeria De Antonellis, Alfio Ferrara, Elisa Quintarelli, Letizia Tanca
2014 J jnl
IEEE Trans. Serv. Comput.
Devis Bianchini, Cinzia Cappiello, Valeria De Antonellis, Barbara Pernici
2014 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2013 conf
DEXA Workshops
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2013 B conf
ICWE
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2013 A conf
CAiSE
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2013 conf
SSW@VLDB
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2013 C conf
iiWAS
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2013 conf
DEXA (2)
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2013 conf
OTM Conferences
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2013 conf
OTM Workshops
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2013 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2013 conf
ICWE Workshops
Valeria De Antonellis, Michele Melchiori
2012 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2012 conf
INVIT
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2012 ch.
Semantic Search over the Web
Devis Bianchini, Valeria De Antonellis
2012 B conf
ICWE
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2012 conf
DEXA Workshops
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2011 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2011 conf
DEXA Workshops
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2011 conf
SIMPDA
Francesco Arigliano, Devis Bianchini, Cinzia Cappiello, Angelo Corallo, Paolo Ceravolo, Ernesto Damiani, Valeria De Antonellis, Barbara Pernici, Pierluigi Plebani, Davide Storelli, Claudia Vicari
2011 ed.
EDBT/ICDT Workshop on Linked Web Data Management
Roberto De Virgilio, Devis Bianchini, Valeria De Antonellis, Kjell Orsborn, Silvia Stefanova
2011 conf
ER Workshops
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2011 C conf
IDEAS
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2011 J jnl
J. Intell. Inf. Syst.
Stefano Montanelli, Devis Bianchini, Carola Aiello, Roberto Baldoni, Cristiana Bolchini, Silvia Bonomi, Silvana Castano, Tiziana Catarci, Valeria De Antonellis, Alfio Ferrara, Michele Melchiori, Elisa Quintarelli, Monica Scannapieco, Fabio Alberto Schreiber, Letizia Tanca
2011 conf
INVIT
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2010 conf
DEXA Workshops
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2010 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2010 conf
INVIT
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2010 J jnl
World Wide Web
Devis Bianchini, Stefano Montanelli, Carola Aiello, Roberto Baldoni, Cristiana Bolchini, Silvia Bonomi, Silvana Castano, Tiziana Catarci, Valeria De Antonellis, Alfio Ferrara, Michele Melchiori, Elisa Quintarelli, Monica Scannapieco, Fabio Alberto Schreiber, Letizia Tanca
2010 J jnl
Int. J. Metadata Semant. Ontologies
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2010 C conf
iiWAS
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2009 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2009 A conf
CAiSE
Devis Bianchini, Cinzia Cappiello, Valeria De Antonellis, Barbara Pernici
2009 ed.
SEBD
Valeria De Antonellis, Silvana Castano, Barbara Catania, Giovanna Guerrini
2009 conf
RED
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2009 conf
ER Workshops
Devis Bianchini, Cinzia Cappiello, Valeria De Antonellis, Barbara Pernici
2009 ch.
Semantic Web Information Management
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2009 conf
ECOWS
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2008 B conf
WISE
Devis Bianchini, Valeria De Antonellis, Michele Melchiori, Denise Salvi
2008 J jnl
World Wide Web
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2008 conf
The Evolution of Conceptual Modeling
Valeria De Antonellis
2008 C conf
iiWAS
Devis Bianchini, Valeria De Antonellis, Michele Melchiori, Denise Salvi
2008 C conf
WETICE
Devis Bianchini, Valeria De Antonellis, Michele Melchiori, Denise Salvi
2008 conf
The Evolution of Conceptual Modeling
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2008 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Michele Melchiori, Denise Salvi
2007 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Michele Melchiori, Denise Salvi
2006 J jnl
Softw. Pract. Exp.
Valeria De Antonellis, Michele Melchiori, Luca De Santis, Massimo Mecella, Enrico Mussi, Barbara Pernici, Pierluigi Plebani
2006 conf
I-ESA
Devis Bianchini, Silvana Castano, Fulvio D'Antonio, Valeria De Antonellis, Mounira Harzallah, Jérôme David, Michele Missikoff, Stefano Montanelli
2006 conf
EMOI-INTEROP
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2006 Misc conf
SAC
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2006 conf
DEXA Workshops
Devis Bianchini, Valeria De Antonellis, Michele Melchiori, Denise Salvi
2006 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2006 J jnl
Inf. Syst.
Devis Bianchini, Valeria De Antonellis, Barbara Pernici, Pierluigi Plebani
2006 ed.
SEBD
Valeria De Antonellis, Claudia Diamantini, Paolo Tiberio
2006 conf
ICDE Workshops
Devis Bianchini, Valeria De Antonellis, Michele Melchiori, Denise Salvi
2005 conf
DEXA Workshops
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2005 conf
EMOI-INTEROP
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2005 conf
SEBD
Devis Bianchini, Valeria De Antonellis, Barbara Pernici, Pierluigi Plebani
2004 conf
CAiSE Workshops (3)
Valeria De Antonellis, Michele Melchiori, Devis Bianchini
2004 conf
CAiSE Workshops (3)
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2004 conf
DIWeb
Devis Bianchini, Valeria De Antonellis
2004 conf
DEXA Workshops
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2003 A conf
CAiSE
Valeria De Antonellis, Michele Melchiori, Barbara Pernici, Pierluigi Plebani
2003 conf
SAINT Workshops
Valeria De Antonellis, Michele Melchiori, Pierluigi Plebani
2003 conf
TES
Luciano Baresi, Devis Bianchini, Valeria De Antonellis, Maria Grazia Fugini, Barbara Pernici, Pierluigi Plebani
2003 conf
DEXA Workshops
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2003 conf
WISE Workshops
Devis Bianchini, Valeria De Antonellis, Michele Melchiori
2003 conf
SEBD
Enzo Colombo, Valeria De Antonellis, Fabio De Rosa, Luca De Santis, Massimo Mecella, Michele Melchiori, Enrico Mussi, Barbara Pernici, Pierluigi Plebani
2002 conf
DEXA Workshops
Silvana Castano, Alfio Ferrara, G. S. Kuruvilla Ottathycal, Valeria De Antonellis
2002 J jnl
IEEE Data Eng. Bull.
Enzo Colombo, Chiara Francalanci, Barbara Pernici, Pierluigi Plebani, Massimo Mecella, Valeria De Antonellis, Michele Melchiori
2002 conf
SEBD
Silvana Castano, Valeria De Antonellis, Alfio Ferrara, G. S. Kuruvilla Ottathycal
2002 conf
OOIS Workshops
Domenico Beneventano, Sonia Bergamaschi, Silvana Castano, Valeria De Antonellis, Alfio Ferrara, Francesco Guerra, Federica Mandreoli, Giorgio Carlo Ornetti, Maurizio Vincini
2002 conf
DEXA Workshops
Silvana Castano, Valeria De Antonellis, Sabrina De Capitani di Vimercati, Michele Melchiori
2001 conf
SEBD
Silvana Castano, Valeria De Antonellis, Sabrina De Capitani di Vimercati
2001 J jnl
Ingénierie des Systèmes d Inf.
Silvana Castano, Valeria De Antonellis, Sabrina De Capitani di Vimercati, Michele Melchiori
2001 conf
DS-9
Silvana Castano, Valeria De Antonellis, Sabrina De Capitani di Vimercati
2001 conf
DEXA Workshop
Silvana Castano, Valeria De Antonellis, Sabrina De Capitani di Vimercati, Michele Melchiori
2001 J jnl
IEEE Trans. Knowl. Data Eng.
Silvana Castano, Valeria De Antonellis, Sabrina De Capitani di Vimercati
2000 conf
SEBD
Silvana Castano, Valeria De Antonellis, Sabrina De Capitani di Vimercati, Michele Melchiori
2000 conf
DEXA Workshop
Silvana Castano, Valeria De Antonellis, Maria Grazia Fugini, Fabrizio Maio
1999 J jnl
Distributed Parallel Databases
Silvana Castano, Valeria De Antonellis
1999 conf
DEXA Workshop
Giovanni Bianco, Valeria De Antonellis, Silvana Castano, Michele Melchiori
1999 J jnl
Data Knowl. Eng.
Silvana Castano, Valeria De Antonellis, Michele Melchiori
1999 C conf
IDEAS
Silvana Castano, Valeria De Antonellis
1999 conf
SEBD
Silvana Castano, Valeria De Antonellis
1999 A conf
ER
Silvana Castano, Valeria De Antonellis
1998 J jnl
Inf. Syst.
Silvana Castano, Valeria De Antonellis
1998 A conf
ER
Silvana Castano, Valeria De Antonellis, Michele Melchiori
1998 J jnl
ACM Trans. Database Syst.
Silvana Castano, Valeria De Antonellis, Maria Grazia Fugini, Barbara Pernici
1998 conf
SEBD
Silvana Castano, Valeria De Antonellis, Sabrina De Capitani di Vimercati, Michele Melchiori
1997 A conf
CAiSE
Silvana Castano, Valeria De Antonellis
1997 conf
Conceptual Modeling
Silvana Castano, Valeria De Antonellis
1997 J jnl
Inf. Softw. Technol.
Silvana Castano, Valeria De Antonellis
1997 A* conf
ICDE
Silvana Castano, Valeria De Antonellis
1996 J jnl
Requir. Eng.
Carlo Batini, Silvana Castano, Valeria De Antonellis, Maria Grazia Fugini, Barbara Pernici
1996 A conf
CAiSE
Silvana Castano, Valeria De Antonellis
1995 conf
SSR
Silvana Castano, Valeria De Antonellis, Barbara Pernici
1995 conf
OOER
Silvana Castano, Valeria De Antonellis
1995 J jnl
Int. J. Cooperative Inf. Syst.
Silvana Castano, Valeria De Antonellis
1995 J jnl
Data Knowl. Eng.
Valeria De Antonellis, Barbara Pernici
1995 conf
SEBD
Silvana Castano, Valeria De Antonellis, Maria Grazia Fugini, Barbara Pernici
1994 J jnl
Inf. Syst.
Valeria De Antonellis, Silvana Castano, Lorenzo Vandoni
1994 conf
ICRE
Janis A. Bubenko Jr., Colette Rolland, Pericles Loucopoulos, Valeria De Antonellis
1994 conf
Methods and Associated Tools for the Information Systems Life Cycle
Silvana Castano, Valeria De Antonellis, Chiara Francalanci, Barbara Pernici
1994 conf
ISOOMS
Silvana Castano, Valeria De Antonellis
1994 A conf
ER
Silvana Castano, Valeria De Antonellis
1994 J jnl
ACM SIGSOFT Softw. Eng. Notes
Silvana Castano, Valeria De Antonellis
1993 conf
IWSR
Silvana Castano, Valeria De Antonellis
1993 book
Relational Database Theory
Paolo Atzeni, Valeria De Antonellis
1993 A conf
ER
Silvana Castano, Valeria De Antonellis, Pierluigi San Pietro
1993 A conf
RE
Silvana Castano, Valeria De Antonellis
1993 conf
Information System Development Process
Silvana Castano, Valeria De Antonellis
1993 A conf
CAiSE
Valeria De Antonellis, Lorenzo Vandoni
1992 A conf
ER
Silvana Castano, Valeria De Antonellis, Bruna Zonta
1991 conf
DMIS
David W. Conrath, Valeria De Antonellis, Carla Simone
1991 conf
DMIS
Valeria De Antonellis, Barbara Pernici, Pierangela Samarati
1990 J jnl
IEEE Trans. Software Eng.
Valeria De Antonellis, Bruna Zonta
1988 A conf
ER
Yannis Vassiliou, Valeria De Antonellis, Klaus R. Dittrich, Michael V. Mannino, Shamkant B. Navathe
1985 ch.
Computer-Aided Database Design: the DATAID approach
Valeria De Antonellis, Bruna Zonta
1985 J jnl
Inf. Syst.
Valeria De Antonellis, Antonio Di Leva
1985 book
Antonio Albano, Valeria De Antonellis, Antonio Di Leva
1985 ch.
Computer-Aided Database Design: the DATAID approach
Antonio Albano, Valeria De Antonellis, Antonio Di Leva
1985 J jnl
Inf. Syst.
Valeria De Antonellis, Antonio Di Leva
1984 J jnl
IEEE Database Eng. Bull.
Valeria De Antonellis, Bruna Zonta
1984 J jnl
IEEE Database Eng. Bull.
Carlo Batini, Valeria De Antonellis, Antonio Di Leva
1983 ch.
Methodology and Tools for Data Base Design
Paolo Atzeni, Carlo Batini, Enzo Carboni, Valeria De Antonellis, Maurizio Lenzerini, Fulvio Villanelli, Bruna Zonta
1983 ch.
Methodology and Tools for Data Base Design
Valeria De Antonellis, G. Barbara Demo
1983 ch.
Methodology and Tools for Data Base Design
U. Bussolati, Stefano Ceri, Valeria De Antonellis, Bruna Zonta
1981 A* conf
VLDB
Valeria De Antonellis, Bruna Zonta
1979 A conf
ER
Valeria De Antonellis, G. Degli Antoni, Giancarlo Mauri, Bruna Zonta
1979 J jnl
Inf. Syst.
Valeria De Antonellis, Fiorella de Cindio, G. Degli Antoni, Giancarlo Mauri
tests/integration/test_pe_extractors.py
← Index tests/integration/test_pe_extractors.py python
"""
Integration tests for PE-specific extractors.
"""
import pytest
from unittest.mock import Mock, patch, MagicMock

pytestmark = [pytest.mark.integration, pytest.mark.pe]


# ============================================================================
# PEFeaturesExtractor Tests
# ============================================================================

class TestPEFeaturesExtractor:
    """Tests for PEFeaturesExtractor class."""

    def test_extract_valid_pe(self, pe_binary_path, mock_logger):
        """Test extracting features from valid PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor
        from redb.models.dataclasses import PE

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            assert result is not None
            assert isinstance(result, PE)

    def test_extract_pe_type(self, pe_binary_path, mock_logger):
        """Test PE type detection (DLL, EXE, DRIVER)."""
        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 None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            assert result.type in ["DLL", "EXE", "DRIVER"]

    def test_extract_architecture(self, pe_binary_path, mock_logger):
        """Test architecture detection."""
        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 None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # Architecture should be detected
            assert result.architecture is not None

    def test_extract_entry_point(self, pe_binary_path, mock_logger):
        """Test entry point extraction."""
        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 None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # Entry point should be a hex string
            assert result.entry_point.startswith("0x")

    def test_extract_compilation_time(self, pe_binary_path, mock_logger):
        """Test compilation time extraction."""
        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 None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # Compilation time should be an integer timestamp
            assert isinstance(result.compilation_time, int)
            assert result.compilation_time_utc is not None

    def test_extract_dotnet_detection(self, pe_binary_path, mock_logger):
        """Test .NET detection."""
        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 None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # Should be True for the test .NET binary
            assert isinstance(result.is_dotnet, bool)
            assert result.is_dotnet is True  # Test file is .NET

    def test_extract_headers(self, pe_binary_path, mock_logger):
        """Test header extraction."""
        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 None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            assert result.dos_header is not None
            assert result.nt_header is not None
            assert result.file_header is not None
            assert result.optional_header is not None

    def test_extract_counts(self, pe_binary_path, mock_logger):
        """Test section/import/export counts."""
        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 None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            assert isinstance(result.number_of_sections, int)
            assert isinstance(result.number_of_imports, int)
            assert isinstance(result.number_of_exports, int)
            assert isinstance(result.number_of_resources, int)

    def test_extract_rich_header(self, pe_binary_path, mock_logger):
        """Test Rich header extraction."""
        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 None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # Rich header may or may not be present
            # If present, should be JSON string
            if result.rich_header_dump is not None:
                assert isinstance(result.rich_header_dump, str)

    def test_extract_version_info(self, pe_binary_path, mock_logger):
        """Test version info extraction."""
        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 None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # Version info may or may not be present
            if result.version_info is not None:
                assert isinstance(result.version_info, list)


# ============================================================================
# PEImportExtractor Tests
# ============================================================================

class TestPEImportExtractor:
    """Tests for PEImportExtractor class."""

    def test_extract_imports(self, pe_binary_path, mock_logger):
        """Test import extraction."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor
        from redb.models.dataclasses import PEImport

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            if result is not None:
                assert isinstance(result, PEImport)
                assert isinstance(result.pe_imports_total, int)

    def test_extract_import_libraries(self, pe_binary_path, mock_logger):
        """Test import library extraction."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            if result is not None and result.pe_import_libraryName is not None:
                assert isinstance(result.pe_import_libraryName, list)

    def test_extract_import_functions(self, pe_binary_path, mock_logger):
        """Test import function extraction."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            if result is not None and result.pe_import_functions is not None:
                assert isinstance(result.pe_import_functions, list)

    def test_prepare_export_clickhouse(self, pe_binary_path, mock_logger):
        """Test ClickHouse export preparation."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.prepare_export_data("ClickHouseExporter")

            if result is not None:
                data, column_names, column_type_names = result
                assert 'library_name' in column_names
                assert 'function_name' in column_names


# ============================================================================
# PESectionExtractor Tests
# ============================================================================

class TestPESectionExtractor:
    """Tests for PESectionExtractor class."""

    def test_extract_sections(self, pe_binary_path, mock_logger):
        """Test section extraction."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor
        from redb.models.dataclasses import PESection

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            assert result is not None
            assert isinstance(result, list)
            assert len(result) > 0
            assert isinstance(result[0], PESection)

    def test_section_properties(self, pe_binary_path, mock_logger):
        """Test section property extraction."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            if result is not None and len(result) > 0:
                section = result[0]
                assert section.section_name is not None
                assert section.section_entropy >= 0
                assert section.section_sha256 is not None
                assert section.section_md5 is not None
                assert section.section_size >= 0

    def test_section_entropy_range(self, pe_binary_path, mock_logger):
        """Test that section entropy is in valid range."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            if result is not None:
                for section in result:
                    assert 0 <= section.section_entropy <= 8

    def test_prepare_export_clickhouse(self, pe_binary_path, mock_logger):
        """Test ClickHouse export preparation."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.prepare_export_data("ClickHouseExporter")

            if result is not None:
                data, column_names, column_type_names = result
                assert 'section_name' in column_names
                assert 'section_entropy' in column_names
                assert 'section_sha256' in column_names


# ============================================================================
# PEResourceExtractor Tests
# ============================================================================

class TestPEResourceExtractor:
    """Tests for PEResourceExtractor class."""

    def test_extract_resources(self, pe_binary_path, mock_logger):
        """Test resource extraction."""
        from redb.extractors.pe_extractors.pe_resources import PEResourceExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEResourceExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # May be None if no resources
            if result is not None:
                assert isinstance(result, list)

    def test_resource_properties(self, pe_binary_path, mock_logger):
        """Test resource property extraction."""
        from redb.extractors.pe_extractors.pe_resources import PEResourceExtractor
        from redb.models.dataclasses import PEResource

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEResourceExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            if result is not None and len(result) > 0:
                resource = result[0]
                assert isinstance(resource, PEResource)
                assert resource.resource_type is not None


# ============================================================================
# PEOverlayExtractor Tests
# ============================================================================

class TestPEOverlayExtractor:
    """Tests for PEOverlayExtractor class."""

    def test_extract_overlay(self, pe_binary_path, mock_logger):
        """Test overlay extraction."""
        from redb.extractors.pe_extractors.pe_overlay import PEOverlayExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEOverlayExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # May be None if no overlay
            # If present, should have overlay properties
            if result is not None:
                assert hasattr(result, 'overlay_size')

    def test_has_overlay_check(self, pe_binary_path, mock_logger):
        """Test overlay detection."""
        from redb.extractors.pe_extractors.pe_overlay import PEOverlayExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEOverlayExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            has_overlay = extractor._has_overlay()
            assert isinstance(has_overlay, bool)


# ============================================================================
# PESignatureExtractor Tests
# ============================================================================

class TestPESignatureExtractor:
    """Tests for PESignatureExtractor class."""

    def test_extract_signature(self, pe_binary_path, mock_logger):
        """Test signature extraction."""
        from redb.extractors.pe_extractors.pe_signature import PESignatureExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESignatureExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # May be None if not signed
            # Result type depends on implementation

    def test_is_signed_check(self, pe_binary_path, mock_logger):
        """Test signature detection."""
        from redb.extractors.pe_extractors.pe_signature import PESignatureExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESignatureExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            is_signed = extractor._is_signed()
            assert isinstance(is_signed, bool)


# ============================================================================
# PEDotNetExtractor Tests
# ============================================================================

class TestPEDotNetExtractor:
    """Tests for PEDotNetExtractor class."""

    def test_extract_dotnet(self, pe_binary_path, mock_logger):
        """Test .NET metadata extraction."""
        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 None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # The test file is a .NET binary
            if extractor._check_dotnet():
                assert result is not None

    def test_check_dotnet(self, pe_binary_path, mock_logger):
        """Test .NET detection."""
        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 None:
                pytest.skip("PE parsing failed")

            is_dotnet = extractor._check_dotnet()
            assert isinstance(is_dotnet, bool)
            # Test file should be .NET
            assert is_dotnet is True


# ============================================================================
# PEInconsistencyTestsExtractor Tests
# ============================================================================

class TestPEInconsistencyTestsExtractor:
    """Tests for PEInconsistencyTestsExtractor class."""

    def test_extract_inconsistency_tests(self, pe_binary_path, mock_logger):
        """Test inconsistency tests extraction."""
        from redb.extractors.pe_extractors.pe_inconsistency_tests import PEInconstistencyTestsExtractor as PEInconsistencyTestsExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEInconsistencyTestsExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # extract() returns True if tests were performed, False otherwise
            # The actual test results are stored in extractor.pe_inconsistency_tests
            # and extractor.dotnet_inconsistency_tests
            assert result in (True, False)

            if result:
                # Check that test results were stored
                assert extractor.pe_inconsistency_tests is not None or extractor.dotnet_inconsistency_tests is not None


# ============================================================================
# PEExtraFindings Tests
# ============================================================================

class TestPEExtraFindings:
    """Tests for PEExtraFindings class."""

    def test_extract_extra_findings(self, pe_binary_path, mock_logger):
        """Test extra findings extraction."""
        from redb.extractors.pe_extractors.pe_extra_findings import PEExtraFindings

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEExtraFindings(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # May return None or list of findings
            if result is not None:
                assert isinstance(result, list)


# ============================================================================
# Integration Tests
# ============================================================================

class TestPEExtractorIntegration:
    """Integration tests for PE extractors."""

    def test_all_extractors_same_pe_object(self, pe_binary_path, mock_logger, pe_object):
        """Test that extractors can share the same PE object."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            # Create extractors sharing the same PE object
            features_ext = PEFeaturesExtractor(pe_binary_path, mock_logger, pe=pe_object)
            imports_ext = PEImportExtractor(pe_binary_path, mock_logger, pe=pe_object)
            sections_ext = PESectionExtractor(pe_binary_path, mock_logger, pe=pe_object)

            # All should use the same PE object
            assert features_ext.pe is pe_object
            assert imports_ext.pe is pe_object
            assert sections_ext.pe is pe_object

            # All should extract successfully
            features_result = features_ext.extract()
            imports_result = imports_ext.extract()
            sections_result = sections_ext.extract()

            assert features_result is not None
            # imports and sections may be None if not present

    def test_hash_consistency_across_extractors(self, pe_binary_path, mock_logger):
        """Test that hashes are consistent across all extractors."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            features_ext = PEFeaturesExtractor(pe_binary_path, mock_logger)
            imports_ext = PEImportExtractor(pe_binary_path, mock_logger)

            # Hashes should be the same
            assert features_ext.sha256 == imports_ext.sha256
            assert features_ext.md5 == imports_ext.md5
            assert features_ext.sha1 == imports_ext.sha1