Mahta Moghaddam

201 papers B 1C 99Journal 87Unranked 12
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE Trans. Geosci. Remote. Sens.
Erik Hodges, Clara C. Chew, Eric E. Small, Dinan Bai, Mohammad M. Al-Khaldi, Jeffrey D. Ouellette, Joel T. Johnson, Fangni Lei, Mehmet Kurum, Ali Cafer Gürbüz, Volkan Yusuf Senyurek, M. M. Nabi, Xiaolan Xu, Rashmi Shah, Simon H. Yueh, Akiko Hayashi, Paulo De Tarso Setti, Sajad Tabibi, Emanuele Santi, Simone Pettinato, Christopher S. Ruf, Mahta Moghaddam
2025 J jnl
IEEE Geosci. Remote. Sens. Lett.
Asem Melebari, Sepehr Eskandari, Mahta Moghaddam
2025 J jnl
IEEE Trans. Geosci. Remote. Sens.
Amer Melebari, James D. Campbell, Erik Hodges, Mahta Moghaddam
2025 J jnl
IEEE Trans. Geosci. Remote. Sens.
Wei Peng, Yonghong Yi, Umakant Mishra, Kazem Bakian-Dogaheh, John S. Kimball, Mahta Moghaddam, Hans W. Chen
2025 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Yu-Huan Zhao, Delwyn Moller, Dean F. Meason, Mahta Moghaddam
2025 J jnl
CoRR
Sreeja Roy-Singh, Vinay Ravindra, Richard Levinson, Mahta Moghaddam, Jan Mandel, Adam K. Kochanski, Angel Farguell Caus, Kurtis Nelson, Samira Alkaee Taleghan, Archana Kannan, Amer Melebari
2024 C conf
IGARSS
Nicole L. Bienert, Mahta Moghaddam
2024 J jnl
IEEE Trans. Instrum. Meas.
Yuan Fang, Kazem Bakian-Dogaheh, Mahta Moghaddam
2024 J jnl
Remote. Sens.
Asem Melebari, Piril Nergis, Sepehr Eskandari, Pedro Ramos Costa, Mahta Moghaddam
2024 C conf
IGARSS
Sreeja Nag, Vinay Ravindra, Richard Levinson, Mahta Moghaddam, Kurtis Nelson, Jan Mandel, Adam K. Kochanski, Angel Farguell Caus, Amer Melebari, Archana Kannan, Ryan Ketzner
2024 C conf
IGARSS
Archana Kannan, Amer Melebari, Grigorios Tsagkatakis, Kurtis Nelson, Vinay Ravindra, Sreeja Nag, Mahta Moghaddam
2024 C conf
IGARSS
Archana Kannan, Grigorios Tsagkatakis, Mahta Moghaddam
2024 C conf
IGARSS
Asem Melebari, Sepehr Eskandari, Mahta Moghaddam
2024 C conf
IGARSS
Amer Melebari, James D. Campbell, Erik Hodges, Mahta Moghaddam
2024 C conf
IGARSS
Grigorios Tsagkatakis, Mahta Moghaddam, Panagiotis Tsakalides
2024 C conf
IGARSS
Grigorios Tsagkatakis, Amer Melebari, Ruzbeh Akbar, James D. Campbell, Erik Hodges, Mahta Moghaddam
2023 C conf
IGARSS
Archana Kannan, Grigorios Tsagkatakis, Mahta Moghaddam
2023 C conf
IGARSS
Amer Melebari, Agnelo R. Silva, Ruzbeh Akbar, Erik Hodges, Yuhuan Zhao, Piril Nergis, Darren S. McKague, Chris Ruf, Mahta Moghaddam
2023 J jnl
Frontiers Big Data
Kellen Donahue, John S. Kimball, Jinyang Du, Fredrick Bunt, Andreas Colliander, Mahta Moghaddam, Jesse Johnson, Youngwook Kim, Michael A. Rawlins
2023 J jnl
Remote. Sens.
Amer Melebari, James D. Campbell, Erik Hodges, Mahta Moghaddam
2023 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Yonghong Yi, Kazem Bakian-Dogaheh, Mahta Moghaddam, Umakant Mishra, John S. Kimball
2023 J jnl
IEEE Trans. Medical Imaging
Yuan Fang, Kazem Bakian-Dogaheh, Mahta Moghaddam
2023 C conf
IGARSS
Kazem Bakian-Dogaheh, Yuhuan Zhao, John S. Kimball, Mahta Moghaddam
2023 C conf
IGARSS
Asem Melebari, Piril Nergis, Mahta Moghaddam
2023 C conf
IGARSS
Yonghong Yi, Alireza Tabatabaeenejad, Anke Fluhrer, Thomas Jagdhuber, Mahta Moghaddam, John S. Kimball, Charles E. Miller
2023 J jnl
IEEE Trans. Geosci. Remote. Sens.
Erik Hodges, James D. Campbell, Amer Melebari, Alexandra Bringer, Joel T. Johnson, Mahta Moghaddam
2023 C conf
IGARSS
Amer Melebari, James D. Campbell, Erik Hodges, Mahta Moghaddam
2022 J jnl
IEEE Trans. Biomed. Eng.
Yuan Fang, Kazem Bakian-Dogaheh, John Stang, Alireza Tabatabaeenejad, Mahta Moghaddam
2022 C conf
IGARSS
Kazem Bakian-Dogaheh, Yuhuan Zhao, Mahta Moghaddam
2022 C conf
IGARSS
Ben Smith, Sujay Kumar, Louis Nguyen, Thad Chee, James Mason, Steve A. Chien, Chad Frost, Ruzbeh Akbar, Mahta Moghaddam, Augusto Getirana, Leigha Capra, Paul T. Grogan
2022 J jnl
Sensors
Maria Myrto Villia, Grigorios Tsagkatakis, Mahta Moghaddam, Panagiotis Tsakalides
2022 C conf
IGARSS
Ruzbeh Akbar, Sam Prager, Agnelo R. Silva, Kazem Bakian-Dogaheh, Archana Kannan, Erik Hodges, Asem Melebari, Dara Entekhabi, Mahta Moghaddam
2022 C conf
IGARSS
Archana Kannan, Grigorios Tsagkatakis, Ruzbeh Akbar, Daniel Selva, Vinay Ravindra, Richard Levinson, Sreeja Nag, Mahta Moghaddam
2022 J jnl
Remote. Sens.
Amir Azemati, Amer Melebari, James D. Campbell, Jeffrey P. Walker, Mahta Moghaddam
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
James D. Campbell, Ruzbeh Akbar, Alexandra Bringer, Davide Comite, Laura Dente, Scott T. Gleason, Leila Guerriero, Erik Hodges, Joel T. Johnson, Seung-Bum Kim, Amer Melebari, Nazzareno Pierdicca, Christopher S. Ruf, Leung Tsang, Tianlin Wang, Haokui Xu, Jiyue Zhu, Mahta Moghaddam
2022 C conf
IGARSS
Yuhuan Zhao, Richard H. Chen, Kazem Bakian-Dogaheh, Jane Whitcomb, Yonghong Yi, John S. Kimball, Mahta Moghaddam
2022 C conf
IGARSS
Asem Melebari, Mark S. Haynes, Samuel Prager, Yuan Fang, Mahta Moghaddam
2022 C conf
IGARSS
Christopher Ruf, Clara C. Chew, Mahta Moghaddam, Derek J. Posselt, Zhaoxia Pu
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yonghong Yi, Richard H. Chen, Mahta Moghaddam, John S. Kimball, Benjamin M. Jones, Randi R. Jandt, Eric A. Miller, Charles E. Miller
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Samuel Prager, Graham Sexstone, Daniel McGrath, John W. Fulton, Mahta Moghaddam
2022 C conf
IGARSS
Amer Melebari, Sreeja Nag, Vinay Ravindra, Mahta Moghaddam
2022 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Andreas Colliander, Rolf H. Reichle, Wade T. Crow, Michael H. Cosh, Fan Chen, Steven Chan, Narendra Narayan Das, Rajat Bindlish, Julian Chaubell, Seung-Bum Kim, Qing Liu, Peggy E. O'Neill, Roy Scott Dunbar, Land B. Dang, John S. Kimball, Thomas J. Jackson, Hala Khalid AlJassar, Jun Asanuma, Bimal K. Bhattacharya, Aaron A. Berg, David D. Bosch, Laura L. Bourgeau-Chavez, Todd Caldwell, Jean-Christophe Calvet, Chandra D. Holifield Collins, Karsten H. Jensen, Stanley Livingston, Ernesto López-Baeza, José Martínez-Fernández, Heather McNairn, Mahta Moghaddam, Carsten Montzka, Claudia Notarnicola, Thierry Pellarin, Isabella Greimeister-Pfeil, Jouni Pulliainen, Judith Gpe. Ramos, Mark S. Seyfried, Patrick J. Starks, Zhongbo Su, Rogier van der Velde, Yijian Zeng, Marc Thibeault, Mariette Vreugdenhil, Jeffrey P. Walker, Mehrez Zribi, Dara Entekhabi, Simon H. Yueh
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Ruzbeh Akbar, Samuel Prager, Agnelo R. Silva, Mahta Moghaddam, Dara Entekhabi
2021 C conf
IGARSS
Samuel Prager, Mahta Moghaddam, Marco Lavalle
2021 C conf
IGARSS
Grigorios Tsagkatakis, Mahta Moghaddam, Panagiotis Tsakalides
2021 C conf
IGARSS
Ben Gorr, Alan Aguilar, Daniel Selva, Vinay Ravindra, Mahta Moghaddam, Sreeja Nag
2021 C conf
IGARSS
James D. Campbell, Ruzbeh Akbar, Amir Azemati, Alexandra Bringer, Davide Comite, Laura Dente, Scott T. Gleason, Leila Guerriero, Erik Hodges, Joel T. Johnson, Seung-Bum Kim, Amer Melebari, Nazzareno Pierdicca, Bowen Ren, Christopher S. Ruf, Leung Tsang, Haokui Xu, Jiyue Zhu, Mahta Moghaddam
2021 C conf
IGARSS
Jane Whitcomb, Richard H. Chen, Daniel Clewley, Yonghong Yi, John S. Kimball, Mahta Moghaddam
2021 J jnl
IEEE Access
Pratik Shah, Mahta Moghaddam
2021 C conf
IGARSS
Richard H. Chen, Roger J. Michaelides, Yuhuan Zhao, Lingcao Huang, Elizabeth Wig, Taylor D. Sullivan, Andrew D. Parsekian, Howard A. Zebker, Mahta Moghaddam, Kevin M. Schaefer
2021 C conf
IGARSS
Yonghong Yi, Richard H. Chen, Mahta Moghaddam, John S. Kimball, Benjamin M. Jones, Charles E. Miller
2021 C conf
IGARSS
Sreeja Nag, Mahta Moghaddam, Daniel Selva, Jeremy Frank, Vinay Ravindra, Richard Levinson, Amir Azemati, Benjamin Gorr, Alan Li, Ruzbeh Akbar
2021 C conf
IGARSS
Alexandra Bringer, Joel T. Johnson, Charles K. Toth, Christopher S. Ruf, Mahta Moghaddam
2021 C conf
IGARSS
Mahta Moghaddam, Liese van Zee, Nathaniel J. Livesey, Tomas Gergely, Nancy Baker, Darrel Emerson, William Emerv, Dara Entekhabi, Philip J. Erickson, Kelsey Johnson, Karen Masters, Scott Paine, Frank Schinzel, Gail M. Skofronick-Jackson
2021 J jnl
Remote. Sens.
Andrew D. Parsekian, Richard H. Chen, Roger J. Michaelides, Taylor D. Sullivan, Leah K. Clayton, Lingcao Huang, Yuhuan Zhao, Elizabeth Wig, Mahta Moghaddam, Howard A. Zebker, Kevin M. Schaefer
2020 C conf
IGARSS
Samuel Prager, David Hawkins, Mahta Moghaddam
2020 J jnl
IEEE Trans. Geosci. Remote. Sens.
Alireza Tabatabaeenejad, Richard H. Chen, Mariko S. Burgin, Xueyang Duan, Richard H. Cuenca, Michael H. Cosh, Russell L. Scott, Mahta Moghaddam
2020 C conf
IGARSS
Sreeja Nag, Mahta Moghaddam, Daniel Selva, Jeremy Frank, Vinay Ravindra, Richard Levinson, Amir Azemati, Alan Aguilar, Alan Li, Ruzbeh Akbar
2020 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Jane Whitcomb, Daniel Clewley, Andreas Colliander, Michael H. Cosh, Jarrett Powers, Matthew Friesen, Heather McNairn, Aaron A. Berg, David D. Bosch, Alisa Coffin, Chandra D. Holifield Collins, John H. Prueger, Dara Entekhabi, Mahta Moghaddam
2020 C conf
IGARSS
Richard H. Chen, Roger J. Michaelides, Taylor D. Sullivan, Andrew D. Parsekian, Howard A. Zebker, Mahta Moghaddam, Kevin M. Schaefer
2020 C conf
IGARSS
Richard H. Chen, Naiara Pinto, Xueyang Duan, Alireza Tabatabaeenejad, Mahta Moghaddam
2020 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
James D. Campbell, Amer Melebari, Mahta Moghaddam
2020 C conf
IGARSS
Grigorios Tsagkatakis, Mahta Moghaddam, Panagiotis Tsakalides
2020 J jnl
IEEE Trans. Geosci. Remote. Sens.
Aslan Etminan, Alireza Tabatabaeenejad, Mahta Moghaddam
2020 C conf
IGARSS
Mahta Moghaddam, Ruzbeh Akbar, Samuel Prager, Agnelo R. Silva, Dara Entekhabi
2020 C conf
IGARSS
Ruzbeh Akbar, James D. Campbell, Agnelo R. Silva, Richard H. Chen, Amer Melebari, Erik Hodges, Dara Entekhabi, Chris Ruf, Mahta Moghaddam
2020 J jnl
IEEE Trans. Instrum. Meas.
Samuel Prager, Tushar Thrivikraman, Mark S. Haynes, John Stang, David Hawkins, Mahta Moghaddam
2019 J jnl
IEEE Trans. Computational Imaging
Pratik Shah, Guanbo Chen, John Stang, Mahta Moghaddam
2019 C conf
IGARSS
Jane Whitcomb, David D. Bosch, Chandra D. Holifield Collins, John H. Prueger, Dara Entekhabi, Mahta Moghaddam, Daniel Clewley, Andreas Colliander, Michael H. Cosh, Jarrett Powers, Matthew Friesen, Heather McNairn, Aaron Berg
2019 C conf
IGARSS
Samuel Prager, Mahta Moghaddam
2019 C conf
IGARSS
Ruzbeh Akbar, Agnelo R. Silva, Negar Golestani, Richard H. Chen, Jay Jadva, Kamoya Ikhofua, Dimitris Koutentakis, Mahta Moghaddam, Dara Entekhabi
2019 C conf
IGARSS
Amir Azemati, Mahta Moghaddam, Arvind Bhat
2019 C conf
IGARSS
Yonghong Yi, Richard H. Chen, Dmitry Nicolsky, Mahta Moghaddam, John S. Kimball, Vladimir E. Romanovsky, Charles E. Miller
2019 conf
UEMCON
Agnelo Rocha da Silva, Ruzbeh Akbar, Richard H. Chen, Kazem Bakian-Dogaheh, Negar Golestani, Mahta Moghaddam, Dara Entekhabi
2019 C conf
IGARSS
Kazem Bakian-Dogaheh, Richard H. Chen, Mahta Moghaddam, Alireza Tabatabaeenejad
2019 C conf
IGARSS
Richard H. Chen, Kazem Bakian-Dogaheh, Alireza Tabatabaeenejad, Mahta Moghaddam
2019 J jnl
IEEE Trans. Geosci. Remote. Sens.
Richard H. Chen, Alireza Tabatabaeenejad, Mahta Moghaddam
2019 J jnl
IEEE Trans. Geosci. Remote. Sens.
Seyed Hamed Alemohammad, Thomas Jagdhuber, Mahta Moghaddam, Dara Entekhabi
2019 C conf
IGARSS
Chris Ruf, Darren McKague, Mary Morris, Derek J. Posselt, Mahta Moghaddam
2018 C conf
IGARSS
Richard H. Chen, Alireza Tabatabaeenejad, Mahta Moghaddam
2018 C conf
IGARSS
Aaron Berg, Mitchell Krafczek, Daniel Clewley, Jane Whitcomb, Ruzbeh Akbar, Mahta Moghaddam, Heather McNairn
2018 C conf
IGARSS
Richard H. Chen, Alireza Tabatabaeenejad, Mahta Moghaddam
2018 J jnl
IEEE Trans. Biomed. Eng.
Guanbo Chen, John Stang, Mark S. Haynes, Eric Leuthardt, Mahta Moghaddam
2018 conf
Computational Imaging
Konstantina Fotiadou, Grigorios Tsagkatakis, Mahta Moghaddam, Panagiotis Tsakalides
2018 C conf
IGARSS
Amir Azemati, Mahta Moghaddam, Arvind Bhat
2018 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Wade T. Crow, Sushil Milak, Mahta Moghaddam, Alireza Tabatabaeenejad, Sermsak Jaruwatanadilok, Xuan Yu, Yuning Shi, Rolf Reichle, Yutaka Hagimoto, Richard H. Cuenca
2018 C conf
IGARSS
Nan Ye, Xiaoling Wu, Jeffrey P. Walker, Nithyapriya Boopathi, Thomas J. Jackson, Yann Kerr, Edward Kim, Andrew McGrath, In-Young Yeo, Mahta Moghaddam
2017 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Daniel Clewley, Jane Whitcomb, Ruzbeh Akbar, Agnelo R. Silva, Aaron Berg, Justin R. Adams, Todd Caldwell, Dara Entekhabi, Mahta Moghaddam
2017 J jnl
Remote. Sens.
Morteza Sadeghi, Alireza Tabatabaeenejad, Markus Tuller, Mahta Moghaddam, Scott B. Jones
2017 J jnl
IEEE Trans. Geosci. Remote. Sens.
Ruzbeh Akbar, Michael H. Cosh, Peggy E. O'Neill, Dara Entekhabi, Mahta Moghaddam
2017 C conf
IGARSS
Sabah Sabaghy, Jeffrey P. Walker, Luigi J. Renzullo, Ruzbeh Akbar, Steven Tsz K. Chan, Julian Chaubell, Narendra N. Das, Roy Scott Dunbar, Dara Entekhabi, Anouk Gevaert, Thomas J. Jackson, Olivier Merlin, Mahta Moghaddam, Jinzheng Peng, Jeffrey Piepmeier, Maria Piles, Gerard Portal, Christoph Rüdiger, Vivien Stefan, Xiaoling Wu, Nan Ye, Simon Yueh
2017 J jnl
Remote. Sens.
Jana Kolassa, Rolf H. Reichle, Qing Liu, Michael H. Cosh, David D. Bosch, Todd G. Caldwell, Andreas Colliander, Chandra D. Holifield Collins, Thomas J. Jackson, Stanley Livingston, Mahta Moghaddam, Patrick J. Starks
2017 J jnl
IEEE Trans. Geosci. Remote. Sens.
Xueyang Duan, Mahta Moghaddam
2017 C conf
IGARSS
Alireza Tabatabaeenejad, Morteza Sadeghi, Mahta Moghaddam, Markus Tuller, Scott B. Jones
2017 C conf
IGARSS
Richard H. Chen, Alireza Tabatabaeenejad, Mahta Moghaddam
2017 J jnl
IEEE Trans. Geosci. Remote. Sens.
Seung-Bum Kim, Jakob J. van Zyl, Joel T. Johnson, Mahta Moghaddam, Leung Tsang, Andreas Colliander, Roy Scott Dunbar, Thomas J. Jackson, Sermsak Jaruwatanadilok, Richard D. West, Aaron Berg, Todd Caldwell, Michael H. Cosh, David C. Goodrich, Stanley Livingston, Ernesto López-Baeza, Tracy L. Rowlandson, Marc Thibeault, Jeffrey P. Walker, Dara Entekhabi, Eni G. Njoku, Peggy E. O'Neill, Simon H. Yueh
2016 C conf
IGARSS
Ruzbeh Akbar, Steven Tsz K. Chan, Nardenrda Daso, Seung-Bum Kim, Dara Entekhabi, Mahta Moghaddam
2016 C conf
IGARSS
Richard H. Chen, Alireza Tabatabaeenejad, Mahta Moghaddam
2016 C conf
IGARSS
Alireza Tabatabaeenejad, Richard H. Chen, Mahta Moghaddam
2016 C conf
IGARSS
Seyed Hamed Alemohammad, Thomas Jagdhuber, Mahta Moghaddam, Dara Entekhabi
2016 J jnl
IEEE Trans. Instrum. Meas.
Agnelo R. Silva, Mahta Moghaddam
2016 J jnl
IEEE Trans. Geosci. Remote. Sens.
Mariko S. Burgin, Uday K. Khankhoje, Xueyang Duan, Mahta Moghaddam
2016 C conf
IGARSS
Ruzbeh Akbar, Mahta Moghaddam
2016 C conf
IGARSS
Jane Whitcomb, Daniel Clewley, Ruzbeh Akbar, Agnelo R. Silva, Aaron A. Berg, Justin R. Adams, Mahta Moghaddam
2016 C conf
IGARSS
Seung-Bum Kim, Jakob J. van Zyl, Joel T. Johnson, Mahta Moghaddam, Leung Tsang, Andreas Colliander, Roy Scott Dunbar, Thomas J. Jackson, Sermsak Jaruwatanadilok, Richard D. West, Aaron A. Berg, Todd Caldwell, Michael H. Cosh, Ernesto López-Baeza, Marc Thibeault, Jeffrey P. Walker, Dara Entekhabi, Simon Yueh
2016 C conf
IGARSS
Le Yang, Qinhuo Liu, Mahta Moghaddam
2015 J jnl
IEEE Trans. Geosci. Remote. Sens.
Ruzbeh Akbar, Mahta Moghaddam
2015 conf
SysCon
Agnelo R. Silva, Mahta Moghaddam, Mingyan Liu
2015 J jnl
IEEE Trans. Geosci. Remote. Sens.
Jinyang Du, John S. Kimball, Marzieh Azarderakhsh, Roy Scott Dunbar, Mahta Moghaddam, Kyle C. McDonald
2015 J jnl
Remote. Sens.
Daniel Clewley, Jane Whitcomb, Mahta Moghaddam, Kyle McDonald, Bruce Chapman, Peter Bunting
2015 B conf
SAS
Agnelo R. Silva, Mahta Moghaddam
2015 J jnl
IEEE Trans. Geosci. Remote. Sens.
Alireza Tabatabaeenejad, Mariko Burgin, Xueyang Duan, Mahta Moghaddam
2015 conf
SysCon
Agnelo R. Silva, Mahta Moghaddam
2015 J jnl
IEEE Trans. Geosci. Remote. Sens.
Heather McNairn, Thomas J. Jackson, Grant Wiseman, Stephane Belair, Aaron Berg, Paul Bullock, Andreas Colliander, Michael H. Cosh, Seung-Bum Kim, Ramata Magagi, Mahta Moghaddam, Eni G. Njoku, Justin R. Adams, Saeid Homayouni, Emmanuel Ojo, Tracy L. Rowlandson, Jiali Shang, Kalifa Goita, Mehdi Hosseini
2015 J jnl
Remote. Sens.
Jinyang Du, John S. Kimball, Mahta Moghaddam
2014 J jnl
Remote. Sens.
Daniel Clewley, Peter Bunting, James D. Shepherd, Sam Gillingham, Neil Flood, John R. Dymond, Richard M. Lucas, John Armston, Mahta Moghaddam
2014 J jnl
IEEE Trans. Geosci. Remote. Sens.
Jeffrey Ouellette, Joel T. Johnson, Seung-Bum Kim, Jakob J. van Zyl, Mahta Moghaddam, Michael W. Spencer, Leung Tsang, Dara Entekhabi
2014 C conf
IGARSS
Daniel Clewley, Jane Whitcomb, Mahta Moghaddam, Kyle McDonald, Peter Bunting
2014 ch.
Encyclopedia of Remote Sensing
Mahta Moghaddam, Agnelo R. Silva, Mingyan Liu
2014 C conf
IGARSS
Mariko Burgin, Uday K. Khankhoje, Xueyang Duan, Mahta Moghaddam
2014 C conf
IGARSS
Mariko Burgin, Mahta Moghaddam
2014 J jnl
IEEE Trans. Geosci. Remote. Sens.
Seung-Bum Kim, Mahta Moghaddam, Leung Tsang, Mariko Burgin, Xiaolan Xu, Eni G. Njoku
2014 J jnl
IEEE Geosci. Remote. Sens. Lett.
Uday K. Khankhoje, Mariko Burgin, Mahta Moghaddam
2014 C conf
IGARSS
Ruzbeh Akbar, Mahta Moghaddam
2014 J jnl
IEEE Trans. Biomed. Eng.
Mark S. Haynes, John Stang, Mahta Moghaddam
2014 J jnl
IEEE Trans. Geosci. Remote. Sens.
Alexandra Georges Konings, Dara Entekhabi, Mahta Moghaddam, Sassan S. Saatchi
2013 C conf
IGARSS
Ruzbeh Akbar, Mahta Moghaddam
2013 J jnl
Int. J. Distributed Sens. Networks
Agnelo R. Silva, Mingyan Liu, Mahta Moghaddam
2013 J jnl
IEEE Trans. Geosci. Remote. Sens.
Xueyang Duan, Mahta Moghaddam
2013 J jnl
IEEE Trans. Geosci. Remote. Sens.
Ramata Magagi, Aaron Berg, Kalifa Goita, Stephane Belair, Thomas J. Jackson, Brenda Toth, Anne E. Walker, Heather McNairn, Peggy O'Neill, Mahta Moghaddam, Imen Gherboudj, Andreas Colliander, Michael H. Cosh, Mariko Burgin, Joshua B. Fisher, Seung-Bum Kim, Iliana Mladenova, Najib Djamai, Louis-Philippe Rousseau, Jon Belanger, Jiali Shang, Amine Merzouki
2013 J jnl
IEEE Trans. Geosci. Remote. Sens.
Alireza Tabatabaeenejad, Xueyang Duan, Mahta Moghaddam
2013 C conf
IGARSS
Daniel Clewley, Mahta Moghaddam, Richard M. Lucas, Peter Bunting
2013 J jnl
ACM SIGMOBILE Mob. Comput. Commun. Rev.
Agnelo R. Silva, Mingyan Liu, Mahta Moghaddam
2013 C conf
IGARSS
Mariko Burgin, Alireza Tabatabaeenejad, Mahta Moghaddam
2013 conf
GHTC
Agnelo R. Silva, Mingyan Liu, Mahta Moghaddam
2012 J jnl
IEEE Trans. Geosci. Remote. Sens.
Xueyang Duan, Mahta Moghaddam
2012 J jnl
IEEE Trans. Biomed. Eng.
John Stang, Mark S. Haynes, Paul L. Carson, Mahta Moghaddam
2012 C conf
IGARSS
Mariko Burgin, Alireza Tabatabaeenejad, Mahta Moghaddam
2012 C conf
IGARSS
Mahta Moghaddam, Alireza Tabatabaeenejad, Mariko Burgin, Xueyang Duan
2012 J jnl
Remote. Sens.
Daniel Clewley, Richard M. Lucas, Arnon Accad, John Armston, Michiala Bowen, John Dwyer, Sandy Pollock, Peter Bunting, Clive McAlpine, Teresa Eyre, Annie Kelly, João Carreiras, Mahta Moghaddam
2012 C conf
IGARSS
Ruzbeh Akbar, Mahta Moghaddam
2012 J jnl
Int. J. Biomed. Imaging
Mark S. Haynes, John Stang, Mahta Moghaddam
2012 J jnl
IEEE Trans. Geosci. Remote. Sens.
Alireza Tabatabaeenejad, Mariko Burgin, Mahta Moghaddam
2012 J jnl
J. Comput. Networks Commun.
Agnelo R. Silva, Mingyan Liu, Mahta Moghaddam
2012 C conf
IGARSS
Daniel Clewley, Richard M. Lucas, Mahta Moghaddam, Peter Bunting
2011 J jnl
IEEE Trans. Geosci. Remote. Sens.
Mariko Burgin, Daniel Clewley, Richard M. Lucas, Mahta Moghaddam
2011 conf
EUROCON
Mahta Moghaddam, M. B. Ghaznavi-Ghoushchi
2011 C conf
IGARSS
Mariko Burgin, Mahta Moghaddam
2011 J jnl
IEEE Geosci. Remote. Sens. Lett.
Alireza Tabatabaeenejad, Mahta Moghaddam
2011 C conf
IGARSS
Alireza Tabatabaeenejad, Mariko Burgin, Mahta Moghaddam
2011 C conf
IGARSS
Xueyang Duan, Mahta Moghaddam
2010 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Mahta Moghaddam, Dara Entekhabi, Yuriy Goykhman, Ke Li, Mingyan Liu, Aditya Mahajan, Ashutosh Nayyar, David I. Shuman, Demosthenis Teneketzis
2010 C conf
IGARSS
Jiancheng Shi, Kun-Shan Chen, Leung Tsang, Thomas J. Jackson, Eni G. Njoku, Jakob J. van Zyl, Peggy O'Neill, Dara Entekhabi, Joel T. Johnson, Mahta Moghaddam
2010 C conf
IGARSS
Xueyang Duan, Mahta Moghaddam
2010 C conf
IGARSS
Daniel Clewley, Richard M. Lucas, Mahta Moghaddam, Peter Bunting, John Dwyer, João Carreiras
2010 J jnl
IEEE Trans. Biomed. Eng.
Mark S. Haynes, Mahta Moghaddam
2010 C conf
IGARSS
Jane Whitcomb, Mahta Moghaddam, Kyle McDonald, Erika Podest, Bruce Chapman
2010 J jnl
Proc. IEEE
David I. Shuman, Ashutosh Nayyar, Aditya Mahajan, Yuriy Goykhman, Ke Li, Mingyan Liu, Demosthenis Teneketzis, Mahta Moghaddam, Dara Entekhabi
2010 C conf
IGARSS
B. Danette Allen, Scott A. Braun, James H. Crawford, Eric J. Jensen, Charles E. Miller, Mahta Moghaddam, Hal Maring
2010 C conf
IGARSS
Yuriy Goykhman, Mahta Moghaddam
2010 J jnl
IEEE Geosci. Remote. Sens. Lett.
Alireza Tabatabaeenejad, Mahta Moghaddam
2010 J jnl
Proc. IEEE
Dara Entekhabi, Eni G. Njoku, Peggy O'Neill, Kent H. Kellogg, Wade T. Crow, Wendy N. Edelstein, Jared Entin, Shawn D. Goodman, Thomas J. Jackson, Joel T. Johnson, John S. Kimball, Jeffrey R. Piepmeier, Randal D. Koster, Neil Martin, Kyle McDonald, Mahta Moghaddam, Mary Susan Moran, Rolf Reichle, Jiancheng Shi, Michael W. Spencer, Samuel W. Thurman, Leung Tsang, Jakob J. van Zyl
2009 conf
IGARSS (1)
Majid Albahkali, Mahta Moghaddam
2009 conf
IGARSS (3)
Alireza Tabatabaeenejad, Mahta Moghaddam
2009 conf
IGARSS (3)
Jane Whitcomb, Mahta Moghaddam, Kyle McDonald, Erika Podest, Bruce Chapman
2009 J jnl
IEEE Trans. Geosci. Remote. Sens.
Alireza Tabatabaeenejad, Mahta Moghaddam
2009 conf
IGARSS (2)
Jane Whitcomb, Mahta Moghaddam, Kyle McDonald, Erika Podest
2008 conf
IGARSS (5)
Mahta Moghaddam, Dara Entekhabi, Yuriy Goykhman, Mingyan Liu, Aditya Mahajan, Ashutosh Nayyar, David I. Shuman, Demosthenis Teneketzis
2008 J jnl
IEEE Trans. Instrum. Meas.
Mahta Moghaddam
2008 conf
IGARSS (3)
Alireza Tabatabaeenejad, Mahta Moghaddam
2007 J jnl
IEEE Trans. Geosci. Remote. Sens.
Chih-Hao Kuo, Mahta Moghaddam
2007 C conf
IGARSS
Alireza Tabatabaeenejad, Mahta Moghaddam
2007 J jnl
IEEE Trans. Geosci. Remote. Sens.
Mahta Moghaddam, Yahya Rahmat-Samii, Ernesto Rodríguez, Dara Entekhabi, James Hoffman, Delwyn Moller, Leland E. Pierce, Sassan Saatchi, Mark Thomson
2007 C conf
IGARSS
Chih-Hao Kuo, Mahta Moghaddam
2007 C conf
IGARSS
Jane Whitcomb, Mahta Moghaddam, Kyle McDonald, Erika Podest, Josef Kellndorfer
2006 J jnl
IEEE Trans. Geosci. Remote. Sens.
Alireza Tabatabaeenejad, Mahta Moghaddam
2006 C conf
IGARSS
Chih-Hao Kuo, Mahta Moghaddam
2006 C conf
IGARSS
Alireza Tabatabaeenejad, Mahta Moghaddam
2005 C conf
IGARSS
Chih-Hao Kuo, Mahta Moghaddam
2005 J jnl
IEEE Trans. Geosci. Remote. Sens.
Pan Liang, Mahta Moghaddam, Leland E. Pierce, Richard M. Lucas
2005 J jnl
IEEE Trans. Geosci. Remote. Sens.
Pan Liang, Leland E. Pierce, Mahta Moghaddam
2005 C conf
IGARSS
Leland E. Pierce, Mahta Moghaddam
2005 C conf
IGARSS
Richard M. Lucas, Anthony K. Milne, Alex C. Lee, Mahta Moghaddam, Natasha Cronin, Christian Witte, Phil Tickle, Mark L. Williams
2005 C conf
IGARSS
Mahta Moghaddam, Alireza Tabatabaeenejad
2004 C conf
IGARSS
Alireza Tabatabaeenejad, Mahta Moghaddam
2004 C conf
IGARSS
Pan Liang, Mahta Moghaddam, Leland E. Pierce
2004 J jnl
IEEE Trans. Geosci. Remote. Sens.
Richard M. Lucas, Mahta Moghaddam, Natasha Cronin
2003 C conf
IGARSS
Mahta Moghaddam, Kenneth R. McDonald, Josef Cihlar, Wenjun Chen
2003 C conf
IGARSS
Mahta Moghaddam, Ernesto Rodríguez, Yahya Rahmat-Samii, Delwyn Moller, James Hoffman, J. Huang, Sassan Saatchi
2003 C conf
IGARSS
Mahta Moghaddam, Richard M. Lucas
2003 C conf
IGARSS
Richard M. Lucas, Alex C. Lee, Anthony K. Milne, Natasha Cronin, Mahta Moghaddam
2002 J jnl
IEEE Trans. Geosci. Remote. Sens.
Mahta Moghaddam, Jennifer L. Dungan, Steven Acker
2002 C conf
IGARSS
Wenjun Chen, Josef Cihlar, Goran Pavlic, Quanfa Zhang, Richard Fernandes, Shusen Wang, Jeremy T. Kerr, Chhun-Huor Ung, D. T. Price, Mahta Moghaddam, Kenneth R. McDonald
2000 J jnl
IEEE Trans. Geosci. Remote. Sens.
Sassan Saatchi, Mahta Moghaddam
1999 J jnl
IEEE Trans. Geosci. Remote. Sens.
Eni G. Njoku, Yahya Rahmat-Samii, J. Sercel, William J. Wilson, Mahta Moghaddam
1999 J jnl
IEEE Trans. Geosci. Remote. Sens.
Mahta Moghaddam, Sassan S. Saatchi
1996 J jnl
Int. J. Imaging Syst. Technol.
Weng Cho Chew, Gregory P. Otto, William H. Weedon, J. H. Lin, C. C. Lu, Y. M. Wang, Mahta Moghaddam
1995 J jnl
IEEE Trans. Geosci. Remote. Sens.
Mahta Moghaddam, Sassan Saatchi
1992 J jnl
IEEE Trans. Geosci. Remote. Sens.
Mahta Moghaddam, Weng Cho Chew
1991 J jnl
Int. J. Imaging Syst. Technol.
Mahta Moghaddam, Weng Cho Chew, M. L. Oristaglio
1991
Mahta Moghaddam
tests/integration/test_elf_extractors.py
← Index tests/integration/test_elf_extractors.py python
"""
Integration tests for ELF-specific extractors.
"""
import pytest
from unittest.mock import Mock, patch, MagicMock

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


# ============================================================================
# ELFFeaturesExtractor Tests
# ============================================================================

class TestELFFeaturesExtractor:
    """Tests for ELFFeaturesExtractor class."""

    def test_extract_valid_elf(self, elf_binary_path, mock_logger):
        """Test extracting features from valid ELF file."""
        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)

    def test_extract_header_data(self, elf_binary_path, mock_logger):
        """Test ELF header data extraction."""
        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.extract()

            assert result is not None
            # Check header fields
            assert isinstance(result.ei_class, int)
            assert isinstance(result.ei_data, int)
            assert isinstance(result.e_type, int)
            assert isinstance(result.e_machine, int)
            assert isinstance(result.e_entry, int)

    def test_extract_human_readable_strings(self, elf_binary_path, mock_logger):
        """Test human-readable string fields."""
        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.extract()

            assert result is not None
            assert result.ei_class_str in ['32-bit', '64-bit', 'unknown']
            assert result.ei_data_str in ['Little-endian', 'Big-endian', 'unknown']
            assert result.e_type_str is not None
            assert result.e_machine_str is not None

    def test_extract_security_properties(self, elf_binary_path, mock_logger):
        """Test security property extraction."""
        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.extract()

            assert result is not None
            # Security flags should be 0 or 1
            assert result.is_pie in [0, 1]
            assert result.has_canary in [0, 1]
            assert result.has_nx in [0, 1]
            assert result.has_relro in [0, 1]
            assert result.has_fortify in [0, 1]

    def test_extract_counts(self, elf_binary_path, mock_logger):
        """Test section/segment/symbol counts."""
        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.extract()

            assert result is not None
            assert result.number_of_segments >= 0
            assert result.number_of_sections >= 0
            assert result.number_of_symbols >= 0
            assert result.number_of_dynamic_symbols >= 0
            assert result.number_of_relocations >= 0
            assert result.number_of_dependencies >= 0

    def test_extract_build_info(self, elf_binary_path, mock_logger):
        """Test build information extraction."""
        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.extract()

            assert result is not None
            # Build ID may or may not be present
            if result.build_id is not None:
                assert isinstance(result.build_id, str)
            assert result.gnu_hash_present in [0, 1]
            assert result.has_debug_info in [0, 1]

    def test_extract_invalid_elf(self, pe_binary_path, mock_logger):
        """Test extraction 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)

            result = extractor.extract()

            # Should return None for invalid ELF
            assert result is None


# ============================================================================
# ELFSectionExtractor Tests
# ============================================================================

class TestELFSectionExtractor:
    """Tests for ELFSectionExtractor class."""

    def test_extract_sections(self, elf_binary_path, mock_logger):
        """Test section extraction."""
        from redb.extractors.elf_extractors.elf_sections import ELFSectionExtractor

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

            result = extractor.extract()

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

    def test_section_properties(self, elf_binary_path, mock_logger):
        """Test section property extraction."""
        from redb.extractors.elf_extractors.elf_sections import ELFSectionExtractor
        from redb.models.dataclasses import ELFSection

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

            result = extractor.extract()

            if result is not None and len(result) > 0:
                section = result[0]
                assert isinstance(section, ELFSection)
                assert section.section_name is not None
                assert isinstance(section.section_type, int)
                assert isinstance(section.section_flags, int)
                assert section.section_entropy >= 0

    def test_section_hashes(self, elf_binary_path, mock_logger):
        """Test section hash computation."""
        from redb.extractors.elf_extractors.elf_sections import ELFSectionExtractor

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

            result = extractor.extract()

            if result is not None and len(result) > 0:
                for section in result:
                    if section.section_sha256:
                        assert len(section.section_sha256) == 64
                    if section.section_md5:
                        assert len(section.section_md5) == 32


# ============================================================================
# ELFSegmentExtractor Tests
# ============================================================================

class TestELFSegmentExtractor:
    """Tests for ELFSegmentExtractor class."""

    def test_extract_segments(self, elf_binary_path, mock_logger):
        """Test segment extraction."""
        from redb.extractors.elf_extractors.elf_segments import ELFSegmentExtractor

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

            result = extractor.extract()

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

    def test_segment_properties(self, elf_binary_path, mock_logger):
        """Test segment property extraction."""
        from redb.extractors.elf_extractors.elf_segments import ELFSegmentExtractor
        from redb.models.dataclasses import ELFSegment

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

            result = extractor.extract()

            if result is not None and len(result) > 0:
                segment = result[0]
                assert isinstance(segment, ELFSegment)
                assert isinstance(segment.segment_type, int)
                assert isinstance(segment.segment_flags, int)


# ============================================================================
# ELFSymbolExtractor Tests
# ============================================================================

class TestELFSymbolExtractor:
    """Tests for ELFSymbolExtractor class."""

    def test_extract_symbols(self, elf_binary_path, mock_logger):
        """Test symbol extraction."""
        from redb.extractors.elf_extractors.elf_symbols import ELFSymbolExtractor

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

            result = extractor.extract()

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

    def test_symbol_properties(self, elf_binary_path, mock_logger):
        """Test symbol property extraction."""
        from redb.extractors.elf_extractors.elf_symbols import ELFSymbolExtractor
        from redb.models.dataclasses import ELFSymbol

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

            result = extractor.extract()

            if result is not None and len(result) > 0:
                symbol = result[0]
                assert isinstance(symbol, ELFSymbol)
                assert symbol.symbol_name is not None
                assert isinstance(symbol.symbol_type, int)
                assert isinstance(symbol.symbol_bind, int)


# ============================================================================
# ELFImportExtractor Tests
# ============================================================================

class TestELFImportExtractor:
    """Tests for ELFImportExtractor class."""

    def test_extract_imports(self, elf_binary_path, mock_logger):
        """Test import extraction."""
        from redb.extractors.elf_extractors.elf_imports import ELFImportExtractor

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

            result = extractor.extract()

            # May be None if no imports
            if result is not None:
                assert hasattr(result, 'elf_imports_total')

    def test_import_functions(self, elf_binary_path, mock_logger):
        """Test import function extraction."""
        from redb.extractors.elf_extractors.elf_imports import ELFImportExtractor
        from redb.models.dataclasses import ELFImport

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

            result = extractor.extract()

            if result is not None:
                assert isinstance(result, ELFImport)
                assert isinstance(result.elf_imports_total, int)


# ============================================================================
# ELFExportExtractor Tests
# ============================================================================

class TestELFExportExtractor:
    """Tests for ELFExportExtractor class."""

    def test_extract_exports(self, elf_binary_path, mock_logger):
        """Test export extraction."""
        from redb.extractors.elf_extractors.elf_exports import ELFExportExtractor

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

            result = extractor.extract()

            # May be None if no exports
            if result is not None:
                assert hasattr(result, 'elf_exports_total')

    def test_export_functions(self, elf_binary_path, mock_logger):
        """Test export function extraction."""
        from redb.extractors.elf_extractors.elf_exports import ELFExportExtractor
        from redb.models.dataclasses import ELFExport

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

            result = extractor.extract()

            if result is not None:
                assert isinstance(result, ELFExport)


# ============================================================================
# ELFDependencyExtractor Tests
# ============================================================================

class TestELFDependencyExtractor:
    """Tests for ELFDependencyExtractor class."""

    def test_extract_dependencies(self, elf_binary_path, mock_logger):
        """Test dependency extraction."""
        from redb.extractors.elf_extractors.elf_dependencies import ELFDependencyExtractor

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

            result = extractor.extract()

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

    def test_dependency_properties(self, elf_binary_path, mock_logger):
        """Test dependency property extraction."""
        from redb.extractors.elf_extractors.elf_dependencies import ELFDependencyExtractor
        from redb.models.dataclasses import ELFDependency

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

            result = extractor.extract()

            if result is not None and len(result) > 0:
                dep = result[0]
                assert isinstance(dep, ELFDependency)
                assert dep.dependency_name is not None


# ============================================================================
# ELFRelocationExtractor Tests
# ============================================================================

class TestELFRelocationExtractor:
    """Tests for ELFRelocationExtractor class."""

    def test_extract_relocations(self, elf_binary_path, mock_logger):
        """Test relocation extraction."""
        from redb.extractors.elf_extractors.elf_relocations import ELFRelocationExtractor

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

            result = extractor.extract()

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

    def test_relocation_properties(self, elf_binary_path, mock_logger):
        """Test relocation property extraction."""
        from redb.extractors.elf_extractors.elf_relocations import ELFRelocationExtractor
        from redb.models.dataclasses import ELFRelocation

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

            result = extractor.extract()

            if result is not None and len(result) > 0:
                reloc = result[0]
                assert isinstance(reloc, ELFRelocation)
                assert isinstance(reloc.relocation_offset, int)
                assert isinstance(reloc.relocation_type, int)


# ============================================================================
# ELFNotesExtractor Tests
# ============================================================================

class TestELFNotesExtractor:
    """Tests for ELFNotesExtractor class."""

    def test_extract_notes(self, elf_binary_path, mock_logger):
        """Test notes extraction."""
        from redb.extractors.elf_extractors.elf_notes import ELFNotesExtractor

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

            result = extractor.extract()

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

    def test_note_properties(self, elf_binary_path, mock_logger):
        """Test note property extraction."""
        from redb.extractors.elf_extractors.elf_notes import ELFNotesExtractor
        from redb.models.dataclasses import ELFNote

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

            result = extractor.extract()

            if result is not None and len(result) > 0:
                note = result[0]
                assert isinstance(note, ELFNote)
                assert note.note_name is not None
                assert isinstance(note.note_type, int)


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

class TestELFExtractorIntegration:
    """Integration tests for ELF extractors."""

    def test_all_extractors_valid_elf(self, elf_binary_path, mock_logger):
        """Test all ELF extractors with valid ELF file."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor
        from redb.extractors.elf_extractors.elf_sections import ELFSectionExtractor
        from redb.extractors.elf_extractors.elf_segments import ELFSegmentExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            features_ext = ELFFeaturesExtractor(elf_binary_path, mock_logger)
            sections_ext = ELFSectionExtractor(elf_binary_path, mock_logger)
            segments_ext = ELFSegmentExtractor(elf_binary_path, mock_logger)

            features_result = features_ext.extract()
            sections_result = sections_ext.extract()
            segments_result = segments_ext.extract()

            # All should extract something
            assert features_result is not None
            assert sections_result is not None
            assert segments_result is not None

    def test_hash_consistency_across_extractors(self, elf_binary_path, mock_logger):
        """Test that hashes are consistent across all extractors."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor
        from redb.extractors.elf_extractors.elf_sections import ELFSectionExtractor

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

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

    def test_clickhouse_tables_unique(self, elf_binary_path, mock_logger):
        """Test that each extractor has a unique ClickHouse table."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor
        from redb.extractors.elf_extractors.elf_sections import ELFSectionExtractor
        from redb.extractors.elf_extractors.elf_segments import ELFSegmentExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            features_ext = ELFFeaturesExtractor(elf_binary_path, mock_logger)
            sections_ext = ELFSectionExtractor(elf_binary_path, mock_logger)
            segments_ext = ELFSegmentExtractor(elf_binary_path, mock_logger)

            tables = {
                features_ext.get_clickhouse_table(),
                sections_ext.get_clickhouse_table(),
                segments_ext.get_clickhouse_table(),
            }

            # All tables should be unique
            assert len(tables) == 3


# ============================================================================
# Advanced Binary Tests
# ============================================================================

class TestELFAdvancedBinary:
    """Tests using the hello_advanced binary."""

    def test_advanced_features_extraction(self, elf_advanced_binary_path, mock_logger):
        """Test feature extraction from 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)

            result = extractor.extract()

            assert result is not None
            assert result.number_of_sections > 0

    def test_advanced_sections_extraction(self, elf_advanced_binary_path, mock_logger):
        """Test section extraction from advanced ELF binary."""
        from redb.extractors.elf_extractors.elf_sections import ELFSectionExtractor

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

            result = extractor.extract()

            assert result is not None
            assert len(result) > 0

            # Check for common ELF sections
            section_names = [s.section_name for s in result]
            # Most ELF files have .text section
            assert any('.text' in name for name in section_names)

    def test_advanced_segments_extraction(self, elf_advanced_binary_path, mock_logger):
        """Test segment extraction from advanced ELF binary."""
        from redb.extractors.elf_extractors.elf_segments import ELFSegmentExtractor

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

            result = extractor.extract()

            assert result is not None
            assert len(result) > 0


# ============================================================================
# Export Data Tests
# ============================================================================

class TestELFExtractorExportData:
    """Tests for export data preparation."""

    def test_features_prepare_export_clickhouse(self, elf_binary_path, mock_logger):
        """Test ClickHouse export preparation for features."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor.prepare_export_data("ClickHouseExporter")

            assert result is not None
            data, column_names, column_type_names = result

            assert 'sha256' in column_names
            assert 'ei_class' in column_names
            assert 'e_machine' in column_names
            assert 'is_pie' in column_names

    def test_sections_prepare_export_clickhouse(self, elf_binary_path, mock_logger):
        """Test ClickHouse export preparation for sections."""
        from redb.extractors.elf_extractors.elf_sections import ELFSectionExtractor

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

            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

    def test_segments_prepare_export_clickhouse(self, elf_binary_path, mock_logger):
        """Test ClickHouse export preparation for segments."""
        from redb.extractors.elf_extractors.elf_segments import ELFSegmentExtractor

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

            result = extractor.prepare_export_data("ClickHouseExporter")

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