Makoto Nakamura

128 papers A 1B 4C 6Misc 4Journal 54Unranked 59
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Makoto Nakamura
2025 conf
JSAI-isAI
Toshinori Takahashi, Tarou Shibuya, Makoto Nakamura
2025 J jnl
IEICE Electron. Express
Takuma Yamada, Daisuke Ito, Makoto Nakamura
2025 J jnl
CoRR
Takuya Tsuchiya, Makoto Nakamura
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Toshiyuki Inoue, Akira Tsuchiya, Keiji Kishine, Yasuhiro Takahashi, Daisuke Ito, Makoto Nakamura
2024 conf
ICEIC
Yasuhiro Takahashi, Daisuke Ito, Makoto Nakamura, Akira Tsuchiya, Toshiyuki Inoue, Keiji Kishine
2024 conf
SOCC
Toshiyuki Inoue, Akira Tsuchiya, Keiji Kishine, Daisuke Ito, Yasuhiro Takahashi, Makoto Nakamura
2024 J jnl
Microelectron. J.
Toshiyuki Inoue, Akira Tsuchiya, Keiji Kishine, Daisuke Ito, Yasuhiro Takahashi, Makoto Nakamura
2024 conf
ISOCC
Junsei Oshika, Shogo Ishida, Daisuke Ito, Makoto Nakamura
2024 conf
ISOCC
Daisuke Ito, Masataka Furuta, Yasuhiro Takahashi, Makoto Nakamura
2023 J jnl
IEICE Electron. Express
Daisuke Ito, Yasuhiro Takahashi, Makoto Nakamura, Toshiyuki Inoue, Akira Tsuchiya, Keiji Kishine
2023 conf
ISOCC
Daisuke Ito, Yasuhiro Takahashi, Makoto Nakamura, Toshiyuki Inoue, Akira Tsuchiya, Keiji Kishine
2023 conf
ICECS
Toshiyuki Inoue, Akira Tsuchiya, Keiji Kishine, Daisuke Ito, Yasuhiro Takahashi, Makoto Nakamura
2023 J jnl
IEEE Access
Takuya Otani, Makoto Nakamura, Koichi Kimura, Atsuo Takanishi
2023 conf
ASICON
Akira Tsuchiya, Toshiyuki Inoue, Keiji Kishine, Daisuke Ito, Yasuhiro Takahashi, Makoto Nakamura
2023 conf
ISOCC
Ren Izumi, Makoto Nakamura, Daisuke Ito
2023 J jnl
IEICE Electron. Express
Yasuhiro Takahashi, Daisuke Ito, Makoto Nakamura, Akira Tsuchiya, Toshiyuki Inoue, Keiji Kishine
2023 J jnl
JSIAM Lett.
Takuya Tsuchiya, Makoto Nakamura
2023 J jnl
IEEE Access
Bo Wei, Hang Song, Makoto Nakamura, Koichi Kimura, Nozomu Togawa, Jiro Katto
2023 J jnl
IEICE Trans. Inf. Syst.
Takeshi Miyamae, Fumihiko Kozakura, Makoto Nakamura, Masanobu Morinaga
2022 conf
MWSCAS
Toshiyuki Inoue, Akira Tsuchiya, Keiji Kishine, Daisuke Ito, Yasuhiro Takahashi, Makoto Nakamura
2022 conf
ICECS 2022
Toshiyuki Inoue, Akira Tsuchiya, Keiji Kishine, Daisuke Ito, Yasuhiro Takahashi, Makoto Nakamura
2022 J jnl
J. Inf. Process.
Makoto Nakamura, Takeshi Miyamae, Masanobu Morinaga
2022 conf
MWSCAS
Akira Tsuchiya, Toshiyuki Inoue, Keiji Kishine, Yasuhiro Takahashi, Daisuke Ito, Makoto Nakamura
2022 conf
Blockchain
Takeshi Miyamae, Satoru Nishimaki, Makoto Nakamura, Takeru Fukuoka, Masanobu Morinaga
2022 conf
ISOCC
Koki Ando, Yukinaga Shimoda, Daisuke Ito, Makoto Nakamura
2022 conf
ICEIC
Akira Tsuchiya, Toshiyuki Inoue, Keiji Kishine, Yasuhiro Takahashi, Daisuke Ito, Makoto Nakamura
2022 conf
ISOCC
Takumi Nabeshima, Daisuke Ito, Makoto Nakamura, Takefumi Koyama, Katsunori Muto
2022 J jnl
IEICE Trans. Inf. Syst.
Haruka Nakamura, Yoshimasa Tawatsuji, Tatsunori Matsui, Makoto Nakamura, Koichi Kimura, Hisanori Fujisawa
2022 conf
JSAI-isAI Workshops
Hiroki Cho, Ryuya Koseki, Aki Shima, Makoto Nakamura
2022 J jnl
CoRR
Takuya Tsuchiya, Makoto Nakamura
2022 J jnl
CoRR
Takuya Tsuchiya, Makoto Nakamura
2022 J jnl
Robotics
Takuya Otani, Atsuo Takanishi, Makoto Nakamura, Koichi Kimura
2022 J jnl
CoRR
Bo Wei, Hang Song, Makoto Nakamura, Koichi Kimura, Nozomu Togawa, Jiro Katto
2022 J jnl
Artif. Life Robotics
Makoto Nakamura, Shingo Hagiwara, Ryuichi Matoba
2021 conf
ISSCC
Jun Ogi, Takafumi Takatsuka, Kazuki Hizu, Yutaka Inaoka, Hongbo Zhu, Yasuhisa Tochigi, Yoshiaki Tashiro, Fumiaki Sano, Yusuke Murakawa, Makoto Nakamura, Yusuke Oike
2021 J jnl
IEEE J. Solid State Circuits
Jun Ogi, Takafumi Takatsuka, Kazuki Hizu, Yutaka Inaoka, Hongbo Zhu, Yasuhisa Tochigi, Yoshiaki Tashiro, Fumiaki Sano, Yusuke Murakawa, Makoto Nakamura, Yusuke Oike
2021 conf
ICECS
Toshiyuki Inoue, Akira Tsuchiya, Keiji Kishine, Daisuke Ito, Yasuhiro Takahashi, Makoto Nakamura
2021 J jnl
IEICE Trans. Commun.
Makoto Nakamura, Hiroaki Nishiuchi, Jin Nakazato, Konstantin Koslowski, Julian Daube, Ricardo Santos, Gia Khanh Tran, Kei Sakaguchi
2021 J jnl
Artif. Life Robotics
Ryuichi Matoba, T. Yonezawa, Shingo Hagiwara, Todd Cooper, Makoto Nakamura
2021 conf
ISOCC
Yukinaga Shimoda, Kota Hayashi, Daisuke Ito, Makoto Nakamura
2021 J jnl
IEEE Access
Jin Nakazato, Makoto Nakamura, Tao Yu, Zongdian Li, Kazuki Maruta, Gia Khanh Tran, Kei Sakaguchi
2021 conf
ICEIS (1)
Fan Mo, Huida Jiao, Shun Morisawa, Makoto Nakamura, Koichi Kimura, Hisanori Fujisawa, Masafumi Ohtsuka, Hayato Yamana
2021 conf
IEEE ICBC
Takeshi Miyamae, Fumihiko Kozakura, Makoto Nakamura, Shenbin Zhang, Song Hua, Bingfeng Pi, Masanobu Morinaga
2020 conf
ICC Workshops
Jin Nakazato, Makoto Nakamura, Tao Yu, Zongdian Li, Gia Khanh Tran, Kei Sakaguchi
2020 J jnl
IEICE Trans. Fundam. Electron. Commun. Comput. Sci.
Qiaochu Zhao, Ittetsu Taniguchi, Makoto Nakamura, Takao Onoye
2020 conf
IEEE BigData
Fan Mo, Huida Jiao, Shun Morisawa, Makoto Nakamura, Koichi Kimura, Hisanori Fujisawa, Masafumi Ohtsuka, Hayato Yamana
2019 J jnl
IEICE Electron. Express
Akira Hida, Yusuke Nakane, Shunta Mizuno, Makoto Nakamura, Daisuke Ito, Shinsuke Nakano, Hideyuki Nosaka
2019 conf
ISOCC
Daisuke Ito, Tomotaka Tanaka, Makoto Nakamura, Keiji Kishine
2019 B conf
GLOBECOM
Jin Nakazato, Makoto Nakamura, Tao Yu, Gia Khanh Tran, Kei Sakaguchi
2019 J jnl
IEICE Trans. Fundam. Electron. Commun. Comput. Sci.
Takuya Kojima, Mamoru Kunieda, Makoto Nakamura, Daisuke Ito, Keiji Kishine
2019 conf
INTERACT (2)
Mitsuki Hosoya, Hiroaki Yamaura, Satoshi Nakamura, Makoto Nakamura, Eiji Takamatsu, Yujiro Kitaide
2019 conf
CCNC
Makoto Nakamura, Gia Khanh Tran, Kei Sakaguchi
2019 J jnl
J. Comput. Appl. Math.
Takuya Tsuchiya, Makoto Nakamura
2019 conf
WCNC Workshops
Gia Khanh Tran, Makoto Nakamura, Hiroaki Nishiuchi, Kei Sakaguchi, Ricardo Santos, Konstantin Koslowski
2019 conf
VTC Fall
Makoto Nakamura, Hiroaki Nishiuchi, Konstantin Koslowski, Julian Daube, Ricardo Santos, Gia Khanh Tran, Kei Sakaguchi
2019 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Ralf Stroop, Makoto Nakamura, Johan Schoukens, David Oliva Uribe
2019 conf
ISOCC
Tatsuya Maekawa, Yusaku Miwa, Akihito Uno, Daisuke Ito, Makoto Nakamura
2018 conf
ISOCC
Tomotaka Tanaka, Fumiya Naito, Makoto Nakamura, Daisuke Ito, Keiji Kishine
2018 J jnl
J. Sens. Actuator Networks
Gia Khanh Tran, Ricardo Santos, Hiroaki Ogawa, Makoto Nakamura, Kei Sakaguchi, Andreas Kassler
2018 J jnl
J. Inf. Telecommun.
Yasuhiro Ogawa, Makoto Nakamura, Tomohiro Ohno, Katsuhiko Toyama
2018 conf
BMSB
Konstantin Koslowski, Ricardo Santos, Wilhelm Keusgen, Thomas Haustein, Andreas Kassler, Kei Sakaguchi, Hiroaki Ogawa, Makoto Nakamura, Tao Yu
2017 J jnl
IEICE Electron. Express
Shunta Mizuno, Fumiya Naito, Makoto Nakamura
2017 conf
ISOCC
Toshiyuki Inoue, Akira Tsuchiya, Keiji Kishine, Makoto Nakamura
2017 conf
KSE
Kazuya Fujioka, Makoto Nakamura, Yasuhiro Ogawa, Tomohiro Ohno, Katsuhiko Toyama
2017 conf
ICAART (1)
Makoto Nakamura, Yuya Hayashi, Ryuichi Matoba
2016 conf
ISOCC
Keiji Kishine, Hiroshi Inoue, Kosuke Furuichi, Natsuyuki Koda, Hiromu Uemura, Hiromi Inaba, Makoto Nakamura, Akira Tsuchiya
2016 conf
KSE
Yasuhiro Ogawa, Makoto Nakamura, Tomohiro Ohno, Katsuhiko Toyama
2016 J jnl
J. Comput. Phys.
Satoshi Togo, Tomonori Takizuka, Makoto Nakamura, Kazuo Hoshino, Kenzo Ibano, Tee Long Lang, Yuichi Ogawa
2016 J jnl
Micromachines
Toyohiro Naito, Makoto Nakamura, Noritada Kaji, Takuya Kubo, Yoshinobu Baba, Koji Otsuka
2015 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Keiji Kishine, Hiromi Inaba, Hiroshi Inoue, Makoto Nakamura, Akira Tsuchiya, Hiroaki Katsurai, Hidetoshi Onodera
2015 conf
EMBC
Yuya Ogura, Hideaki Hayashi, Shota Nakashima, Zu Soh, Taro Shibanoki, Koji Shimatani, Akihito Takeuchi, Makoto Nakamura, Akihisa Okumura, Yuichi Kurita, Toshio Tsuji
2015 conf
KSE
Kouhei Okada, Yasuhiro Ogawa, Makoto Nakamura, Tomohiro Ohno, Katsuhiko Toyama
2015 conf
JSAI-isAI Workshops
Satomi Sakamoto, Yasuhiro Ogawa, Makoto Nakamura, Tomohiro Ohno, Katsuhiko Toyama
2014 C conf
ISCAS
Keiji Kishine, Hiroshi Inoue, Hiromi Inaba, Makoto Nakamura, Akira Tsuchiya, Hidetoshi Onodera, Hiroaki Katsurai
2014 C conf
JURIX
Makoto Nakamura, Tokuyasu Kakuta
2013 J jnl
IEICE Trans. Electron.
Kota Asaka, Atsushi Kanda, Akira Ohki, Takeshi Kurosaki, Ryoko Yoshimura, Hiroaki Sanjoh, Toshio Ito, Makoto Nakamura, Mikio Yoneyama
2013 conf
MWSCAS
Keiji Kishine, Hiromi Inaba, Yusuke Ohtomo, Makoto Nakamura, Hiroshi Koizumi, Mitsuo Nakamura
2013 J jnl
IEICE Trans. Fundam. Electron. Commun. Comput. Sci.
Hideyuki Torii, Takahiro Matsumoto, Makoto Nakamura
2013 conf
AICOL
Makoto Nakamura, Yasuhiro Ogawa, Katsuhiko Toyama
2013 J jnl
IEICE Trans. Electron.
Atsushi Kanda, Akira Ohki, Takeshi Kurosaki, Hiroaki Sanjoh, Kota Asaka, Ryoko Yoshimura, Toshio Ito, Makoto Nakamura, Masafumi Nogawa, Yusuke Ohtomo, Mikio Yoneyama
2012 J jnl
IEICE Trans. Fundam. Electron. Commun. Comput. Sci.
Hideyuki Torii, Takahiro Matsumoto, Makoto Nakamura
2012 B conf
CogSci
Makoto Nakamura, Shingo Hagiwara, Satoshi Tojo
2012 conf
MWSCAS
Keiji Kishine, Hiromi Inaba, Yusuke Ohtomo, Makoto Nakamura, Mitsuo Nakamura
2012 B conf
CogSci
Ryuichi Matoba, Makoto Nakamura, Shingo Hagiwara, Satoshi Tojo
2012 J jnl
IEICE Electron. Express
Kimikazu Sano, Hiroyuki Fukuyama, Makoto Nakamura, Miwa Mutoh, Hideyuki Nosaka, Koichi Murata
2011 conf
ISOCC
Shigekazu Miyawaki, Makoto Nakamura, Akira Tsuchiya, Keiji Kishine, Hidetoshi Onodera
2011 conf
ISOCC
Akira Tsuchiya, Takeshi Kuboki, Yusuke Ohtomo, Keiji Kishine, Shigekazu Miyawaki, Makoto Nakamura, Hidetoshi Onodera
2011 J jnl
Speech Commun.
Hiroki Mori, Tomoyuki Satake, Makoto Nakamura, Hideki Kasuya
2011 J jnl
Inf. Comput.
Ryuichi Matoba, Makoto Nakamura, Satoshi Tojo
2011 Misc conf
ICASSP
Hiroki Mori, Ko Oshima, Makoto Nakamura
2011 conf
JSAI-isAI Workshops
Shozo Ota, Ken Satoh, Makoto Nakamura
2010 conf
SemEval@ACL
Kiyoaki Shirai, Makoto Nakamura
2010 conf
SIGGRAPH Posters
Shiro Ozawa, Takao Abe, Noriyuki Naruto, Toshihiro Nakae, Makoto Nakamura, Naoya Miyashita, Mitsunori Hirano, Kazuhiko Tanaka
2010 C conf
JURIX
Kenji Takano, Makoto Nakamura, Yoshiko Oyama, Akira Shimazu
2010 J jnl
Inf. Media Technol.
Makoto Nakamura, Yusuke Kimura, Minh Quang Nhat Pham, Le Minh Nguyen, Akira Shimazu
2009 C conf
LATA
Ryuichi Matoba, Makoto Nakamura, Satoshi Tojo
2009 C conf
LATA
Makoto Nakamura, Takashi Hashimoto, Satoshi Tojo
2009 conf
SASO
Makoto Nakamura, Takashi Hashimoto, Satoshi Tojo
2008 conf
SASO
Makoto Nakamura, Takashi Hashimoto, Satoshi Tojo
2008 conf
JSAI
Yusuke Kimura, Makoto Nakamura, Akira Shimazu
2008 conf
TSD
Hiroki Mori, Tomoyuki Satake, Makoto Nakamura, Hideki Kasuya
2007 J jnl
IEICE Trans. Fundam. Electron. Commun. Comput. Sci.
Hideyuki Torii, Makoto Nakamura
2007 J jnl
IEICE Electron. Express
Takashi Nakanishi, Ken-Ichi Suzuki, Youichi Fukada, Naoto Yoshimoto, Makoto Nakamura, Kazutoshi Kato, Kazuyoshi Nishimura, Yusuke Ohtomo, Makoto Tsubokawa
2007 conf
JSAI
Makoto Nakamura, Shunsuke Nobuoka, Akira Shimazu
2006 conf
EELC
Ryuichi Matoba, Makoto Nakamura, Satoshi Tojo
2005 J jnl
IEEE J. Solid State Circuits
Makoto Nakamura, Yuki Imai, Yohtaro Umeda, Jun Endo, Yuji Akatsu
2005 J jnl
IEICE Trans. Electron.
Hideyuki Nosaka, Makoto Nakamura, Kimikazu Sano, Minoru Ida, Kenji Kurishima, Tsugumichi Shibata, Masami Tokumitsu, Masahiro Muraguchi
2005 J jnl
IEICE Trans. Fundam. Electron. Commun. Comput. Sci.
Hideyuki Torii, Makoto Nakamura, Naoki Suehiro
2004 J jnl
IEEE Trans. Inf. Theory
Hideyuki Torii, Makoto Nakamura, Naoki Suehiro
2004 conf
JSAI Workshops
Makoto Nakamura, Takashi Hashimoto, Satoshi Tojo
2004 A conf
SC
Hiroyuki Kamezawa, Makoto Nakamura, Junji Tamatsukuri, Nao Aoshima, Mary Inaba, Kei Hiraki
2004 conf
ISPAN
Makoto Nakamura, Hiroyuki Kamezawa, Junji Tamatsukuri, Mary Inaba, Kei Hiraki, K. Mizuguchi, K. Torii, S. Nakano, Shizuo Yoshita, Ryutaro Kurusu, Masakazu Sakamoto, Yuki Furukawa, Takeshi Yanagisawa, Yukichi Ikuta, J. Shitami, Akira Zinzaki
2003 J jnl
IEICE Trans. Fundam. Electron. Commun. Comput. Sci.
Hideyuki Torii, Makoto Nakamura, Naoki Suehiro
2003 Misc conf
IC-AI
Makoto Nakamura, Takashi Hashimoto, Satoshi Tojo
2002 B conf
Discovery Science
Makoto Nakamura, Satoshi Tojo
2000 C conf
ISCC
Hideyuki Torii, Makoto Nakamura, Naoki Suehiro
1998 J jnl
IEEE J. Solid State Circuits
Makoto Nakamura, Noboru Ishihara, Yukio Akazawa
1998 J jnl
Syst. Comput. Jpn.
Akihiro Fujii, Makoto Nakamura, Yoshiaki Nemoto
1996 Misc conf
MVA
Eiji Takahashi, Hirohumi Terada, Yoshiro Nishimoto, Yuichiro Goto, Akashi Yamaguchi, Hideki Yamamuro, Atushi Miyawaki, Masami Fujii, Makoto Nakamura
1996 J jnl
IEEE J. Solid State Circuits
Makoto Nakamura, Yuhki Imai, Shoji Yamahata, Yohtaro Umeda
1996 J jnl
IEEE Commun. Mag.
Makoto Nakamura, Hiroshi Tsunomachi, Ryotaro Fukui
1992 J jnl
IEEE J. Solid State Circuits
Makoto Nakamura, Yuhki Imai, Eiichi Sano, Yoshiki Yamauchi, Osaake Nakajima
1991 J jnl
Syst. Comput. Jpn.
Toshio Matsuura, Hajime Naota, Makoto Nakamura
1986 conf
ICC
Masayoshi Tanaka, Makoto Nakamura, Teruki Okamoto, Hiroyuki Kumazawa
1986 conf
ICC
Makoto Nakamura, Hideo Suzuki, Takashi Kamitake, Masahiko Ohnishi, Tsunetaro Saki, Takashi Totoki, Hitoshi Tsuchihashi
1984 conf
ICC (3)
Makoto Nakamura, Fumio Sugiyama, Hiroshi Sue, T. Takada
1981 Misc conf
ICASSP
Fumio Sugiyama, Makoto Nakamura
tests/integration/test_elf_extractor.py
← Index tests/integration/test_elf_extractor.py python
"""
Integration tests for the ELFExtractor base class.
"""
import pytest
from unittest.mock import Mock, patch, MagicMock

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


class TestELFExtractorInitialization:
    """Tests for ELFExtractor initialization."""

    def test_elf_extractor_with_valid_elf(self, elf_binary_path, mock_logger):
        """Test ELFExtractor initialization with valid ELF file."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            assert extractor.filepath == elf_binary_path
            assert extractor._is_elf_file() is True

    def test_elf_extractor_with_invalid_file(self, pe_binary_path, mock_logger):
        """Test ELFExtractor initialization with non-ELF file."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            # Should not be a valid ELF
            assert extractor._is_elf_file() is False

    def test_elf_extractor_with_text_file(self, temp_text_file, mock_logger):
        """Test ELFExtractor initialization with text file."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(temp_text_file, mock_logger)

            # Should not be a valid ELF
            assert extractor._is_elf_file() is False


class TestELFExtractorMethods:
    """Tests for ELFExtractor helper methods."""

    def test_is_elf_file_true(self, elf_binary_path, mock_logger):
        """Test _is_elf_file returns True for valid ELF."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            assert extractor._is_elf_file() is True

    def test_is_elf_file_cached(self, elf_binary_path, mock_logger):
        """Test _is_elf_file result is cached."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            # First call
            result1 = extractor._is_elf_file()
            # Second call should use cached value
            result2 = extractor._is_elf_file()

            assert result1 == result2
            # Cache should be set
            assert extractor._elf_file_valid is not None

    def test_is_64bit(self, elf_binary_path, mock_logger):
        """Test _is_64bit method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._is_64bit()
            # Result depends on the test binary
            assert isinstance(result, bool)

    def test_is_stripped(self, elf_binary_path, mock_logger):
        """Test _is_stripped method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._is_stripped()
            assert isinstance(result, bool)

    def test_has_debug_info(self, elf_binary_path, mock_logger):
        """Test _has_debug_info method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._has_debug_info()
            assert isinstance(result, bool)

    def test_get_architecture(self, elf_binary_path, mock_logger):
        """Test _get_architecture method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._get_architecture()
            # Should return a string (architecture name)
            assert isinstance(result, str)
            assert result != ""

    def test_get_endianness(self, elf_binary_path, mock_logger):
        """Test _get_endianness method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._get_endianness()
            # Should be one of: "little", "big", or "unknown"
            assert result in ["little", "big", "unknown"]

    def test_get_file_type(self, elf_binary_path, mock_logger):
        """Test _get_file_type method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._get_file_type()
            # Should return a file type string
            assert isinstance(result, str)
            # Common values: "executable", "shared_object", "relocatable", etc.
            expected_types = ["none", "relocatable", "executable", "shared_object", "core_dump", "unknown"]
            assert result in expected_types or result.startswith("ET_")

    def test_is_pie(self, elf_binary_path, mock_logger):
        """Test _is_pie method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._is_pie()
            assert isinstance(result, bool)

    def test_has_stack_protection(self, elf_binary_path, mock_logger):
        """Test _has_stack_protection method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._has_stack_protection()
            assert isinstance(result, bool)

    def test_has_nx_bit(self, elf_binary_path, mock_logger):
        """Test _has_nx_bit method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._has_nx_bit()
            assert isinstance(result, bool)

    def test_has_relro(self, elf_binary_path, mock_logger):
        """Test _has_relro method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._has_relro()
            assert isinstance(result, bool)

    def test_get_build_id(self, elf_binary_path, mock_logger):
        """Test _get_build_id method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._get_build_id()
            # Could be None if no build ID, or a hex string
            assert result is None or isinstance(result, str)

    def test_count_sections(self, elf_binary_path, mock_logger):
        """Test _count_sections method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._count_sections()
            assert isinstance(result, int)
            assert result >= 0

    def test_count_segments(self, elf_binary_path, mock_logger):
        """Test _count_segments method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._count_segments()
            assert isinstance(result, int)
            assert result >= 0

    def test_count_symbols(self, elf_binary_path, mock_logger):
        """Test _count_symbols method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._count_symbols()
            assert isinstance(result, int)
            assert result >= 0

    def test_get_dependencies(self, elf_binary_path, mock_logger):
        """Test _get_dependencies method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor._get_dependencies()
            assert isinstance(result, list)


class TestWithELFFile:
    """Tests for the _with_elf_file context manager method."""

    def test_with_elf_file_success(self, elf_binary_path, mock_logger):
        """Test _with_elf_file executes operation successfully."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            # Define a simple operation
            def get_header(elf):
                return elf.header is not None

            result = extractor._with_elf_file(get_header)
            assert result is True

    def test_with_elf_file_error_handling(self, temp_text_file, mock_logger):
        """Test _with_elf_file handles errors gracefully."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(temp_text_file, mock_logger)

            # Define an operation that would fail
            def get_header(elf):
                return elf.header

            result = extractor._with_elf_file(get_header)
            # Should return None on error
            assert result is None


class TestELFExtractorTag:
    """Tests for tag method in ELF extractors."""

    def test_elf_features_tag(self, elf_binary_path, mock_logger):
        """Test that ELFFeaturesExtractor returns correct tag."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)
            tag = extractor.tag()
            # Should return the tag string
            assert isinstance(tag, str)
            assert "elf" in tag.lower() or "features" in tag.lower()


class TestELFExtractorClickHouseTable:
    """Tests for get_clickhouse_table method in ELF extractors."""

    def test_elf_features_clickhouse_table(self, elf_binary_path, mock_logger):
        """Test that ELFFeaturesExtractor returns correct ClickHouse table name."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_elf_features"


class TestELFExtractorExtract:
    """Tests for extract method in ELF extractors."""

    def test_elf_features_extract(self, elf_binary_path, mock_logger):
        """Test ELFFeaturesExtractor.extract() returns valid data."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor
        from redb.models.dataclasses import ELFFeatures

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            result = extractor.extract()
            assert result is not None
            assert isinstance(result, ELFFeatures)

            # Check some expected fields
            assert isinstance(result.ei_class, int)
            assert isinstance(result.ei_data, int)
            assert isinstance(result.e_entry, int)
            assert isinstance(result.number_of_sections, int)
            assert isinstance(result.number_of_segments, int)

    def test_elf_features_extract_invalid_file(self, pe_binary_path, mock_logger):
        """Test ELFFeaturesExtractor.extract() handles invalid ELF."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor.extract()
            # Should return None for invalid ELF
            assert result is None


class TestELFExtractorPrepareExportData:
    """Tests for prepare_export_data method in ELF extractors."""

    def test_elf_features_prepare_export_elasticsearch(self, elf_binary_path, mock_logger):
        """Test prepare_export_data for Elasticsearch."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            # First extract
            extractor.extract()
            result = extractor.prepare_export_data("ElasticsearchExporter")
            # Should return the elf_features dataclass
            assert result is extractor.elf_features

    def test_elf_features_prepare_export_clickhouse(self, elf_binary_path, mock_logger):
        """Test prepare_export_data for ClickHouse."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)

            # 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)


class TestELFExtractorAdvanced:
    """Advanced tests for ELF extraction using hello_advanced binary."""

    def test_elf_advanced_features(self, elf_advanced_binary_path, mock_logger):
        """Test ELFFeaturesExtractor with more complex ELF binary."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_advanced_binary_path, mock_logger)

            result = extractor.extract()
            assert result is not None

            # Check that we can extract meaningful data
            assert result.number_of_sections > 0
            assert result.number_of_segments > 0

    def test_elf_advanced_architecture(self, elf_advanced_binary_path, mock_logger):
        """Test architecture detection for advanced ELF binary."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_advanced_binary_path, mock_logger)

            arch = extractor._get_architecture()
            # Should detect a valid architecture
            assert arch != "unknown"
            assert arch != ""