J. Andrew Bagnell

166 papers A* 41A 14C 1Misc 1Journal 82Unranked 24
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Yuda Song, Lili Chen, Fahim Tajwar, Rémi Munos, Deepak Pathak, J. Andrew Bagnell, Aarti Singh, Andrea Zanette
2025 J jnl
CoRR
Gokul Swamy, Sanjiban Choudhury, Wen Sun, Zhiwei Steven Wu, J. Andrew Bagnell
2025 J jnl
CoRR
Yuda Song, Dhruv Rohatgi, Aarti Singh, J. Andrew Bagnell
2024 J jnl
CoRR
Juntao Ren, Gokul Swamy, Zhiwei Steven Wu, J. Andrew Bagnell, Sanjiban Choudhury
2024 J jnl
CoRR
Yuda Song, J. Andrew Bagnell, Aarti Singh
2024 J jnl
CoRR
Zhaolin Gao, Jonathan D. Chang, Wenhao Zhan, Owen Oertell, Gokul Swamy, Kianté Brantley, Thorsten Joachims, J. Andrew Bagnell, Jason D. Lee, Wen Sun
2024 A* conf
NeurIPS
Yuda Song, Gokul Swamy, Aarti Singh, J. Andrew Bagnell, Wen Sun
2024 J jnl
CoRR
Yuda Song, Gokul Swamy, Aarti Singh, J. Andrew Bagnell, Wen Sun
2023 J jnl
CoRR
Gokul Swamy, Sanjiban Choudhury, J. Andrew Bagnell, Zhiwei Steven Wu
2023 J jnl
CoRR
Anirudh Vemula, Yuda Song, Aarti Singh, J. Andrew Bagnell, Sanjiban Choudhury
2022 J jnl
CoRR
Gokul Swamy, Sanjiban Choudhury, J. Andrew Bagnell, Zhiwei Steven Wu
2022 J jnl
CoRR
Gokul Swamy, Sanjiban Choudhury, J. Andrew Bagnell, Zhiwei Steven Wu
2022 J jnl
CoRR
Yuda Song, Yifei Zhou, Ayush Sekhari, J. Andrew Bagnell, Akshay Krishnamurthy, Wen Sun
2022 A* conf
NeurIPS
Gokul Swamy, Nived Rajaraman, Matthew Peng, Sanjiban Choudhury, J. Andrew Bagnell, Steven Wu, Jiantao Jiao, Kannan Ramchandran
2022 J jnl
CoRR
Gokul Swamy, Nived Rajaraman, Matthew Peng, Sanjiban Choudhury, J. Andrew Bagnell, Zhiwei Steven Wu, Jiantao Jiao, Kannan Ramchandran
2022 conf
L4DC
Anirudh Vemula, Wen Sun, Maxim Likhachev, J. Andrew Bagnell
2022 A* conf
NeurIPS
Gokul Swamy, Sanjiban Choudhury, J. Andrew Bagnell, Zhiwei Steven Wu
2022 J jnl
CoRR
Gokul Swamy, Sanjiban Choudhury, J. Andrew Bagnell, Zhiwei Steven Wu
2021 J jnl
CoRR
Gokul Swamy, Sanjiban Choudhury, J. Andrew Bagnell, Zhiwei Steven Wu
2021 A* conf
AAAI
Anirudh Vemula, J. Andrew Bagnell, Maxim Likhachev
2021 J jnl
CoRR
Jonathan C. Spencer, Sanjiban Choudhury, Arun Venkatraman, Brian D. Ziebart, J. Andrew Bagnell
2021 A* conf
ICML
Gokul Swamy, Sanjiban Choudhury, J. Andrew Bagnell, Steven Wu
2021 J jnl
CoRR
Gokul Swamy, Sanjiban Choudhury, Zhiwei Steven Wu, J. Andrew Bagnell
2021 J jnl
CoRR
Anirudh Vemula, Wen Sun, Maxim Likhachev, J. Andrew Bagnell
2020 J jnl
CoRR
Anirudh Vemula, J. Andrew Bagnell, Maxim Likhachev
2020 J jnl
CoRR
Anirudh Vemula, Wen Sun, J. Andrew Bagnell
2020 conf
Robotics: Science and Systems
Anirudh Vemula, Yash Oza, J. Andrew Bagnell, Maxim Likhachev
2020 J jnl
CoRR
Anirudh Vemula, Yash Oza, J. Andrew Bagnell, Maxim Likhachev
2020 J jnl
CoRR
Anirudh Vemula, J. Andrew Bagnell
2020 conf
CDC
Anirudh Vemula, J. Andrew Bagnell
2019 A conf
AISTATS
Anirudh Vemula, Wen Sun, J. Andrew Bagnell
2019 J jnl
CoRR
Anirudh Vemula, Wen Sun, J. Andrew Bagnell
2019 A* conf
AAAI
Hanzhang Hu, Debadeepta Dey, Martial Hebert, J. Andrew Bagnell
2019 J jnl
CoRR
Wen Sun, Anirudh Vemula, Byron Boots, J. Andrew Bagnell
2018 J jnl
CoRR
Takayuki Osa, Joni Pajarinen, Gerhard Neumann, J. Andrew Bagnell, Pieter Abbeel, Jan Peters
2018 J jnl
Found. Trends Robotics
Takayuki Osa, Joni Pajarinen, Gerhard Neumann, J. Andrew Bagnell, Pieter Abbeel, Jan Peters
2018 A* conf
NeurIPS
Wen Sun, Geoffrey J. Gordon, Byron Boots, J. Andrew Bagnell
2018 J jnl
CoRR
Wen Sun, Geoffrey J. Gordon, Byron Boots, J. Andrew Bagnell
2018 J jnl
Int. J. Robotics Res.
Shervin Javdani, Henny Admoni, Stefania Pellegrinelli, Siddhartha S. Srinivasa, J. Andrew Bagnell
2018 J jnl
CoRR
Wen Sun, J. Andrew Bagnell, Byron Boots
2018 conf
ICLR (Poster)
Wen Sun, J. Andrew Bagnell, Byron Boots
2017 J jnl
CoRR
Jiaji Zhou, J. Andrew Bagnell, Matthew T. Mason
2017 J jnl
IEEE Robotics Autom. Lett.
Jiaji Zhou, Robert Paolini, Aaron M. Johnson, J. Andrew Bagnell, Matthew T. Mason
2017 J jnl
CoRR
Hanzhang Hu, Debadeepta Dey, J. Andrew Bagnell, Martial Hebert
2017 J jnl
Auton. Robots
Katharina Mülling, Arun Venkatraman, Jean-Sebastien Valois, John Downey, Jeffrey M. Weiss, Shervin Javdani, Martial Hebert, Andrew B. Schwartz, Jennifer L. Collinger, J. Andrew Bagnell
2017 A* conf
ICML
Wen Sun, Arun Venkatraman, Geoffrey J. Gordon, Byron Boots, J. Andrew Bagnell
2017 J jnl
CoRR
Wen Sun, Arun Venkatraman, Geoffrey J. Gordon, Byron Boots, J. Andrew Bagnell
2017 A conf
AISTATS
Hanzhang Hu, Wen Sun, Arun Venkatraman, Martial Hebert, J. Andrew Bagnell
2017 J jnl
CoRR
Hanzhang Hu, Wen Sun, Arun Venkatraman, Martial Hebert, J. Andrew Bagnell
2017 J jnl
CoRR
Allison Del Giorno, J. Andrew Bagnell, Martial Hebert
2017 J jnl
CoRR
Hanzhang Hu, Debadeepta Dey, Allison Del Giorno, Martial Hebert, J. Andrew Bagnell
2017 ch.
Encyclopedia of Machine Learning and Data Mining
Jan Peters, J. Andrew Bagnell
2017 J jnl
CoRR
Arun Venkatraman, Nicholas Rhinehart, Wen Sun, Lerrel Pinto, Martial Hebert, Byron Boots, Kris M. Kitani, J. Andrew Bagnell
2017 J jnl
CoRR
Shervin Javdani, Henny Admoni, Stefania Pellegrinelli, Siddhartha S. Srinivasa, J. Andrew Bagnell
2016 J jnl
CoRR
Jiaji Zhou, Robert Paolini, J. Andrew Bagnell, Matthew T. Mason
2016 conf
ECCV (5)
Allison Del Giorno, J. Andrew Bagnell, Martial Hebert
2016 J jnl
CoRR
Allison Del Giorno, J. Andrew Bagnell, Martial Hebert
2016 A* conf
ICRA
Jiaji Zhou, Robert Paolini, J. Andrew Bagnell, Matthew T. Mason
2016 A conf
UAI
Hanzhang Hu, Alexander Grubb, J. Andrew Bagnell, Martial Hebert
2016 conf
ISER
Arun Venkatraman, Roberto Capobianco, Lerrel Pinto, Martial Hebert, Daniele Nardi, J. Andrew Bagnell
2016 A* conf
IJCAI
Arun Venkatraman, Wen Sun, Martial Hebert, Byron Boots, J. Andrew Bagnell
2016 J jnl
CoRR
Shreyansh Daftry, Sam Zeng, J. Andrew Bagnell, Martial Hebert
2016 A conf
IROS
Shreyansh Daftry, Sam Zeng, J. Andrew Bagnell, Martial Hebert
2016 conf
ISER
Shreyansh Daftry, J. Andrew Bagnell, Martial Hebert
2016 J jnl
CoRR
Shreyansh Daftry, J. Andrew Bagnell, Martial Hebert
2016 A* conf
ICML
Wen Sun, Arun Venkatraman, Byron Boots, J. Andrew Bagnell
2016 A conf
UAI
Wen Sun, Roberto Capobianco, Geoffrey J. Gordon, J. Andrew Bagnell, Byron Boots
2016 A* conf
IJCAI
Wen Sun, J. Andrew Bagnell
2016 A* conf
AAAI
Arun Venkatraman, Wen Sun, Martial Hebert, J. Andrew Bagnell, Byron Boots
2016 ch.
Springer Handbook of Robotics, 2nd Ed.
Jan Peters, Daniel D. Lee, Jens Kober, Duy Nguyen-Tuong, J. Andrew Bagnell, Stefan Schaal
2016 J jnl
CoRR
Shreyansh Daftry, Sam Zeng, Arbaaz Khan, Debadeepta Dey, Narek Melik-Barkhudarov, J. Andrew Bagnell, Martial Hebert
2015 conf
Robotics: Science and Systems
Katharina Mülling, Arun Venkatraman, Jean-Sebastien Valois, John Downey, Jeffrey M. Weiss, Shervin Javdani, Martial Hebert, Andrew B. Schwartz, Jennifer L. Collinger, J. Andrew Bagnell
2015 J jnl
CoRR
Katharina Mülling, Arun Venkatraman, Jean-Sebastien Valois, John Downey, Jeffrey M. Weiss, Shervin Javdani, Martial Hebert, Andrew B. Schwartz, Jennifer L. Collinger, J. Andrew Bagnell
2015 J jnl
J. Field Robotics
Anthony Stentz, Herman Herman, Alonzo Kelly, Eric Meyhofer, G. Clark Haynes, David Stager, Brian Zajac, J. Andrew Bagnell, Jordan Brindza, Christopher M. Dellin, Michael David George, Jose Gonzalez-Mora, Sean Hyde, Morgan Jones, Michel Laverne, Maxim Likhachev, Levi Lister, Matthew Powers, Oscar E. Ramos, Justin Ray, David Rice, Justin Scheifflee, Raumi Sidki, Siddhartha S. Srinivasa, Kyle Strabala, Jean-Philippe Tardif, Jean-Sebastien Valois, Michael Vande Weghe, Michael Wagner, Carl Wellington
2015 A* conf
AAAI
Arun Venkatraman, Martial Hebert, J. Andrew Bagnell
2015 J jnl
CoRR
Wen Sun, Arun Venkatraman, Byron Boots, J. Andrew Bagnell
2015 A* conf
ICRA
Anca D. Dragan, Katharina Mülling, J. Andrew Bagnell, Siddhartha S. Srinivasa
2015 A conf
UAI
Wen Sun, J. Andrew Bagnell
2015 A* conf
ICCV
Debadeepta Dey, Varun Ramakrishna, Martial Hebert, J. Andrew Bagnell
2015 conf
Robotics: Science and Systems
Shervin Javdani, Siddhartha S. Srinivasa, J. Andrew Bagnell
2015 J jnl
CoRR
Shervin Javdani, J. Andrew Bagnell, Siddhartha S. Srinivasa
2015 A* conf
AAAI
Yuxin Chen, Shervin Javdani, Amin Karbasi, J. Andrew Bagnell, Siddhartha S. Srinivasa, Andreas Krause
2015 conf
Robotics: Science and Systems
Sanjiban Choudhury, Sebastian A. Scherer, J. Andrew Bagnell
2015 conf
FSR
Debadeepta Dey, Kumar Shaurya Shankar, Sam Zeng, Rupesh Mehta, M. Talha Agcayazi, Christopher Eriksen, Shreyansh Daftry, Martial Hebert, J. Andrew Bagnell
2015 A* conf
ICRA
Nicholas Rhinehart, Jiaji Zhou, Martial Hebert, J. Andrew Bagnell
2014 J jnl
CoRR
Kevin Waugh, J. Andrew Bagnell
2014 J jnl
CoRR
Hanzhang Hu, Alexander Grubb, J. Andrew Bagnell, Martial Hebert
2014 J jnl
Auton. Robots
Moslem Kazemi, Jean-Sebastien Valois, J. Andrew Bagnell, Nancy S. Pollard
2014 J jnl
CoRR
Shervin Javdani, Yuxin Chen, Amin Karbasi, Andreas Krause, J. Andrew Bagnell, Siddhartha S. Srinivasa
2014 J jnl
Auton. Robots
Dov Katz, Arun Venkatraman, Moslem Kazemi, J. Andrew Bagnell, Anthony Stentz
2014 J jnl
CoRR
Stéphane Ross, J. Andrew Bagnell
2014 J jnl
CoRR
Kevin Waugh, Dustin Morrill, J. Andrew Bagnell, Michael Bowling
2014 J jnl
CoRR
Debadeepta Dey, Kumar Shaurya Shankar, Sam Zeng, Rupesh Mehta, M. Talha Agcayazi, Christopher Eriksen, Shreyansh Daftry, Martial Hebert, J. Andrew Bagnell
2014 J jnl
CoRR
Nicholas Rhinehart, Jiaji Zhou, Martial Hebert, J. Andrew Bagnell
2013 J jnl
Int. J. Robotics Res.
Matthew Zucker, Nathan D. Ratliff, Anca D. Dragan, Mihail Pivtoraiko, Matthew Klingensmith, Christopher M. Dellin, J. Andrew Bagnell, Siddhartha S. Srinivasa
2013 A* conf
ICRA
Dov Katz, Moslem Kazemi, J. Andrew Bagnell, Anthony Stentz
2013 J jnl
CoRR
Kevin Waugh, Brian D. Ziebart, J. Andrew Bagnell
2013 A* conf
ICRA
Hanzhang Hu, Daniel Munoz, J. Andrew Bagnell, Martial Hebert
2013 A* conf
ICRA
Ondrej Miksik, Daniel Munoz, J. Andrew Bagnell, Martial Hebert
2013 A* conf
ICRA
Shervin Javdani, Matthew Klingensmith, J. Andrew Bagnell, Nancy S. Pollard, Siddhartha S. Srinivasa
2013 A* conf
ICRA
Dov Katz, Moslem Kazemi, J. Andrew Bagnell, Anthony Stentz
2013 J jnl
CoRR
Jiaji Zhou, Stéphane Ross, Yisong Yue, Debadeepta Dey, J. Andrew Bagnell
2013 J jnl
CoRR
Stéphane Ross, Jiaji Zhou, Yisong Yue, Debadeepta Dey, J. Andrew Bagnell
2013 A* conf
ICRA
Stéphane Ross, Narek Melik-Barkhudarov, Kumar Shaurya Shankar, Andreas Wendel, Debadeepta Dey, J. Andrew Bagnell, Martial Hebert
2013 J jnl
CoRR
David M. Blei, J. Andrew Bagnell, Andrew McCallum
2013 J jnl
Int. J. Robotics Res.
Jens Kober, J. Andrew Bagnell, Jan Peters
2013 J jnl
CoRR
Alexander Grubb, Daniel Munoz, J. Andrew Bagnell, Martial Hebert
2013 J jnl
IEEE Trans. Inf. Theory
Brian D. Ziebart, J. Andrew Bagnell, Anind K. Dey
2012 A* conf
ICRA
David Silver, J. Andrew Bagnell, Anthony Stentz
2012 J jnl
CoRR
Stéphane Ross, J. Andrew Bagnell
2012 A conf
IROS
J. Andrew Bagnell, Felipe Cavalcanti, Lei Cui, Thomas Galluzzo, Martial Hebert, Moslem Kazemi, Matthew Klingensmith, Jacqueline Libby, Tian Yu Liu, Nancy S. Pollard, Mihail Pivtoraiko, Jean-Sebastien Valois, Ranqi Zhu
2012 conf
Robotics: Science and Systems
Debadeepta Dey, Tian Yu Liu, Martial Hebert, J. Andrew Bagnell
2012 J jnl
CoRR
David M. Bradley, J. Andrew Bagnell
2012 conf
ISER
David Silver, J. Andrew Bagnell, Anthony Stentz
2012 J jnl
CoRR
Stéphane Ross, Narek Melik-Barkhudarov, Kumar Shaurya Shankar, Andreas Wendel, Debadeepta Dey, J. Andrew Bagnell, Martial Hebert
2012 J jnl
CoRR
Brian D. Ziebart, Anind K. Dey, J. Andrew Bagnell
2012 J jnl
CoRR
Debadeepta Dey, Tian Yu Liu, Martial Hebert, J. Andrew Bagnell
2012 A conf
IUI
Brian D. Ziebart, Anind K. Dey, J. Andrew Bagnell
2012 A* conf
ICRA
Matthew Zucker, J. Andrew Bagnell
2012 conf
Robotics: Science and Systems
Moslem Kazemi, Jean-Sebastien Valois, J. Andrew Bagnell, Nancy S. Pollard
2011 A* conf
ICRA
Xuehan Xiong, Daniel Munoz, J. Andrew Bagnell, Martial Hebert
2011 J jnl
J. Field Robotics
Boris Sofman, Bradford Neuman, Anthony Stentz, J. Andrew Bagnell
2011 J jnl
CoRR
Kevin Waugh, Brian D. Ziebart, J. Andrew Bagnell
2011 J jnl
CoRR
Alexander Grubb, J. Andrew Bagnell
2011 A* conf
CVPR
Stéphane Ross, Daniel Munoz, Martial Hebert, J. Andrew Bagnell
2011 A conf
AAMAS
Brian D. Ziebart, J. Andrew Bagnell, Anind K. Dey
2011 J jnl
Int. J. Robotics Res.
Matthew Zucker, Nathan D. Ratliff, Martin Stolle, Joel E. Chestnutt, J. Andrew Bagnell, Christopher G. Atkeson, James Kuffner
2011 A* conf
ICRA
Bradford Neuman, Boris Sofman, Anthony Stentz, J. Andrew Bagnell
2011 J jnl
CoRR
Stéphane Ross, J. Andrew Bagnell
2010 A* conf
ICML
Alexander Grubb, J. Andrew Bagnell
2010 J jnl
IEEE Robotics Autom. Mag.
J. Andrew Bagnell, David M. Bradley, David Silver, Boris Sofman, Anthony Stentz
2010 J jnl
Int. J. Robotics Res.
David Silver, J. Andrew Bagnell, Anthony Stentz
2010 A* conf
ICML
Brian D. Ziebart, J. Andrew Bagnell, Anind K. Dey
2010 J jnl
CoRR
Stéphane Ross, Geoffrey J. Gordon, J. Andrew Bagnell
2010 ch.
Encyclopedia of Machine Learning
Jan Peters, J. Andrew Bagnell
2010 J jnl
Int. J. Robotics Res.
Raia Hadsell, J. Andrew Bagnell, Daniel F. Huber, Martial Hebert
2010 conf
ECCV (6)
Daniel Munoz, J. Andrew Bagnell, Martial Hebert
2009 conf
Robotics: Science and Systems
Raia Hadsell, J. Andrew Bagnell, Daniel F. Huber, Martial Hebert
2009 conf
FSR
David Silver, J. Andrew Bagnell, Anthony Stentz
2009 conf
FSR
Boris Sofman, J. Andrew Bagnell, Anthony Stentz
2009 A* conf
ICRA
Nathan D. Ratliff, Matthew Zucker, J. Andrew Bagnell, Siddhartha S. Srinivasa
2009 A conf
UAI
David M. Bradley, J. Andrew Bagnell
2009 A* conf
ICRA
Garratt Gallagher, Siddhartha S. Srinivasa, J. Andrew Bagnell, Dave Ferguson
2009 conf
AAAI Spring Symposium: Human Behavior Modeling
Brian D. Ziebart, Andrew L. Maas, J. Andrew Bagnell, Anind K. Dey
2009 A conf
AISTATS
Nathan D. Ratliff, Brian D. Ziebart, Kevin M. Peterson, J. Andrew Bagnell, Martial Hebert, Anind K. Dey, Siddhartha S. Srinivasa
2009 J jnl
Auton. Robots
Nathan D. Ratliff, David Silver, J. Andrew Bagnell
2009 C conf
ISRR
David Silver, J. Andrew Bagnell, Anthony Stentz
2008 conf
NIPS
J. Andrew Bagnell, David M. Bradley
2008 J jnl
Int. J. Robotics Res.
J. Andrew Bagnell, Stefan Schaal
2008 A* conf
ICAPS
Brian D. Ziebart, Anind K. Dey, J. Andrew Bagnell
2008 A* conf
AAAI
Brian D. Ziebart, Andrew L. Maas, J. Andrew Bagnell, Anind K. Dey
2008 Misc conf
UbiComp
Brian D. Ziebart, Andrew L. Maas, Anind K. Dey, J. Andrew Bagnell
2007 A conf
AISTATS
Nathan D. Ratliff, J. Andrew Bagnell, Martin Zinkevich
2007 A* conf
IJCAI
Nathan D. Ratliff, J. Andrew Bagnell
2007 A* conf
ICRA
David M. Bradley, Ranjith Unnikrishnan, J. Andrew Bagnell
2006 conf
NIPS
Nathan D. Ratliff, David M. Bradley, J. Andrew Bagnell, Joel E. Chestnutt
2006 A conf
IROS
David Silver, Boris Sofman, Nicolas Vandapel, J. Andrew Bagnell, Anthony Stentz
2006 conf
Robotics: Science and Systems
Boris Sofman, Ellie Lin, J. Andrew Bagnell, Nicolas Vandapel, Anthony Stentz
2006 J jnl
J. Field Robotics
Boris Sofman, Ellie Lin, J. Andrew Bagnell, John Cole, Nicolas Vandapel, Anthony Stentz
2006 A* conf
ICML
Nathan D. Ratliff, J. Andrew Bagnell, Martin Zinkevich
2005 conf
NIPS
J. Andrew Bagnell, Andrew Y. Ng
2005 A* conf
AAAI
J. Andrew Bagnell
2003 A* conf
IJCAI
J. Andrew Bagnell, Jeff G. Schneider
2003 conf
NIPS
J. Andrew Bagnell, Sham M. Kakade, Andrew Y. Ng, Jeff G. Schneider
2002 A conf
UAI
David M. Blei, J. Andrew Bagnell, Andrew Kachites McCallum
2001 A* conf
ICRA
J. Andrew Bagnell, Jeff G. Schneider
tests/unit/test_extractor_registry.py
← Index tests/unit/test_extractor_registry.py python
"""
Unit tests for the extractor registry (redb/extractor_registry.py).

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

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

pytestmark = [pytest.mark.unit]


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

class TestGetFiletypeModules:

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

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

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

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


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

class TestGetExtractorClass:

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

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

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

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

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

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


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

class TestRegistryCompleteness:

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

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


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

class TestWorkersGetModuleByName:

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

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

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

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