Caihong Li

48 papers B 2Misc 1Journal 27Unranked 18
YearRankTypeTitle / Venue / Authors
2026 J jnl
Neurocomputing
Zhongli Chen, Yi Yang, Caihong Li, Jiaoyun Yang, Min Li, Zhiwen Chen, Mingming Wang, Xiangquan Gui
2025 J jnl
J. Imaging Inform. Medicine
Yi Li, Yingnan Zhao, Ping Yang, Caihong Li, Liu Liu, Xiaofang Zhao, Huali Tang, Yun Mao
2025 B conf
IJCNN
Yickim Lo, Caihong Li, Zefeng Feng
2025 conf
BIBM
Xiaoyan Li, Cuicui Jiang, Zhiming Jiang, Caihong Li, Zhenzhen Xie, Li Liu, Chuan Song, Zijing Chen
2025 J jnl
Expert Syst. Appl.
Zhiwen Chen, Caihong Li, Yi Yang, Min Li, Yongwei Wu, Zhongli Chen, Mingming Wang
2025 J jnl
Qual. Reliab. Eng. Int.
Jian Li, Caihong Li, Hongwei Wang, Qi Zhu, Dan Zeng, Yulong Li, Yanbin Du
2024 J jnl
IEEE Trans. Serv. Comput.
Na Guo, Cong Liu, Caihong Li, Qingtian Zeng, Chun Ouyang, Qingzhi Liu, Xixi Lu
2024 J jnl
Sensors
Mingzhang Cui, Caihong Li, Yi Yang
2023 conf
ICBDC
Mary Jane Samonte, Huie Zhang, Caihong Li, Haijie Shen
2023 J jnl
Comput. Electron. Agric.
Bin Yang, Zhulian Wang, Jinyuan Guo, Lili Guo, Qiaokang Liang, Qiu Zeng, Ruiyuan Zhao, Jianwu Wang, Caihong Li
2023 J jnl
Frontiers Inf. Technol. Electron. Eng.
Caihong Li, Cong Liu, Yong Song, Zhenying Liang
2023 J jnl
Remote. Sens.
Yiqiu Yan, Changbao Guo, Caihong Li, Hao Yuan, Zhendong Qiu
2022 J jnl
Soft Comput.
Zhihao Shang, Min Li, Yanhua Chen, Caihong Li, Yi Yang, Lian Li
2022 J jnl
J. Sensors
Li Yang, Shuting Xiao, Xiaoyu Tang, Hui Chen, Song Zhang, Caihong Li
2022 J jnl
Autom. Control. Comput. Sci.
Tengteng Gao, Caihong Li, Guoming Liu, Na Guo, Di Wang, Yongdi Li
2022 J jnl
Open Comput. Sci.
Haijie Shen, Yangyuan Li, Xinzhi Tian, Xiaofan Chen, Caihong Li, Qian Bian, Zhenduo Wang, Weihua Wang
2021 J jnl
Autom. Control. Comput. Sci.
Na Guo, Caihong Li, Di Wang, Yong Song, Guoming Liu, Tengteng Gao
2021 J jnl
Comput. Electron. Agric.
Zhengwei Yang, Jiyong Gao, Shoucheng Wang, Zhiqiang Wang, Caihong Li, Yubin Lan, Xia Sun, Shengxi Li
2020 J jnl
IEEE Access
Feng Gao, Caimei Wang, Caihong Li
2020 J jnl
Appl. Soft Comput.
Yong Song, Xing Fang, Bing Liu, Caihong Li, Yibin Li, Simon X. Yang
2020 conf
ATCI
Caihong Li, Junjie Huang, Xinzhi Tian, Zhihui Lin
2019 J jnl
IEEE CAA J. Autom. Sinica
Bin Xia, Wenhao Yuan, Nan Xie, Caihong Li
2019 J jnl
J. Bioinform. Comput. Biol.
Chun Fang, Yoshitaka Moriwaki, Aikui Tian, Caihong Li, Kentaro Shimizu
2019 J jnl
J. Bioinform. Comput. Biol.
Chun Fang, Yoshitaka Moriwaki, Caihong Li, Kentaro Shimizu
2018 conf
ICSM
Taiqian Wang, Yande Li, Junfeng Hu, Aamir Khan, Li Liu, Caihong Li, Ammarah Hashmi, Mengyuan Ran
2018 J jnl
Int. J. Comput. Intell. Syst.
Caihong Li, Zhiqiang Wang, Chun Fang, Zhenying Liang, Yong Song, Yibin Li
2018 conf
iThings/GreenCom/CPSCom/SmartData
Yong Song, Changshen Xu, Xing Fang, Caihong Li, Di Wang, Simon X. Yang
2018 B conf
IJCNN
Yande Li, Taiqian Wang, Aamir Khan, Lian Li, Caihong Li, Yi Yang, Li Liu
2018 J jnl
Neurocomputing
Yanhua Chen, Marius Kloft, Yi Yang, Caihong Li, Lian Li
2018 conf
APWeb/WAIM Workshops
Lingling Li, Caihong Li, Yuan Wu, Yi Yang, Yixuan Zhang, Hairui Zhang, Bin Wu, Li Liu, Rong Xie
2017 J jnl
Neural Process. Lett.
Zhaoshuang He, Caihong Li, Yulin Shen, Anping He
2017 J jnl
Frontiers Inf. Technol. Electron. Eng.
Caihong Li, Yong Song, Feng-ying Wang, Zhiqiang Wang, Yi-Bin Li
2017 conf
CyberC
Tingting Jia, Caihong Li, Anping He
2017 conf
ASICON
Xiaoqing Liu, Anping He, Caihong Li, Guangbo Feng, Jilin Zhang
2016 conf
WAIM Workshops
Caihong Li, Zhaoshuang He, Yachen Wang
2016 J jnl
Appl. Soft Comput.
Yi Yang, Yanhua Chen, Yachen Wang, Caihong Li, Lian Li
2016 J jnl
Comput. Electron. Agric.
Zhiqiang Wang, Xia Sun, Caihong Li, Xianquan He, Gang Liu
2015 J jnl
J. Robotics
Yong Song, Yibin Li, Caihong Li, Xin Ma
2014 conf
UIC/ATC/ScalCom
Yi Yang, Yanhua Chen, Caihong Li, Xiangquan Gui, Lian Li
2014 conf
CBD
Zhaocai Ma, Yi Yang, Fei Wang, Caihong Li, Lian Li
2011 conf
CSEE (3)
Zhengwei Zhang, Yibin Li, Caihong Li
2010 conf
NCM
Jiazao Lin, Yi Yang, Zhili Zhao, Caihong Li, Lian Li, Xining Li
2010 conf
BIC-TA
Yong Song, Yibin Li, Qun Wang, Caihong Li
2010 conf
BIC-TA
Yibin Li, Yong Song, Caihong Li
2009 conf
GCC
Jiazao Lin, Zhili Zhao, Shoubo Li, Huajian Zhang, Lifen Li, Caihong Li, Lian Li
2009 Misc conf
FAW
Li Liu, Hao Li, Junling Wang, Lian Li, Caihong Li
2008 conf
FSKD (3)
Fengying Wang, Lei Zhao, Caihong Li, Zhen Cheng, Qufei Zhang
2007 conf
ROBIO
Yibin Li, Caihong Li, Rui Song
tests/unit/test_decompile_utils.py
← Index tests/unit/test_decompile_utils.py python
"""Unit tests for decompiler utility modules:
- bninja/utils/hashes.py
- bninja/utils/json_encoder.py
- bninja/analysis/low_level_normalization.py
"""
import hashlib
import json
import pytest


# ============================================================================
# 1a. hashes.py
# ============================================================================

from redb.extractors.decompiler.bninja.utils.hashes import (
    calculate_md5,
    calculate_sha256,
    calculate_tlsh,
)


class TestCalculateMD5:
    def test_calculate_md5_known_value(self):
        expected = hashlib.md5(b"test").hexdigest()
        assert calculate_md5("test") == expected

    def test_calculate_md5_empty(self):
        expected = hashlib.md5(b"").hexdigest()
        assert calculate_md5("") == expected


class TestCalculateSHA256:
    def test_calculate_sha256_known_value(self):
        expected = hashlib.sha256(b"hello world").hexdigest()
        assert calculate_sha256("hello world") == expected

    def test_calculate_sha256_empty_string(self):
        result = calculate_sha256("")
        assert len(result) == 64
        assert all(c in "0123456789abcdef" for c in result)


class TestCalculateTLSH:
    def test_calculate_tlsh_long_data(self):
        # TLSH requires >= 50 bytes
        data = "A" * 100
        result = calculate_tlsh(data)
        assert result is not None
        assert isinstance(result, str)

    def test_calculate_tlsh_short_data(self):
        data = "A" * 10
        result = calculate_tlsh(data)
        assert result is None

    def test_calculate_tlsh_deterministic(self):
        data = "x" * 200
        assert calculate_tlsh(data) == calculate_tlsh(data)



# ============================================================================
# 1b. json_encoder.py
# ============================================================================

from redb.extractors.decompiler.bninja.utils.json_encoder import BinaryNinjaEncoder


class TestBinaryNinjaEncoder:
    def test_encode_value_confidence_object(self):
        obj = type("VC", (), {"value": 42, "confidence": 255})()
        result = json.dumps(obj, cls=BinaryNinjaEncoder)
        assert json.loads(result) == 42

    def test_encode_str_fallback(self):
        obj = type("Obj", (), {"__str__": lambda self: "custom_repr"})()
        result = json.dumps(obj, cls=BinaryNinjaEncoder)
        assert json.loads(result) == "custom_repr"

    def test_encode_normal_types(self):
        data = {"a": 1, "b": [2, 3], "c": "hello"}
        result = json.dumps(data, cls=BinaryNinjaEncoder)
        assert json.loads(result) == data

    def test_encode_set_via_str(self):
        # Python sets have __str__, so BinaryNinjaEncoder converts them
        # to their string repr instead of raising TypeError.
        result = json.dumps(set([1, 2, 3]), cls=BinaryNinjaEncoder)
        parsed = json.loads(result)
        assert isinstance(parsed, str)
        assert "1" in parsed


# ============================================================================
# 1c. low_level_normalization.py
# ============================================================================

from redb.extractors.decompiler.bninja.analysis.low_level_normalization import (
    LowLevelNormalization,
)


class MockIL:
    """Mock IL node for normalization tests."""
    def __init__(self, operation, operands=None):
        self.operation = operation
        self.operands = operands or []


class TestLowLevelNormalization:
    def setup_method(self):
        self.normalizer = LowLevelNormalization()

    def test_normalize_single_instruction(self):
        node = MockIL(operation=5)
        result = self.normalizer.normalize_instruction_all_levels(node)
        assert result == [5]

    def test_normalize_nested_operands(self):
        child1 = MockIL(operation=10)
        child2 = MockIL(operation=20)
        root = MockIL(operation=1, operands=[child1, child2])
        result = self.normalizer.normalize_instruction_all_levels(root)
        assert result == [1, 10, 20]

    def test_normalize_empty_operands(self):
        node = MockIL(operation=42, operands=[])
        result = self.normalizer.normalize_instruction_all_levels(node)
        assert result == [42]

    def test_normalize_list_operands(self):
        # Simulates phi-node style list operands
        inner = MockIL(operation=99)
        node = MockIL(operation=7, operands=[[inner]])
        result = self.normalizer.normalize_instruction_all_levels(node)
        assert result == [7, 99]

    def test_normalize_none_input(self):
        result = self.normalizer.normalize_instruction_all_levels(None)
        assert result == []