Wei-Sheng Wang

28 papers B 1Misc 1Journal 15Unranked 9
YearRankTypeTitle / Venue / Authors
2026 ed.
ICITL (1)
Wei-Sheng Wang, Frode Eika Sandnes, Chin-Feng Lai, Tengel Aas Sandtrø, Yueh-Min Huang
2026 ed.
ICITL (2)
Wei-Sheng Wang, Frode Eika Sandnes, Chin-Feng Lai, Tengel Aas Sandtrø, Yueh-Min Huang
2025 J jnl
IEEE Trans Autom. Sci. Eng.
Xin Guo, Wei-Sheng Wang, Jie Zhang, Lishuang Gong
2025 conf
ICITL (1)
Wei-Sheng Wang, Margus Pedaste, Yueh-Min Huang
2025 J jnl
Educ. Inf. Technol.
Chia-Ju Lin, Hsin-Yu Lee, Wei-Sheng Wang, Yueh-Min Huang, Ting-Ting Wu
2025 J jnl
Educ. Inf. Technol.
Chia-Ju Lin, Hsin-Yu Lee, Wei-Sheng Wang, Yueh-Min Huang, Ting-Ting Wu
2025 J jnl
Educ. Inf. Technol.
Wei-Sheng Wang, Chia-Ju Lin, Hsin-Yu Lee, Yueh-Min Huang, Ting-Ting Wu
2025 J jnl
Br. J. Educ. Technol.
Wei-Sheng Wang, Hsin-Yu Lee, Chia-Ju Lin, Pin-Hui Li, Yueh-Min Huang, Ting-Ting Wu
2025 J jnl
J. Comput. Assist. Learn.
Ting-Ting Wu, Hsin-Yu Lee, Pei-Hua Chen, Wei-Sheng Wang, Yueh-Min Huang
2024 J jnl
J. Comput. Assist. Learn.
Yueh-Min Huang, Wei-Sheng Wang, Hsin-Yu Lee, Chia-Ju Lin, Ting-Ting Wu
2024 J jnl
Int. J. Hum. Comput. Interact.
Wei-Sheng Wang, Chia-Ju Lin, Hsin-Yu Lee, Ting-Ting Wu, Yueh-Min Huang
2024 J jnl
CoRR
Chi-Sheng Chen, Wei-Sheng Wang
2024 J jnl
Educ. Inf. Technol.
Chia-Ju Lin, Wei-Sheng Wang, Hsin-Yu Lee, Yueh-Min Huang, Ting-Ting Wu
2024 J jnl
Interact. Learn. Environ.
Wei-Sheng Wang, Margus Pedaste, Chia-Ju Lin, Hsin-Yu Lee, Yueh-Min Huang, Ting-Ting Wu
2024 conf
ICITL (2)
Wei-Sheng Wang, Margus Pedaste, Yueh-Min Huang
2023 J jnl
Comput. Educ.
Yu-Ping Cheng, Chin-Feng Lai, Yun-Ting Chen, Wei-Sheng Wang, Yueh-Min Huang, Ting-Ting Wu
2023 Misc conf
SAC
Hsin-Yu Lee, Maral Hooshyar, Chia-Ju Lin, Wei-Sheng Wang, Yueh-Min Huang
2023 J jnl
J. Comput. Assist. Learn.
Wei-Sheng Wang, Yu-Ping Cheng, Hsin-Yu Lee, Chia-Ju Lin, Yueh-Min Huang
2023 J jnl
CoRR
Luca Foppiano, Tomoya Mato, Kensei Terashima, Pedro Ortiz Suarez, Taku Tou, Chikako Sakai, Wei-Sheng Wang, Toshiyuki Amagasa, Yoshihiko Takano, Masashi Ishii
2023 conf
ICITL
Wei-Sheng Wang, Margus Pedaste, Yueh-Min Huang
2022 conf
ICITL
Wei-Sheng Wang, Margus Pedaste, Yueh-Min Huang
2016 J jnl
Comput. Commun.
Bing-Hong Liu, Ngoc-Tu Nguyen, Van-Trung Pham, Wei-Sheng Wang
2015 conf
ROBIO
Fa-Shian Chang, Lih-Tyng Hwang, Chih-Feng Liu, Wei-Sheng Wang, Jeng-Nan Lee, Shun-Min Wang, Kai-Yi Cho
2014 conf
CITS
Yan-Jing Wu, Wei-Sheng Wang, Wen-Shyang Hwang
2014 conf
ICGEC
Brian K. Lien, Shan-Kang Chen, Wei-Sheng Wang, Kuan-Pang King
2013 conf
ICGEC
Bing-Hong Liu, Yue-Xian Lin, Wei-Sheng Wang, Chih-Yuan Lien
2011 conf
EMBC
Wei-Sheng Wang, Kea-Tiong Tang
2008 B conf
SMC
Tao Wang, Xi Chen, Anming Bao, Wei-Sheng Wang
tests/unit/test_decompile_function_type.py
← Index tests/unit/test_decompile_function_type.py python
"""Unit tests for bninja/function_type.py."""
import sys
import pytest
from unittest.mock import MagicMock

# Install binaryninja stubs before importing
from tests.unit.conftest_binja_stubs import install_binja_stubs, SymbolType
install_binja_stubs()

from redb.extractors.decompiler.bninja.function_type import (
    FunctionType,
    FunctionTypeAnalysis,
)


# ============================================================================
# 4a. FunctionType / FunctionTypeAnalysis
# ============================================================================


class TestFunctionTypeEnum:
    def test_function_type_enum_values(self):
        assert FunctionType.USER.value == "USER"
        assert FunctionType.LIBRARY.value == "LIBRARY"
        assert FunctionType.EXTERNAL.value == "EXTERNAL"
        assert FunctionType.THUNK.value == "THUNK"
        assert FunctionType.UNKNOWN.value == "UNKNOWN"


class TestFunctionTypeAnalysis:
    def _make_function(self, symbol_type=None, is_thunk=False, raise_on_symbol=False):
        func = MagicMock()
        func.is_thunk = is_thunk
        if raise_on_symbol:
            type(func).symbol = property(lambda self: (_ for _ in ()).throw(Exception("no symbol")))
        else:
            func.symbol.type = symbol_type if symbol_type is not None else SymbolType.FunctionSymbol
        return func

    def test_user_function_type(self):
        func = self._make_function(symbol_type=SymbolType.FunctionSymbol)
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.USER

    def test_external_function_type(self):
        func = self._make_function(symbol_type=SymbolType.ImportedFunctionSymbol)
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.EXTERNAL

    def test_library_function_type(self):
        func = self._make_function(symbol_type=SymbolType.LibraryFunctionSymbol)
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.LIBRARY

    def test_thunk_function_type(self):
        # Thunk overrides the symbol type
        func = self._make_function(
            symbol_type=SymbolType.FunctionSymbol, is_thunk=True
        )
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.THUNK

    def test_exception_returns_unknown(self):
        func = self._make_function(raise_on_symbol=True)
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.UNKNOWN