Chang-Joon Park

37 papers A* 2A 1B 3C 6Journal 4Unranked 21
YearRankTypeTitle / Venue / Authors
2022 conf
ICTC
Kyung-Kyu Kang, Chang-Joon Park
2021 conf
ICTC
Kyung-Kyu Kang, Chang-Joon Park
2020 conf
ICTC
Kyung-Kyu Kang, Chang-Joon Park
2019 conf
ICTC
Jung-Jae Yu, Lee Man Hee, Chang-Joon Park
2019 conf
ICTC
Yun-Ji Ban, Hye-Sun Kim, Chang-Joon Park
2019 conf
ICTC
Kyung-Kyu Kang, Dong-Wan Ryoo, Chang-Joon Park
2018 conf
SIGGRAPH Posters
Hye-Sun Kim, Yun-Ji Ban, Chang-Joon Park
2018 C conf
ICCE
Seong-Jae Lim, Bon-Woo Hwang, Seung-Uk Yoon, Jin Sung Choi, Chang-Joon Park
2018 conf
ICTC
Dong-Wan Ryoo, Kyung-Kyu Kang, Chang-Joon Park
2017 conf
ICAT-EGVE (Posters and Demos)
Seong-Jae Lim, Bon-Woo Hwang, Seung-Uk Yoon, Jin Sung Choi, Chang-Joon Park
2017 conf
ICAT-EGVE (Posters and Demos)
Seung-Uk Yoon, Seong-Jae Lim, Bon-Woo Hwang, Chang-Joon Park, Jin Sung Choi
2017 A* conf
SIGGRAPH ASIA (Posters)
Jung-Jae Yu, Chang-Joon Park
2017 conf
ICTC
Hye-Sun Kim, Chang-Joon Park
2017 B conf
ACIVS
Jae-Hean Kim, Hyun Kang, Jin Sung Choi, Chang-Joon Park
2016 conf
HCI (2)
Hye Sun Park, Ho Won Kim, Chang-Joon Park
2015 conf
ICTC
Jung-Jae Yu, Chang-Joon Park
2015 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Hemasundar Mohan Geddada, Chang-Joon Park, Hyung-Joon Jeon, José Silva-Martínez, Aydin Ilker Karsilayan, Douglas Garrity
2015 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Chang-Joon Park, Marvin Onabajo, Hemasundar Mohan Geddada, Aydin Ilker Karsilayan, José Silva-Martínez
2015 conf
CHI Extended Abstracts
Gun A. Lee, Jonathan Wong, Hye Sun Park, Jin Sung Choi, Chang-Joon Park, Mark Billinghurst
2014 conf
MWSCAS
Hemasundar Mohan Geddada, Chang-Joon Park, José Silva-Martínez, Aydin Ilker Karsilayan
2014 conf
MWSCAS
Chang-Joon Park, José Silva-Martínez, Marvin Onabajo
2014 J jnl
IEEE J. Solid State Circuits
Chang-Joon Park, Marvin Onabajo, José Silva-Martínez
2013 C conf
ISCAS
Chang-Joon Park, Hemasundar Mohan Geddada, Aydin I. Karsilayan, José Silva-Martínez, Marvin Onabajo
2013 conf
MWSCAS
Saikrishna Ganta, Chang-Joon Park, Daniel Gitzel, Rafael Rivera, José Silva-Martínez
2010 A* conf
SIGGRAPH ASIA (Courses)
Byoungwon Choe, Jaesik Hwang, Chang-Joon Park, Jongwon Kim
2010 C conf
ICEC
Jaekwang Lee, Chang-Joon Park
2007 C conf
ICEC
Byeong Heon Cho, Chang-Joon Park, Kwang-Ho Yang
2006 C conf
Image Processing: Algorithms and Systems
Hongseok Kim, Chang-Joon Park, Sung-Eun Kim, In-Ho Lee
2006 B conf
ACIVS
Soon-Yong Park, Jaekyoung Moon, Chang-Joon Park, In-Ho Lee
2006 A conf
BMVC
Jae-Hean Kim, Myung Jin Chung, Chang-Joon Park, In-Ho Lee
2006 J jnl
Pattern Recognit. Lett.
Chang-Joon Park, Kyung-Seok Seo, Heung-Moon Choi
2005 conf
SIGGRAPH Posters
Hongseok Kim, Chang-Joon Park, In-Ho Lee
2003 conf
SIP
Sung-Eun Kim, Chang-Joon Park, Ran-Hee Lee, In-Ho Lee
2003 conf
Robotics and Applications
Chang-Joon Park, In-Ho Lee
2002 C conf
ICCE
Sung-Eun Kim, Ran-Hee Lee, Chang-Joon Park, In-Ho Lee
2000 B conf
SMC
Chang-Joon Park, Kyung-Ae Moon, Weon-Geun Oh, Heung-Moon Choi
1999 conf
SIP
Weon-Geun Oh, Chang-Joon Park, Hyeon-Jin Kim, In-Ho Lee
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