Wei Fang

172 papers A* 5A 1B 10C 3Misc 2Journal 99Unranked 52
YearRankTypeTitle / Venue / Authors
2026 J jnl
Expert Syst. Appl.
Ruilong Xu, Huan Fang, Wei Fang, Fengqun Wang, Chenbin Zhao
2026 J jnl
CoRR
Wei Fang, James Glass
2026 A* conf
AAAI
Kaixiang Yang, Boyang Shen, Xin Li, Yuchen Dai, Yuxuan Luo, Yueran Ma, Wei Fang, Qiang Li, Zhiwei Wang
2026 J jnl
IEEE Commun. Lett.
Guoqing Chen, Lixing Wang, Qingxu Deng, Wei Fang, Daqing Chen, Chao Shi, Jingyu Dong
2026 A* conf
AAAI
Yingjie Guo, Jinxin Lv, Wei Fang, Qiang Li, Zhiwei Wang
2026 J jnl
IEEE Robotics Autom. Lett.
Yebei Wen, Hanyu Zhan, Jizhou Lai, Wei Fang, Shenghong Xie, Cheng Yuan
2026 J jnl
IEEE Commun. Lett.
Jian Wang, Lixing Wang, Haotian Zhang, Qingxu Deng, Wei Fang, Daqing Chen, Chao Shi, Jingyu Dong
2026 J jnl
Pattern Recognit.
Chongwei Wu, Xiaoyu Zeng, Tingwei Quan, Jinxin Lv, Xu Zhang, Wei Fang, Qiang Li, Zhiwei Wang
2026 J jnl
Adv. Eng. Informatics
Wei Fang, Yingfen Xu, Tienong Zhang, Yiwei Wang, Lianyu Zheng
2025 J jnl
J. Intell. Manuf.
Wei Fang, Tienong Zhang, Lixi Chen, Hao Hu
2025 J jnl
Autom. Remote. Control.
Hongkui Hu, Biao Chen, Wei Fang
2025 J jnl
CoRR
Wei Fang, Chiyao Wang, Wenshuai Ma, Hui Liu, Jianqiang Hu, Xiaona Niu, Yi Chu, Mingming Zhang, Jingxiao Yang, Dongwei Zhang, Zelin Li, Pengyun Liu, Jiawei Zheng, Pengke Zhang, Chaoshi Qin, Wangang Guo, Bin Wang, Yugang Xue, Wei Zhang, Zikuan Wang, Rui Zhu, Yihui Cao, Quanmao Lu, Rui Meng, Yan Li
2025 J jnl
J. Ind. Inf. Integr.
Wei Fang, Lixi Chen, Lei Han, Ji Ding
2025 J jnl
IEEE Trans. Instrum. Meas.
Pin Lyu, Jiong Li, Jizhou Lai, Wei Fang, Qian Wang
2025 B conf
CogSci
Wei Fang, Naiqi G. Xiao
2025 J jnl
Inf. Sci.
Weiyi Zhong, Wei Fang, Yifan Zhao, Sifeng Wang, Chao Yan, Rong Jiang, Maqbool Khan, Xuan Yang, Wajid Rafique
2025 J jnl
CoRR
Kaixiang Yang, Boyang Shen, Xin Li, Yuchen Dai, Yuxuan Luo, Yueran Ma, Wei Fang, Qiang Li, Zhiwei Wang
2025 J jnl
BMC Medical Imaging
Zhu Zhu, Kaiying Wu, Jian Lu, Sunxian Dai, Dabo Xu, Wei Fang, Yixing Yu, Wenhao Gu
2025 J jnl
Technol. Anal. Strateg. Manag.
Yanan Zhao, Wei Fang
2025 J jnl
Adv. Eng. Informatics
Tienong Zhang, Yuqing Cui, Wei Fang
2025 J jnl
Comput. Medical Imaging Graph.
Fangfang Chen, Wei Fang, Qinghua Wu, Miao Zhou, Wenhui Guo, Liangqing Lin, Zhanheng Chen, Zui Zou
2025 conf
ACL (Findings)
Wei Fang, Yang Zhang, Kaizhi Qian, James R. Glass, Yada Zhu
2025 J jnl
CoRR
Wei Fang, Yang Zhang, Kaizhi Qian, James Glass, Yada Zhu
2025 J jnl
IEEE Trans. Instrum. Meas.
Qian Wang, Pin Lyu, Jizhou Lai, Shiyu Bai, Wei Fang, Jiong Li, Lu Zeng, Yicong Chen
2025 J jnl
Adv. Eng. Informatics
Wei Fang, Qiankun Zhang, Tienong Zhang, Anbin Sun, Zhi Zou
2025 J jnl
IEEE Trans. Veh. Technol.
Ji Wang, Wei Fang, Jian Xiao, Yi Zheng, Le Zheng, Fan Liu
2025 J jnl
Comput. Methods Programs Biomed.
Haoyuan An, Wei Fang, Haiyan Chen, Weiying Huang, Hongbin Liu, Zhenlei Zhang, Hanzhu Zhao, Yanbing Zhang, Miaoqing Zhao, Jianfeng Qiu, Wei Li
2025 J jnl
Technol. Anal. Strateg. Manag.
Johnpaul Ogochukwu Igbonaju, Yang Liu, Wei Fang
2025 J jnl
IEEE Access
Yuefeng Yan, Shaodong Jing, Jiao Wang, Xuedong Ma, Xiaozhong Liu, Xu Zhang, Liu Liu, Wei Fang
2025 J jnl
IEEE Trans. Ind. Electron.
Qianjin Zhang, Dikui Mei, Jinhui Qian, Sucheng Liu, Wei Fang, Xiaodong Liu
2024 conf
iConference (1)
Wei Fang, Lihong Zhou, Qinggong Shi
2024 J jnl
Sensors
Hong Zhang, Wei Fang, Jiayun Li
2024 J jnl
Comput. Ind. Eng.
Wei Fang, Tienong Zhang, Zeyu Wang, Ji Ding
2024 conf
CCBR (1)
Zhan Teng, Wei Fang, Zhanli Liu, Lixi Chen
2024 J jnl
Robotics Comput. Integr. Manuf.
Wei Fang, Lixi Chen, Tienong Zhang, Hao Hu, Jiapeng Bi
2024 A* conf
KDD
Fengqi Liang, Huan Zhao, Yuhan Quan, Wei Fang, Chuan Shi
2024 J jnl
Remote. Sens.
Wei Fang, Hui Qin, Qian Lin, Benjun Jia, Yuqi Yang, Keyan Shen
2024 J jnl
Frontiers Inf. Technol. Electron. Eng.
Ji Wang, Jiayi Sun, Wei Fang, Zhao Chen, Yue Liu, Yuanwei Liu
2024 J jnl
Remote. Sens.
Shuqi Li, Zhitao Luo, Yanfeng Liu, Wei Fang, Yuwei Wang, Ruidong Jia, Duo Wu, Baoqi Song, Xiaolong Yi, Xin Ye
2024 J jnl
IEEE Access
Cong Zhao, Kai Wang, Ye Jiang, Xin Ye, Xiaolong Yi, Wei Fang, Ping Zhu, Shuqi Li, Zhitao Luo
2024 J jnl
CoRR
Xiuqin Zhong, Shengyuan Yan, Gongqi Lin, Hongguang Fu, Liang Xu, Siwen Jiang, Lei Huang, Wei Fang
2024 J jnl
Remote. Sens.
Hanyuan Zhang, Xin Ye, Duo Wu, Yuwei Wang, Dongjun Yang, Yuchen Lin, Hang Dong, Jun Zhou, Wei Fang
2024 conf
EACL (Findings)
Wei Fang, Yung-Sung Chuang, James R. Glass
2024 conf
MICCAI (2)
Chongwei Wu, Xiaoyu Zeng, Hao Wang, Xu Zhang, Wei Fang, Qiang Li, Zhiwei Wang
2024 conf
ICEED
Wei Fang, Shakeel Ahmad, Heyi Zhang, Samee Ur Rehman, Duolun Li, Jinsong Tao
2024 J jnl
Behav. Inf. Technol.
Wei Fang, Chen Nie
2024 J jnl
Artif. Intell. Eng. Des. Anal. Manuf.
Zhilong Song, Wenhong Zhao, Xiao Zhang, Mingfeng Ke, Wei Fang, Binghai Lyu
2024 J jnl
CoRR
Zhiwei Wang, Xiaoyu Zeng, Chongwei Wu, Jinxin Lv, Xu Zhang, Wei Fang, Qiang Li
2023 C ed.
ICIS
Yuan Liu, Roger Lee, Wei Fang, Fanzhang Li, Shitong Wang, Dongrui Wu, Yinghui Wang, Xiajun Wu
2023 J jnl
Remote. Sens.
Wei Fang, Hui Qin, Guanjun Liu, Xin Yang, Zhanxing Xu, Benjun Jia, Qianyi Zhang
2023 conf
FLARE@MICCAI
Pengju Lyu, Junchen Xiong, Wei Fang, Weifeng Zhang, Cheng Wang, Jianjun Zhu
2023 conf
ICPCSEE (2)
Yanhui Fang, Wei Fang, Weizhen Yang
2023 conf
CCRIS
Junchen Xiong, Pengju Lyu, Wei Fang, Xuan Li, Cheng Wang, Jianjun Zhu
2023 J jnl
Remote. Sens.
Beibei Shen, Jingpeng Guo, Zhenwang Li, Jiquan Chen, Wei Fang, Maira Kussainova, Amartuvshin Amarjargal, Alim Pulatov, Ruirui Yan, Oleg A. Anenkhonov, Wenneng Zhou, Xiaoping Xin
2023 conf
ACL (Findings)
Yung-Sung Chuang, Wei Fang, Shang-wen Li, Wen-tau Yih, James R. Glass
2023 J jnl
CoRR
Yung-Sung Chuang, Wei Fang, Shang-wen Li, Wen-tau Yih, James R. Glass
2023 J jnl
Robotics Comput. Integr. Manuf.
Wei Fang, Lixi Chen, Tienong Zhang, Chengjun Chen, Zhan Teng, Lihui Wang
2023 J jnl
CoRR
Tianhua Zhang, Hongyin Luo, Yung-Sung Chuang, Wei Fang, Luc Gaitskell, Thomas Hartvigsen, Xixin Wu, Danny Fox, Helen Meng, James R. Glass
2023 J jnl
Comput. Electron. Agric.
Yi-Min Wu, Shao-Yuan Liu, Bo-You Shi, Jui-Yu Peng, Zhi-Wei Kao, Yi-Yi Chen, Ting-Yu Hsieh, Hsing-Ying Chung, Chi-Yi Lin, Wei Fang, Lin-Chi Chen
2023 conf
ICIG (4)
Pengju Lyu, Cheng Wang, Wei Fang, Junchen Xiong, Xuan Li, Hao Luo, Wenjian Liu, Jianjun Zhu
2023 A conf
CIKM
Fengqi Liang, Huan Zhao, Zhenyi Wang, Wei Fang, Chuan Shi
2023 J jnl
Future Gener. Comput. Syst.
Yu Liu, Yunchuan Guan, Tianming Jiang, Ke Zhou, Hua Wang, Guangxing Hu, Ji Zhang, Wei Fang, Zhuo Cheng, Ping Huang
2023 J jnl
Remote. Sens.
Jing Wang, Wei Fang, Peipei Xu, Hu Li, Donghua Chen, Zuo Wang, Yuanhong You, Christopher Rafaniello
2023 J jnl
Remote. Sens.
Duo Wu, Wei Fang, Kai Wang, Xin Ye, Ruidong Jia, Dongjun Yang, Baoqi Song, Zhitao Luo, Yuwei Wang, Zhiwei Xia, Ping Zhu, Michel van Ruymbeke
2023 J jnl
Int. J. Digit. Earth
Heng Zhang, Wen Zhao, Zujie Han, Jun Zhu, Qing Zhu, Xinwen Ning, Dengke Fan, Hua Wang, Fengpin Jia, Wei Fang, Bin Yang, Weilian Li
2022 J jnl
IEEE Access
Wei Fang, Yun Chen, Ning Pan, Bin Ran
2022 conf
ROBIO
Zonghao Mu, Wei Fang, Shiqiang Zhu, Tianlei Jin, Wei Song, Xiangming Xi, Qiulan Huang, Jason Gu, Songyu Yuan
2022 conf
MLNLP
Xiyong Cui, Wei Fang
2022 J jnl
Remote. Sens.
Lei Gu, Ziye Gu, Qiang Guo, Wei Fang, Qianyi Zhang, Huaiwei Sun, Jiabo Yin, Jianzhong Zhou
2022 J jnl
Robotics Comput. Integr. Manuf.
Wei Fang, Wei Fan, Wei Ji, Lei Han, Shuhong Xu, Lianyu Zheng, Lihui Wang
2022 B conf
ICPP
Yuanzhang Wang, Fengkui Yang, Ji Zhang, Chunhua Li, Ke Zhou, Chong Liu, Zhuo Cheng, Wei Fang, Jinhu Liu
2022 A* conf
DAC
Yibin Gu, Yifan Li, Hua Wang, Li Liu, Ke Zhou, Wei Fang, Gang Hu, Jinhu Liu, Zhuo Cheng
2022 J jnl
Remote. Sens.
Hanyuan Zhang, Xin Ye, Ping Zhu, Wei Fang, Yuwei Wang
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Zhengqiang Li, Weizhen Hou, Zhenwei Qiu, Bangyu Ge, Yanqing Xie, Jin Hong, Yan Ma, Zongren Peng, Wei Fang, Dongying Zhang, Xiaobing Sun, Yanli Qiao, Jing Yu, Wentao Yang, Jun Lin, Zhongzheng Hu
2022 conf
ROBIO
Lixi Chen, Wei Fang, Zhan Teng
2022 conf
ICCT
Wei Fang, Jiabao Yu, Yanjun Ding, Xiaozhong Hu, Sheng Li, Aiqun Hu
2022 J jnl
Remote. Sens.
Xiaoshuang Ma, Zunyi Huang, Shengyuan Zhu, Wei Fang, Yinglei Wu
2022 J jnl
Remote. Sens.
Lingling Xu, Wei Xiong, Weining Yi, Zhenwei Qiu, Xiao Liu, Dongying Zhang, Wei Fang, Zhengqiang Li, Weizhen Hou, Jun Lin, Zhongzheng Hu, Tao Wang, Wenyu Cui
2021 J jnl
CoRR
Wei Fang, Zhiyong Chen
2021 J jnl
IEEE Access
Wei Fang, Changjun Xie, Bin Ran
2021 J jnl
Symmetry
Wei Fang, Gang Wang, Chang Wang
2021 J jnl
Complex.
Wei Fang, Pengli An, Siyao Liu
2021 J jnl
J. Ambient Intell. Humaniz. Comput.
Guoshen Ding, Yanli Qiao, Weining Yi, Wei Fang, Lili Du
2021 J jnl
IEEE Trans. Ind. Electron.
Zhi Li, Yunlang Xu, Xiaofeng Yang, Jie Feng, Wei Fang
2021 J jnl
SIAM/ASA J. Uncertain. Quantification
Wei Fang, Mike B. Giles
2020 J jnl
Remote. Sens.
Wei Fang, Jinguang Jiang, Shuangqiu Lu, Yilin Gong, Yifeng Tao, Yanan Tang, Peihui Yan, Haiyong Luo, Jingnan Liu
2020 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Chun-Chi Chen, Chao-Lieh Chen, Wei Fang, Yen-Chan Chu
2020 J jnl
IEEE Access
Wei Fang, Bin Ran
2020 conf
ASSE
Zhixiong Tan, Bihuan Chen, Wei Fang
2020 J jnl
CoRR
Wei Fang, Mike B. Giles
2020 J jnl
Remote. Sens.
Xin Ye, Xiaolong Yi, Chao Lin, Wei Fang, Kai Wang, Zhiwei Xia, Zhenhua Ji, Yuquan Zheng, De Sun, Jia Quan
2020 J jnl
CoRR
Wei Fang
2020 B conf
ICWE
Lubin Liu, Tong Liu, Xinglang Wang, Tao Xiao, Wei Fang, Hongyue Chen
2020 J jnl
IEEE J. Biomed. Health Informatics
Dufan Wu, Kuang Gong, Chiara Daniela Arru, Fatemeh Homayounieh, Bernardo Bizzo, Varun Buch, Hui Ren, Kyung Sang Kim, Nir Neumark, Pengcheng Xu, Zhiyuan Liu, Wei Fang, Nuobei Xie, Won Young Tak, Soo Young Park, Yu Rim Lee, Min Kyu Kang, Jung Gil Park, Alessandro Carriero, Luca Saba, Mahsa Masjedi, Hamidreza Talari, Rosa Babaei, Hadi Karimi Mobin, Shadi Ebrahimian, Ittai Dayan, Mannudeep K. Kalra, Quanzheng Li
2020 J jnl
J. Intell. Manuf.
Wei Fang, Lianyu Zheng
2019 conf
ISMAR Adjunct
Wei Fang, Siyao Zheng, Zhen Liu
2019 conf
CSAE
Furong Jing, Yongsheng Cao, Wei Fang, Yanqing Chen
2019 conf
NAACL-HLT (Demonstrations)
Moin Nadeem, Wei Fang, Brian Xu, Mitra Mohtarami, James R. Glass
2019 J jnl
CoRR
Moin Nadeem, Wei Fang, Brian Xu, Mitra Mohtarami, James R. Glass
2019 J jnl
Intell. Data Anal.
Haizhou Du, Wei Fang, Yi Wang
2019 conf
ISMAR Adjunct
Yi Lyu, Shuhong Xu, Wei Fang, Chengcheng Wu, Tianzhuang Cheng
2019 J jnl
IEEE Trans. Ind. Electron.
Dan Shi, Fangfei Zhang, Nan Wang, Wei Fang
2019 J jnl
IEEE Robotics Autom. Lett.
Kui Yang, Wei Fang, Yan Zhao, Nianmao Deng
2019 conf
ICANN (4)
Si Chen, Pengfei Wang, Wei Fang, Xingchen Deng, Feng Zhang
2019 J jnl
IEEE ACM Trans. Audio Speech Lang. Process.
Chia-Hsuan Lee, Hung-yi Lee, Szu-Lin Wu, Chi-Liang Liu, Wei Fang, Juei-Yang Hsu, Bo-Hsiang Tseng
2019 conf
BigCom
Haizhou Du, Wei Fang, Qing Liu, Zhenchen Yang, Xiaofeng Wang
2019 J jnl
Remote. Sens.
Peipei Xu, Wei Fang, Tao Zhou, Xiang Zhao, Hui Luo, George Hendrey, Chuixiang Yi
2019 B conf
IJCNN
Donghui Liu, Wei Fang, Ziwei Wang
2019 J jnl
Sensors
Wei Fang, Dongxu Wei, Ran Zhang
2019 J jnl
CoRR
Wei Fang, Yu-An Chung, James R. Glass
2019 J jnl
Comput. Phys. Commun.
Venkat Kapil, Mariana Rossi, Ondrej Marsalek, Riccardo Petraglia, Yair Litman, Thomas Spura, Bingqing Cheng, Alice Cuzzocrea, Robert H. Meißner, David M. Wilkins, Benjamin A. Helfrecht, Przemyslaw Juda, Sébastien P. Bienvenue, Wei Fang, Jan Kessler, Igor Poltavsky, Steven Vandenbrande, Jelle Wieme, Michele Ceriotti
2018 J jnl
Signal Image Video Process.
Huizhong Ji, Yusen Li, Enqing Dong, Peng Xue, Wenshuo Xiong, Wenyan Sun, Zhenchao Tang, Dejing Zhang, Wei Fang
2018 Misc conf
ITNAC
Bihuan Chen, Zhixiong Tan, Wei Fang
2018 J jnl
Int. J. Emerg. Technol. Learn.
Wei Fang
2018 conf
CSCloud/EdgeCom
Haizhou Du, Shuqing Zeng, Tingting Dou, Wei Fang, Yi Wang, Chenlu Zhang
2018 conf
BigComp
Haizhou Du, Wei Fang, Haining Huang, Shuqing Zeng
2018 J jnl
Symmetry
Wei Fang, Wei-Hua Liu, Jia-Bao Liu, Fu-Yuan Chen, Zhen-Mu Hong, Zheng-Jiang Xia
2018 J jnl
Discret. Appl. Math.
Wei Fang, Yi Wang, Jia-Bao Liu, Guangming Jing
2018 J jnl
IEEE Access
Siyao Liu, Xiangyun Gao, Wei Fang, Qingru Sun, Sida Feng, Xueyong Liu, Sui Guo
2018 A* conf
CVPR
Chung-wei Lee, Wei Fang, Chih-Kuan Yeh, Yu-Chiang Frank Wang
2017 conf
ICC Workshops
Wei Fang, Mithun Mukherjee, Lei Shu, Zhangbing Zhou, Gerhard P. Hancke
2017 J jnl
IEEE Trans. Ind. Informatics
Zhangbing Zhou, Wei Fang, Jianwei Niu, Lei Shu, Mithun Mukherjee
2017 J jnl
IEEE Access
Zhangbing Zhou, Jiabei Xu, Zhenjiang Zhang, Fei Lei, Wei Fang
2017 C conf
IECON
Wei Fang, Zeyu Zhang, Mithun Mukherjee, Lei Shu, Zhangbing Zhou
2017 J jnl
Synth.
Wei Fang
2017 J jnl
CoRR
Chung-wei Lee, Wei Fang, Chih-Kuan Yeh, Yu-Chiang Frank Wang
2017 J jnl
Comput. Ind.
Wei Fang, Lianyu Zheng, Xiangyong Wu
2017 conf
IPSN
Lei Shu, Mithun Mukherjee, Di Wang, Wei Fang, Yu Chen
2017 J jnl
Sensors
Wei Fang, Lianyu Zheng, Huanjun Deng, Hongbo Zhang
2017 conf
IPSN
Mithun Mukherjee, Lei Shu, Wei Fang, Zhangbing Zhou
2017 conf
MICCAI (3)
Zhe Wang, Yanxin Yin, Jianping Shi, Wei Fang, Hongsheng Li, Xiaogang Wang
2017 J jnl
CoRR
Zhe Wang, Yanxin Yin, Jianping Shi, Wei Fang, Hongsheng Li, Xiaogang Wang
2016 B conf
CoNLL
Wei Fang, Jianwen Zhang, Dilin Wang, Zheng Chen, Ming Li
2016 J jnl
CoRR
Wei Fang, Juei-Yang Hsu, Hung-yi Lee, Lin-Shan Lee
2016 conf
SLT
Wei Fang, Juei-Yang Hsu, Hung-yi Lee, Lin-Shan Lee
2016 conf
IIKI
Wei Fang, Zhangbing Zhou, Lei Shu, Xiaolei Wang, Dengbiao Tu, Yongping Xiong
2015 J jnl
Int. J. Distributed Sens. Networks
Chengqun Chu, Yongfeng Ren, Xin Liu, Yongqiu Zheng, Wei Fang
2015 J jnl
IEEE Trans. Geosci. Remote. Sens.
Wei Fang, Xianfeng Huang, Fan Zhang, Deren Li
2014 J jnl
IEEE Trans. Ind. Informatics
Wei Fang, Xiao-Dong Liu, Sucheng Liu, Yan-Fei Liu
2013 J jnl
IEEE Trans. Ind. Informatics
Wei Fang, Xiao-Dong Liu, Yan-Fei Liu
2013 conf
IEEE SCC
Da Deng, Zhihui Lu, Wei Fang, Jie Wu
2013 B conf
PIMRC
Huan Sun, Wei Fang
2013 conf
VTC Spring
Huan Sun, Wei Fang
2013 J jnl
Sci. China Inf. Sci.
Fan Zhang, Xianfeng Huang, Wei Fang, Deren Li
2013 conf
INCoS
Yujie Hao, Wei Fang
2012 conf
VTC Fall
Qinglin Luo, Wei Fang, Tao Yang, Dongyao Wang
2012 conf
ISB
Wei Fang, Xingzhi Chang, Xiaoquan Su, Jian Xu, Deli Zhang, Kang Ning
2012 conf
CHINACOM
Shibo Hou, Xing Zhang, Huanyang Zheng, Long Zhao, Wei Fang
2012 conf
ISIE
Wei Fang, Bingwei He
2012 conf
CHINACOM
Wei Fang, Chunjing Hu, Zhuo Sun, Shibo Hou
2012 conf
VTC Spring
Wei Fang, Huan Sun, Jinhui Chen
2012 B conf
PIMRC
Huan Sun, Wei Fang, Jianguo Liu, Yan Meng
2012 conf
VTC Spring
Jinhui Chen, Wei Fang, Fanglei Sun, Peng Shang, Jun Wang
2012 conf
IEEE SCC
Wei Fang, Zhihui Lu, Jie Wu, ZhenYin Cao
2012 J jnl
EURASIP J. Wirel. Commun. Netw.
Qinglin Luo, Wei Fang, Jinsong Wu, Qingchun Chen
2011 conf
VTC Spring
Huan Sun, Wei Fang, Lin Yang
2011 conf
VTC Spring
Zheng Liang, Qingshan Zhang, Jun Zheng, Jiayuan Chen, Wei Fang
2011 conf
EMEIT
Zhen Yang, Hui Wang, Xiaoming Han, Wei Fang
2011 B conf
PIMRC
Huan Sun, Xiaobo Zhang, Wei Fang
2011 B conf
PIMRC
Huan Sun, Wei Fang
2011 conf
VTC Spring
Lin Yang, Lu Zhang, Tao Yang, Wei Fang
2011 conf
VTC Spring
Wei Fang, Huan Sun, Lin Yang
2011 Misc conf
ICIG
Wei Fang, Yong Zhao, Yule Yuan, Kai Liu
2011 conf
VTC Spring
Tao Yang, Lin Yang, Wei Fang
2011 conf
ITSC
Yong Zhao, Yule Yuan, Subin Bai, Kai Liu, Wei Fang
2010 C conf
NPC
Wei Fang, Guangzhong Sun, Peng Zheng, Tiening He, Guoliang Chen
2009 conf
ISNN (2)
Zhihong Feng, Zhigui Lin, Wei Fang, Wei Wang, Zhitao Xiao
2007 B conf
SMC
Wei Fang, Pan Xiaodan
2006 J jnl
Int. J. Bifurc. Chaos
Hui Cao, Wei Fang, Viktor A. Podolskiy, Evgenii Narimanov
2006 conf
SoSE
Lu Jing, Wei Fang, Chen Qinghui
2005 conf
Multimedia Information Retrieval
Huamin Feng, Wei Fang, Sen Liu, Yong Fang
2005 conf
CIS (1)
Wei Fang, Sen Liu, Huamin Feng, Yong Fang
tests/conftest.py
← Index tests/conftest.py python
"""
Pytest configuration and shared fixtures for REDB unit tests.
"""
import os
import sys
import pytest
import logging
import tempfile
import hashlib
from unittest.mock import Mock, MagicMock, patch
from pathlib import Path

# Add the project root to the path
sys.path.insert(0, str(Path(__file__).parent.parent))

# Test files directory
TEST_FILES_DIR = Path(__file__).parent.parent / "test_files"


# ============================================================================
# Logger Fixtures
# ============================================================================

@pytest.fixture
def mock_logger():
    """Create a mock logger for testing."""
    logger = Mock()
    logger.debug = Mock()
    logger.info = Mock()
    logger.warning = Mock()
    logger.error = Mock()
    return logger


@pytest.fixture
def real_logger():
    """Create a real logger for testing with debug output."""
    logger = logging.getLogger("test_logger")
    logger.setLevel(logging.DEBUG)
    if not logger.handlers:
        handler = logging.StreamHandler()
        handler.setLevel(logging.DEBUG)
        formatter = logging.Formatter('%(levelname)s - %(message)s')
        handler.setFormatter(formatter)
        logger.addHandler(handler)
    return logger


# ============================================================================
# Test Binary Files Fixtures
# ============================================================================

@pytest.fixture
def elf_binary_path():
    """Path to the ELF test binary."""
    path = TEST_FILES_DIR / "hello"
    if not path.exists():
        pytest.skip(f"Test file not found: {path}")
    return str(path)


@pytest.fixture
def elf_advanced_binary_path():
    """Path to the advanced ELF test binary."""
    path = TEST_FILES_DIR / "hello_advanced"
    if not path.exists():
        pytest.skip(f"Test file not found: {path}")
    return str(path)


@pytest.fixture
def pe_binary_path():
    """Path to the PE test binary (.NET PE)."""
    path = TEST_FILES_DIR / "d8637bdbcfc9112fcb1f0167b398e771"
    if not path.exists():
        pytest.skip(f"Test file not found: {path}")
    return str(path)


@pytest.fixture
def elf_binary_content(elf_binary_path):
    """Read the ELF test binary content."""
    with open(elf_binary_path, "rb") as f:
        return f.read()


@pytest.fixture
def pe_binary_content(pe_binary_path):
    """Read the PE test binary content."""
    with open(pe_binary_path, "rb") as f:
        return f.read()


# ============================================================================
# Temporary Files Fixtures
# ============================================================================

@pytest.fixture
def temp_binary_file():
    """Create a temporary binary file for testing."""
    with tempfile.NamedTemporaryFile(delete=False, suffix=".bin") as f:
        # Write some test data
        f.write(b"\x7fELF" + b"\x00" * 100 + b"test data")
        temp_path = f.name

    yield temp_path

    # Cleanup
    if os.path.exists(temp_path):
        os.unlink(temp_path)


@pytest.fixture
def temp_text_file():
    """Create a temporary text file for testing."""
    with tempfile.NamedTemporaryFile(delete=False, suffix=".txt", mode="w") as f:
        f.write("This is a test file with some text content.")
        temp_path = f.name

    yield temp_path

    # Cleanup
    if os.path.exists(temp_path):
        os.unlink(temp_path)


@pytest.fixture
def temp_pe_like_file():
    """Create a temporary file with PE-like header for testing."""
    with tempfile.NamedTemporaryFile(delete=False, suffix=".exe") as f:
        # MZ header
        f.write(b"MZ" + b"\x00" * 58)
        # e_lfanew pointing to PE header at offset 64
        f.write(b"\x40\x00\x00\x00")
        # PE signature at offset 64
        f.write(b"PE\x00\x00")
        # Minimal COFF header (20 bytes)
        f.write(b"\x4c\x01")  # Machine (i386)
        f.write(b"\x01\x00")  # NumberOfSections
        f.write(b"\x00" * 16)  # Rest of COFF header
        temp_path = f.name

    yield temp_path

    # Cleanup
    if os.path.exists(temp_path):
        os.unlink(temp_path)


# ============================================================================
# Mock Exporter Fixtures
# ============================================================================

@pytest.fixture
def mock_print_exporter(mock_logger):
    """Create a mock PrintExporter."""
    from redb.extractors.database_exporters import PrintExporter
    exporter = PrintExporter(mock_logger, "test_index")
    return exporter


@pytest.fixture
def mock_elasticsearch_exporter(mock_logger):
    """Create a mock ElasticsearchExporter with mocked client."""
    with patch('redb.settings.get_elasticsearch_client') as mock_client:
        mock_client.return_value = Mock()
        from redb.extractors.database_exporters import ElasticsearchExporter
        exporter = ElasticsearchExporter(mock_logger, "test_index")
        return exporter


@pytest.fixture
def mock_clickhouse_exporter(mock_logger):
    """Create a mock ClickHouseExporter with mocked client."""
    with patch('redb.settings.create_clickhouse_client') as mock_client:
        mock_client.return_value = Mock()
        from redb.extractors.database_exporters import ClickHouseExporter
        exporter = ClickHouseExporter(mock_logger, "test_index", client=Mock())
        return exporter


# ============================================================================
# Mock Settings Fixtures
# ============================================================================

@pytest.fixture
def mock_settings():
    """Mock the redb.settings module."""
    with patch.multiple(
        'redb.settings',
        ELASTIC_BINARIES_COLLECTION="test_collection",
        get_elasticsearch_client=Mock(return_value=Mock()),
        create_clickhouse_client=Mock(return_value=Mock()),
    ):
        yield


# ============================================================================
# Hash Fixtures
# ============================================================================

@pytest.fixture
def known_hashes(elf_binary_content):
    """Compute known hashes for the ELF test binary."""
    return {
        'md5': hashlib.md5(elf_binary_content).hexdigest(),
        'sha1': hashlib.sha1(elf_binary_content).hexdigest(),
        'sha256': hashlib.sha256(elf_binary_content).hexdigest(),
    }


@pytest.fixture
def pe_known_hashes(pe_binary_content):
    """Compute known hashes for the PE test binary."""
    return {
        'md5': hashlib.md5(pe_binary_content).hexdigest(),
        'sha1': hashlib.sha1(pe_binary_content).hexdigest(),
        'sha256': hashlib.sha256(pe_binary_content).hexdigest(),
    }


# ============================================================================
# Sample Data Fixtures
# ============================================================================

@pytest.fixture
def sample_binary_data():
    """Sample binary data for entropy and hash testing."""
    return b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" * 16


@pytest.fixture
def high_entropy_data():
    """High entropy random-like data for testing."""
    import random
    random.seed(42)  # Reproducible
    return bytes(random.randint(0, 255) for _ in range(256))


@pytest.fixture
def low_entropy_data():
    """Low entropy repetitive data for testing."""
    return b"\x00" * 256


# ============================================================================
# PE Object Fixtures
# ============================================================================

@pytest.fixture
def pe_object(pe_binary_path):
    """Create a pefile PE object for testing."""
    import pefile
    try:
        pe = pefile.PE(pe_binary_path)
        yield pe
        pe.close()
    except Exception as e:
        pytest.skip(f"Failed to parse PE file: {e}")


# ============================================================================
# ELF Object Fixtures
# ============================================================================

@pytest.fixture
def elf_object(elf_binary_path):
    """Create an ELFFile object for testing."""
    from elftools.elf.elffile import ELFFile
    try:
        with open(elf_binary_path, 'rb') as f:
            elf = ELFFile(f)
            # We need to keep the file open for ELFFile to work
            yield elf
    except Exception as e:
        pytest.skip(f"Failed to parse ELF file: {e}")


# ============================================================================
# Dataclass Fixtures
# ============================================================================

@pytest.fixture
def sample_hash_dataclass():
    """Create a sample Hash dataclass."""
    from redb.models.dataclasses import Hash
    return Hash(
        md5="d41d8cd98f00b204e9800998ecf8427e",
        sha1="da39a3ee5e6b4b0d3255bfef95601890afd80709",
        sha256="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
    )


@pytest.fixture
def sample_hashes_dataclass():
    """Create a sample Hashes dataclass."""
    from redb.models.dataclasses import Hashes
    return Hashes(
        md5="d41d8cd98f00b204e9800998ecf8427e",
        sha1="da39a3ee5e6b4b0d3255bfef95601890afd80709",
        sha256="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        ssdeep_hash="3::",
        tlsh_hash=""
    )


@pytest.fixture
def sample_basic_properties():
    """Create a sample BasicProperties dataclass."""
    from redb.models.dataclasses import BasicProperties
    return BasicProperties(
        filename="test.exe",
        sample_name="test.exe",
        filesize=1024,
        filetype="PE32 executable",
        filetype_mime="application/x-dosexec",
        filetype_magika="pebin",
        file_entropy=6.5
    )


# ============================================================================
# Utility Functions for Tests
# ============================================================================

def compute_entropy(data):
    """Compute entropy of data for verification in tests."""
    import math
    from collections import Counter

    if not data:
        return 0.0

    if isinstance(data, str):
        counts = Counter(data)
        frequencies = (i / len(data) for i in counts.values())
        return -sum(f * math.log(f, 2) for f in frequencies)
    else:
        occurrences = Counter(bytearray(data))
        entropy = 0
        for x in occurrences.values():
            p_x = float(x) / len(data)
            entropy -= p_x * math.log(p_x, 2)
        return entropy


# Make the function available as a fixture
@pytest.fixture
def entropy_calculator():
    """Return the entropy calculation function."""
    return compute_entropy


# ============================================================================
# Skip Markers
# ============================================================================

# Mark tests that require external tools
requires_die = pytest.mark.skipif(
    not os.path.exists("/usr/bin/diec") and not os.path.exists("/usr/local/bin/diec"),
    reason="Detect It Easy (diec) not installed"
)

requires_capa = pytest.mark.skipif(
    not os.path.exists("/usr/bin/capa") and not os.path.exists("/usr/local/bin/capa"),
    reason="capa not installed"
)

requires_floss = pytest.mark.skipif(
    not os.path.exists("/usr/bin/floss") and not os.path.exists("/usr/local/bin/floss"),
    reason="floss not installed"
)