Xianghui Cao

133 papers A* 2B 11C 7Misc 1Journal 93Unranked 19
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Yuchong Zhang, Yi Cao, Xianghui Cao
2026 J jnl
IEEE Trans. Signal Process.
Yifan Wang, Xianghui Cao, Shi Jin, Mo-Yuen Chow
2026 J jnl
IEEE Commun. Lett.
Heng Zhang, Liang Yuan, Chaoqun Yang, Xianghui Cao, Ming Li, Meng Huang, Jian Zhang
2025 J jnl
IEEE Trans. Autom. Control.
Xuening Tang, Xianghui Cao, Wei Xing Zheng
2025 J jnl
IEEE Trans. Autom. Control.
Bowen Sun, György Dán, James Gross, Xianghui Cao
2025 J jnl
Signal Process.
Chaoqun Yang, Xiaowei Liang, Zhiguo Shi, Heng Zhang, Xianghui Cao
2025 J jnl
Unmanned Syst.
Haoxin Li, Chaoqun Yang, Heng Zhang, Xianghui Cao, Xiufang Shi
2025 J jnl
IEEE Internet Things J.
Heng Zhang, Zhemin Sun, Chaoqun Yang, Xianghui Cao, Jian Zhang, Ming Li
2025 J jnl
Autom.
Feng Ye, Xianghui Cao, Lin Cai, Mo-Yuen Chow
2025 J jnl
IEEE CAA J. Autom. Sinica
Zhe Wang, Heng Zhang, Chaoqun Yang, Xianghui Cao
2025 J jnl
IEEE J. Sel. Areas Commun.
Bowen Sun, Xianghui Cao, Wei Xing Zheng, Yu Cheng
2025 J jnl
IEEE CAA J. Autom. Sinica
Bowen Sun, Xianghui Cao
2025 conf
VTC2025-Fall
Jiaping Chen, Haoyu Li, Guyue Li, Xianghui Cao
2025 J jnl
CoRR
Xinyu He, Xianghui Cao
2024 J jnl
CoRR
Xuening Tang, Xianghui Cao, Wei-Xing Zheng
2024 J jnl
IEEE Trans. Autom. Control.
Taige Chang, Xianghui Cao, Wei Xing Zheng
2024 J jnl
IEEE Trans. Autom. Control.
Yifan Wang, Shuai Liu, Xianghui Cao, Mo-Yuen Chow
2024 J jnl
CoRR
Chaoqun Yang, Mengdie Xu, Xiaowei Liang, Heng Zhang, Xianghui Cao
2024 conf
SDF
Jiayi Gu, Jiaqi Shi, Kun Shi, Chaoqun Yang, Xianghui Cao
2024 J jnl
Signal Process.
Mengdie Xu, Chaoqun Yang, Xiaomeng Cao, Shishan Yang, Xianghui Cao, Zhiguo Shi
2024 J jnl
IEEE Trans. Smart Grid
Zhe Wang, Heng Zhang, Xianghui Cao, Endong Liu, Hongran Li, Jian Zhang
2024 J jnl
IEEE Control. Syst. Lett.
Bowen Sun, Xianghui Cao
2024 J jnl
IEEE Trans. Inf. Theory
Feng Ye, Xianghui Cao, Mo-Yuen Chow, Lin Cai
2024 J jnl
IEEE Internet Things J.
Yan Ren, Heng Zhang, Xianghui Cao, Chaoqun Yang, Jian Zhang, Hongran Li
2023 J jnl
IEEE Internet Things J.
Chaoqun Yang, Lei Mo, Xianghui Cao, Heng Zhang, Zhiguo Shi
2023 J jnl
CoRR
Taige Chang, Xianghui Cao, Wei Xing Zheng
2023 J jnl
Complex Intell. Syst.
Haotian Chen, Ming He, Jintao Liu, Peng Xu, Xianghui Cao, Wei Han, Guodong Yuan
2023 C conf
ICCC
Taige Chang, Xianghui Cao, Yu Cheng
2023 C conf
PST
Haoran Deng, Xianghui Cao, Yu Cheng
2023 J jnl
IEEE Trans. Smart Grid
Feng Ye, Xianghui Cao, Zheyuan Cheng, Mo-Yuen Chow
2023 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Chaoqun Yang, Xianghui Cao, Lidong He, Heng Zhang
2023 J jnl
ACM Trans. Sens. Networks
Lei Mo, Qi Zhou, Angeliki Kritikakou, Xianghui Cao
2023 J jnl
IEEE Internet Things J.
Xianghui Cao, Jia Wang, Yu Cheng, Jiong Jin
2023 J jnl
IEEE Trans. Veh. Technol.
Chaoqun Yang, Xianghui Cao, Zhiguo Shi
2022 C conf
IECON
Minghui Hong, Chaoqun Yang, Xianghui Cao
2022 B conf
GLOBECOM
Suyang Wang, Yu Cheng, Lin X. Cai, Xianghui Cao
2022 J jnl
IEEE Internet Things J.
Jia Wang, Xianghui Cao, Bo Yin, Yu Cheng
2022 J jnl
Autom.
Le Wang, Xianghui Cao, Heng Zhang, Changyin Sun, Wei Xing Zheng
2021 J jnl
IEEE Trans. Smart Grid
Zheyuan Cheng, Feng Ye, Xianghui Cao, Mo-Yuen Chow
2021 J jnl
IEEE Trans. Inf. Forensics Secur.
Feng Ye, Zheyuan Cheng, Xianghui Cao, Mo-Yuen Chow
2021 J jnl
IEEE Internet Things J.
Tiehua Zhang, Zhishu Shen, Jiong Jin, Xi Zheng, Atsushi Tagami, Xianghui Cao
2021 J jnl
IEEE Trans. Veh. Technol.
Wenlong Shen, Yu Cheng, Bo Yin, Jin Du, Xianghui Cao
2021 J jnl
IEEE Trans. Ind. Informatics
Gongpu Chen, Xianghui Cao, Jiong Jin
2021 J jnl
IEEE Trans. Ind. Informatics
Le Wang, Xianghui Cao, Bowen Sun, Heng Zhang, Changyin Sun
2021 J jnl
IEEE Trans. Cybern.
Lianghong Peng, Xianghui Cao, Changyin Sun
2021 J jnl
IEEE Internet Things J.
Lei Mo, Angeliki Kritikakou, Olivier Sentieys, Xianghui Cao
2021 J jnl
Inf. Sci.
Weiwei Xu, Heng Zhang, Xianghui Cao, Ruilong Deng, Hongran Li, Jian Zhang
2021 C conf
IECON
Nianzhi Hang, Feng Ye, Zheyuan Cheng, Xianghui Cao, Mo-Yuen Chow
2020 B conf
GLOBECOM
Suyang Wang, Bo Yin, Shuai Zhang, Yu Cheng, Lin X. Cai, Xianghui Cao
2020 J jnl
IEEE Trans. Netw. Sci. Eng.
Lu Liu, Bo Yin, Shuai Zhang, Xianghui Cao, Yu Cheng
2020 conf
IoTDI
Weiwei Xu, Heng Zhang, Xianghui Cao, Ruilong Deng, Dongqing Yuan, Jian Zhang, Hongran Li, Jiacheng Ke, Haisong Xu
2020 J jnl
IEEE CAA J. Autom. Sinica
Giuseppe Franzè, Giancarlo Fortino, Xianghui Cao, Giuseppe M. L. Sarnè, Zhen Song
2020 J jnl
IEEE Trans. Netw. Sci. Eng.
Bo Yin, Wenlong Shen, Xianghui Cao, Yu Cheng, Qing Li
2019 conf
ISIE
Mengdan Lei, Xianghui Cao, Gongpu Chen, Changyin Sun
2019 conf
TrustCom/BigDataSE
Bo Yin, Yu Cheng, Lin X. Cai, Xianghui Cao
2019 J jnl
IEEE Trans. Cloud Comput.
Wenlong Shen, Bo Yin, Xianghui Cao, Yu Cheng, Xuemin Shen
2019 J jnl
CoRR
Wenlong Shen, Yu Cheng, Bo Yin, Kecheng Liu, Xianghui Cao
2019 J jnl
IEEE Trans. Ind. Informatics
Lei Mo, Pengcheng You, Xianghui Cao, Yeqiong Song, Angeliki Kritikakou
2019 conf
ICC
Shuai Zhang, Wenlong Shen, Max Zhangt, Xianghui Cao, Yu Cheng
2019 J jnl
IEEE Trans. Mob. Comput.
Lu Liu, Yu Cheng, Xianghui Cao, Sheng Zhou, Zhisheng Niu, Ping Wang
2019 J jnl
IEEE Internet Things J.
Gongpu Chen, Xianghui Cao, Lu Liu, Changyin Sun, Yu Cheng
2019 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Lei Xue, Xianghui Cao
2018 B conf
GLOBECOM
Rui Ma, Xianghui Cao, Shuai Zhang, Lu Liu, Yu Cheng, Changyin Sun
2018 J jnl
IEEE Internet Things J.
Xianghui Cao, Rui Ma, Lu Liu, Hongbao Shi, Yu Cheng, Changyin Sun
2018 J jnl
J. Commun. Inf. Networks
Gongpu Chen, Rui Ma, Mengdan Lei, Xianghui Cao
2018 conf
ADHOC-NOW
Lei Mo, Angeliki Kritikakou, Xianghui Cao
2018 J jnl
IEEE Internet Things J.
Lei Mo, Xianghui Cao, Yeqiong Song, Angeliki Kritikakou
2018 J jnl
CoRR
Shuai Zhang, Lu Liu, Yu Cheng, Xianghui Cao, Sheng Zhou, Zhisheng Niu, Hangguan Shan
2018 J jnl
Neurocomputing
Lianghong Peng, Xianghui Cao, Changyin Sun, Yu Cheng, Shi Jin
2018 Misc conf
ICNC
Shuai Zhang, Lu Liu, Yu Cheng, Xianghui Cao, Lin X. Cai
2018 J jnl
IEEE Trans. Autom. Control.
Lianghong Peng, Ling Shi, Xianghui Cao, Changyin Sun
2018 C conf
IECON
Lei Xue, Xianghui Cao, Changyin Sun, Shi Jin
2018 J jnl
J. Frankl. Inst.
Lianghong Peng, Xianghui Cao, Hongbao Shi, Changyin Sun
2018 J jnl
IEEE Commun. Surv. Tutorials
Xianghui Cao, Lu Liu, Yu Cheng, Xuemin Sherman Shen
2017 J jnl
CoRR
Lu Liu, Yu Cheng, Xianghui Cao, Sheng Zhou, Zhisheng Niu
2017 B conf
GLOBECOM
Bo Yin, Yu Cheng, Lin X. Cai, Xianghui Cao
2017 conf
ICC
Wenlong Shen, Bo Yin, Yu Cheng, Xianghui Cao, Qing Li
2017 conf
ASCC
Xianghui Cao, Changyin Sun
2017 J jnl
IEEE Trans. Ind. Informatics
Xianghui Cao, Lu Liu, Wenlong Shen, Aurobinda Laha, Jin Tang, Yu Cheng
2017 J jnl
IEEE Trans. Signal Process.
Hao Liu, Xianghui Cao, Jianping He, Peng Cheng, Chunguang Li, Jiming Chen, Youxian Sun
2016 A* conf
INFOCOM
Lu Liu, Xianghui Cao, Wenlong Shen, Yu Cheng, Lin X. Cai
2016 conf
ICC
Kecheng Liu, Wenlong Shen, Bo Yin, Xianghui Cao, Lin X. Cai, Yu Cheng
2016 J jnl
IEEE Trans. Veh. Technol.
Xianghui Cao, Lu Liu, Wenlong Shen, Yu Cheng
2016 J jnl
IEEE Internet Things J.
Xianghui Cao, Devu Manikantan Shila, Yu Cheng, Zequ Yang, Yang Zhou, Jiming Chen
2016 J jnl
IEEE Trans. Commun.
Feixiang Zhang, Xiangwei Zhou, Xianghui Cao
2016 J jnl
IEEE Trans. Veh. Technol.
Jun Huang, Yi Sun, Zi Xiong, Qiang Duan, Yanxiao Zhao, Xianghui Cao, Wei Wang
2016 J jnl
IEEE Trans. Veh. Technol.
Xianghui Cao, Lu Liu, Yu Cheng, Lin X. Cai, Changyin Sun
2016 conf
WASA
Lianghong Peng, Xianghui Cao, Changyin Sun, Yu Cheng
2016 J jnl
IEEE Internet Things J.
Wenlong Shen, Bo Yin, Lu Liu, Xianghui Cao, Yu Cheng, Qing Li, Wenjing Wang
2016 J jnl
IEEE Netw.
Wenlong Shen, Bo Yin, Xianghui Cao, Lin X. Cai, Yu Cheng
2015 J jnl
IEEE/ACM Trans. Netw.
Yu Cheng, Hongkun Li, Devu Manikantan Shila, Xianghui Cao
2015 B conf
GLOBECOM
Xianghui Cao, Lu Liu, Yu Cheng, Lin X. Cai
2015 J jnl
IEEE Trans. Wirel. Commun.
Xianghui Cao, Jiming Chen, Yu Cheng, Xuemin Sherman Shen, Youxian Sun
2015 conf
ICC
Aurobinda Laha, Xianghui Cao, Wenlong Shen, Xiaohua Tian, Yu Cheng
2015 C conf
IPCCC
Lei Mo, Pengcheng You, Xianghui Cao, Yeqiong Song, Jiming Chen
2015 J jnl
IEEE Trans. Signal Process.
Hao Liu, Xianghui Cao, Jianping He, Peng Cheng, Chunguang Li, Jiming Chen, Youxian Sun
2015 J jnl
IEEE Trans. Wirel. Commun.
Xianghui Cao, Xiangwei Zhou, Lu Liu, Yu Cheng
2015 conf
ICC
Lei Zhou, Xianghui Cao, Lu Liu, Lin X. Cai, Xiaohua Tian, Yu Cheng
2015 J jnl
IET Commun.
Li Wang, Lu Liu, Xianghui Cao, Xiaohua Tian, Yu Cheng
2014 B conf
MobiHoc
Yu Cheng, Xianghui Cao, Xuemin (Sherman) Shen, Devu Manikantan Shila, Hongkun Li
2014 J jnl
IEEE J. Sel. Areas Commun.
Xianghui Cao, Peng Cheng, Jiming Chen, Shuzhi Sam Ge, Yu Cheng, Youxian Sun
2014 J jnl
CoRR
Yi Liu, Chau Yuen, Xianghui Cao, Naveed Ul L. Hassan, Jiming Chen
2014 J jnl
IEEE Internet Things J.
Yi Liu, Chau Yuen, Xianghui Cao, Naveed Ul Hassan, Jiming Chen
2014 J jnl
CoRR
Xianghui Cao, Xiangwei Zhou, Yu Cheng
2014 conf
GlobalSIP
Xianghui Cao, Xiangwei Zhou, Yu Cheng
2014 J jnl
IEEE Trans. Veh. Technol.
Lu Liu, Xianghui Cao, Yu Cheng, Zhisheng Niu
2014 A* conf
INFOCOM
Lu Liu, Xianghui Cao, Yu Cheng, Lili Du, Wei Song, Yu Wang
2014 J jnl
CoRR
Devu Manikantan Shila, Xianghui Cao, Yu Cheng, Zequ Yang, Yang Zhou, Jiming Chen
2014 J jnl
CoRR
Lu Liu, Xianghui Cao, Yu Cheng, Li Wang
2014 B conf
GLOBECOM
Lu Liu, Xianghui Cao, Yu Cheng, Li Wang
2014 J jnl
CoRR
Xianghui Cao, Lu Liu, Wenlong Shen, Jin Tang, Yu Cheng
2014 B conf
GLOBECOM
Xianghui Cao, Lu Liu, Wenlong Shen, Jin Tang, Yu Cheng
2014 J jnl
CoRR
Wenlong Shen, Weisheng Hong, Xianghui Cao, Bo Yin, Devu Manikantan Shila, Yu Cheng
2014 J jnl
IEEE Trans. Parallel Distributed Syst.
Jianping He, Jiming Chen, Peng Cheng, Xianghui Cao
2014 B conf
GLOBECOM
Wenlong Shen, Weisheng Hong, Xianghui Cao, Bo Yin, Devu Manikantan Shila, Yu Cheng
2013 J jnl
CoRR
Yi Liu, Chau Yuen, Jiming Chen, Xianghui Cao
2013 B conf
WCNC
Yi Liu, Chau Yuen, Jiming Chen, Xianghui Cao
2013 J jnl
IEEE Trans. Ind. Informatics
Xianghui Cao, Peng Cheng, Jiming Chen, Youxian Sun
2013 J jnl
IEEE Trans. Emerg. Top. Comput.
Wenlong Shen, Lu Liu, Xianghui Cao, Yong Hao, Yu Cheng
2013 conf
ICCA
Liping Ni, Xianghui Cao, Peng Cheng, Jiming Chen, Youxian Sun
2013 J jnl
IEEE Trans. Smart Grid
Ruilong Deng, Jiming Chen, Xianghui Cao, Yan Zhang, Sabita Maharjan, Stein Gjessing
2012 J jnl
Comput. Commun.
Peng Cheng, Xianghui Cao, Jing Bai, Youxian Sun
2012 C conf
ICARCV
Kefei Xin, Xianghui Cao, Peng Cheng, Jiming Chen
2011 conf
CMC
Peng Cheng, Xianghui Cao, Jiming Chen, Kejie Cao, Youxian Sun, Xuemin Shen
2011 J jnl
Wirel. Commun. Mob. Comput.
Jiming Chen, Xianghui Cao, Yu Zhang, WeiQiang Xu, Youxian Sun
2011 conf
SmartGridComm
Ruilong Deng, Sabita Maharjan, Xianghui Cao, Jiming Chen, Yan Zhang, Stein Gjessing
2010 J jnl
IEEE Trans. Ind. Electron.
Xianghui Cao, Jiming Chen, Yang Xiao, Youxian Sun
2010 J jnl
IEEE Trans. Ind. Electron.
Jiming Chen, Xianghui Cao, Peng Cheng, Yang Xiao, Youxian Sun
2010 B conf
GLOBECOM
Xianghui Cao, Jiming Chen, Youxian Sun, Xuemin Shen
2009 J jnl
Comput. Stand. Interfaces
Xianghui Cao, Jiming Chen, Youxian Sun
2009 J jnl
Comput. Electr. Eng.
Xianghui Cao, Jiming Chen, Chuanhou Gao, Youxian Sun
2008 conf
ICC
Xianghui Cao, Jiming Chen, Yang Xiao, Youxian Sun
2008 conf
FGCN (1)
Xianghui Cao, Jiming Chen, Yang Xiao, Youxian Sun
tests/unit/test_apk_method_extractor.py
← Index tests/unit/test_apk_method_extractor.py python
"""
Unit tests for APK method-level content extraction, hashing, and similarity.

Tests SHA-256 normalization, ssdeep/TLSH computation, obfuscation detection,
and Dalvik-to-Java type conversion.
"""
import pytest

pytestmark = [pytest.mark.unit, pytest.mark.apk, pytest.mark.decompile]


class TestHashingFunctions:
    """Tests for hashing utility functions."""

    def test_sha256_deterministic(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_sha256
        h1 = compute_sha256("invoke-virtual {p0}, Lcom/Foo;->bar()V")
        h2 = compute_sha256("invoke-virtual {p0}, Lcom/Foo;->bar()V")
        assert h1 == h2

    def test_sha256_hex_length(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_sha256
        assert len(compute_sha256("test")) == 64

    def test_sha256_different_inputs(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_sha256
        assert compute_sha256("aaa") != compute_sha256("bbb")

    def test_ssdeep_none_for_short(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_ssdeep
        assert compute_ssdeep("short") is None

    def test_tlsh_none_for_short(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_tlsh
        assert compute_tlsh("x") is None


class TestObfuscationDetection:
    """Tests for obfuscation indicator detection."""

    def test_short_method_name_single_char(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("a", "Lcom/Foo;", "", 10)
        assert r["short_method_name"] is True

    def test_short_method_name_two_chars(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("ab", "Lcom/Foo;", "", 10)
        assert r["short_method_name"] is True

    def test_normal_method_name(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("onCreate", "Lcom/Foo;", "", 10)
        assert r["short_method_name"] is False

    def test_short_class_name(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("foo", "Lcom/a;", "", 10)
        assert r["short_class_name"] is True

    def test_normal_class_name(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("foo", "Lcom/example/MainActivity;", "", 10)
        assert r["short_class_name"] is False

    def test_string_encryption_detected(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = (
            'const-string v0, "xyz"\n'
            'invoke-static {v0}, Lcom/Enc;->decrypt(Ljava/lang/String;)Ljava/lang/String;\n'
        )
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 10)
        assert r["has_string_encryption"] is True

    def test_no_string_encryption(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = 'const-string v0, "hello"\ninvoke-virtual {v0}, Ljava/lang/String;->length()I'
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 10)
        assert r["has_string_encryption"] is False

    def test_reflection_detected(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = 'invoke-virtual {v0, v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;'
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 10)
        assert r["has_reflection_calls"] is True

    def test_no_reflection(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = 'invoke-virtual {p0}, Lcom/Foo;->bar()V'
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 10)
        assert r["has_reflection_calls"] is False

    def test_excessive_goto_detected(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = "\n".join(["goto :label"] * 10)
        # threshold = max(5, 20*0.15=3) = 5, 10 > 5
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 20)
        assert r["excessive_goto_count"] is True

    def test_no_excessive_goto(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = "goto :label\nreturn-void"
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 100)
        assert r["excessive_goto_count"] is False

    def test_goto_16_counted(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = "\n".join(["goto/16 :label"] * 10)
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 20)
        assert r["excessive_goto_count"] is True


class TestDalvikTypeConversion:
    """Tests for Dalvik-to-Java type conversion."""

    def test_void(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("V") == "void"

    def test_primitives(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("I") == "int"
        assert dalvik_type_to_java("Z") == "boolean"
        assert dalvik_type_to_java("J") == "long"
        assert dalvik_type_to_java("F") == "float"
        assert dalvik_type_to_java("D") == "double"
        assert dalvik_type_to_java("B") == "byte"
        assert dalvik_type_to_java("S") == "short"
        assert dalvik_type_to_java("C") == "char"

    def test_object_type(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("Ljava/lang/String;") == "String"
        assert dalvik_type_to_java("Lcom/example/Foo;") == "Foo"

    def test_array_type(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("[I") == "int[]"
        assert dalvik_type_to_java("[Ljava/lang/String;") == "String[]"

    def test_empty_returns_void(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("") == "void"


class TestJavaPrototypeConversion:
    """Tests for method signature to Java prototype conversion."""

    def test_simple_method(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_to_java_prototype
        assert dalvik_to_java_prototype("foo", "()V") == "void foo()"

    def test_method_with_params(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_to_java_prototype
        result = dalvik_to_java_prototype("bar", "(ILjava/lang/String;)Z")
        assert result == "boolean bar(int, String)"

    def test_method_returning_object(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_to_java_prototype
        result = dalvik_to_java_prototype("create", "()Lcom/example/Foo;")
        assert result == "Foo create()"

    def test_empty_signature(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_to_java_prototype
        result = dalvik_to_java_prototype("m", "")
        assert "m()" in result


class TestDalvikParamParsing:
    """Tests for parsing Dalvik parameter descriptors."""

    def test_empty(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        assert _parse_dalvik_params("") == []

    def test_single_primitive(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        assert _parse_dalvik_params("I") == ["I"]

    def test_multiple_primitives(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        assert _parse_dalvik_params("IZJ") == ["I", "Z", "J"]

    def test_single_object(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        assert _parse_dalvik_params("Ljava/lang/String;") == ["Ljava/lang/String;"]

    def test_mixed(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        result = _parse_dalvik_params("ILjava/lang/String;Z")
        assert result == ["I", "Ljava/lang/String;", "Z"]

    def test_arrays(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        result = _parse_dalvik_params("[I[Ljava/lang/String;")
        assert result == ["[I", "[Ljava/lang/String;"]

    def test_two_objects(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        result = _parse_dalvik_params("Landroid/os/Bundle;Ljava/lang/String;")
        assert len(result) == 2