def test_filter_extern_define_keyword(self):
     self.assertEqual(filter_specific_keywords('EXTERN_C'), '')
     self.assertEqual(filter_specific_keywords('EXTERN_GUID f();'), ' f();')
     self.assertEqual(filter_specific_keywords('EXTERN_GUID(xx) f();'),
                      ' f();')
     self.assertEqual(filter_specific_keywords('DEFINE_ f();'), ' f();')
     self.assertEqual(filter_specific_keywords('DEFINE_XX(yy) f();'),
                      ' f();')
    def test_filter_some_keywords(self):
        words = [
            'WINAPI_INLINE', 'extern', 'extern "C" {', 'ExternC', '__wur',
            'BEGIN_NAMESPACE_CPP'
            'BEGIN_NAMESPACE'
            'NAMESPACE_CPP'
        ]
        for w in words:
            self.assertEqual(filter_specific_keywords(w), '')

        w1 = '__THROW;'
        self.assertEqual(filter_specific_keywords(w1), ';')
 def test_filter_call_conv_macros(self):
     self.assertEqual(filter_specific_keywords('__callback'), '')
     self.assertEqual(filter_specific_keywords('__kernel_entry'), '')
     self.assertEqual(filter_specific_keywords('AJ_CALL'), '')
     self.assertEqual(filter_specific_keywords('CALLBACK'), '')
     self.assertEqual(filter_specific_keywords('PASCAL'), '')
     self.assertEqual(filter_specific_keywords('RPC_ENTRY'), '')
     self.assertEqual(filter_specific_keywords('STDMETHODCALLTYPE'), '')
     self.assertEqual(filter_specific_keywords('XM_CALLCONV'), '')
 def test_filter_begin_end_decl_keyword(self):
     self.assertEqual(filter_specific_keywords('__BEGIN_DECLS'), '')
     self.assertEqual(filter_specific_keywords('__END_DECLS'), '')
 def test_filter_altdecl_macro(self):
     self.assertEqual(filter_specific_keywords('__ALTDECL'), '')
 def test_filter_wur_keyword(self):
     self.assertEqual(filter_specific_keywords('__wur'), '')
 def test_filter_api_keyword(self):
     self.assertEqual(filter_specific_keywords('ACLUIAPI'), '')
     self.assertEqual(filter_specific_keywords('ACMAPI'), '')
     self.assertEqual(filter_specific_keywords('AJ_API'), '')
     self.assertEqual(filter_specific_keywords('AMOVIEAPI'), '')
     self.assertEqual(filter_specific_keywords('APIENTRY'), '')
     self.assertEqual(filter_specific_keywords('AUTHZAPI'), '')
     self.assertEqual(filter_specific_keywords('AVRTAPI'), '')
     self.assertEqual(filter_specific_keywords('BATTERYCLASSAPI'), '')
     self.assertEqual(filter_specific_keywords('BERAPI'), '')
     self.assertEqual(filter_specific_keywords('CERTBCLI_API'), '')
     self.assertEqual(filter_specific_keywords('CERTPOLENGAPI'), '')
     self.assertEqual(filter_specific_keywords('CLFSUSER_API'), '')
     self.assertEqual(filter_specific_keywords('CMAPI'), '')
     self.assertEqual(filter_specific_keywords('CREDUIAPI'), '')
     self.assertEqual(filter_specific_keywords('CRYPTDLGAPI'), '')
     self.assertEqual(filter_specific_keywords('DDAPI'), '')
     self.assertEqual(filter_specific_keywords('DHCP_API_FUNCTION'), '')
     self.assertEqual(filter_specific_keywords('DIAMONDAPI'), '')
     self.assertEqual(filter_specific_keywords('DPAPI_IMP'), '')
     self.assertEqual(filter_specific_keywords('DSGETDCAPI'), '')
     self.assertEqual(filter_specific_keywords('ENGAPI'), '')
     self.assertEqual(filter_specific_keywords('EVNTAPI'), '')
     self.assertEqual(filter_specific_keywords('FLTAPI'), '')
     self.assertEqual(filter_specific_keywords('GPEDITAPI'), '')
     self.assertEqual(filter_specific_keywords('HBA_API'), '')
     self.assertEqual(filter_specific_keywords('HTTPAPI_LINKAGE'), '')
     self.assertEqual(filter_specific_keywords('IMAGEAPI'), '')
     self.assertEqual(filter_specific_keywords('INSTAPI'), '')
     self.assertEqual(filter_specific_keywords('INTSHCUTAPI'), '')
     self.assertEqual(filter_specific_keywords('ISDSC_API'), '')
     self.assertEqual(filter_specific_keywords('JET_API'), '')
     self.assertEqual(filter_specific_keywords('KSDDKAPI'), '')
     self.assertEqual(filter_specific_keywords('LDAPAPI'), '')
     self.assertEqual(filter_specific_keywords('NETIOAPI_API_'), '')
     self.assertEqual(filter_specific_keywords('NET_API_FUNCTION'), '')
     self.assertEqual(filter_specific_keywords('NTKERNELAPI'), '')
     self.assertEqual(filter_specific_keywords('NTAPI'), '')
     self.assertEqual(filter_specific_keywords('NTDSAPI'), '')
     self.assertEqual(filter_specific_keywords('NTHALAPI'), '')
     self.assertEqual(filter_specific_keywords('NTPSHEDAPI'), '')
     self.assertEqual(filter_specific_keywords('NTSYSAPI'), '')
     self.assertEqual(filter_specific_keywords('NTSYSCALLAPI'), '')
     self.assertEqual(filter_specific_keywords('ORAPI'), '')
     self.assertEqual(filter_specific_keywords('PATCHAPI'), '')
     self.assertEqual(filter_specific_keywords('PHP_JSON_API'), '')
     self.assertEqual(filter_specific_keywords('PXEAPI'), '')
     self.assertEqual(filter_specific_keywords('PORTCLASSAPI'), '')
     self.assertEqual(filter_specific_keywords('ROAPI'), '')
     self.assertEqual(filter_specific_keywords('REGAPI'), '')
     self.assertEqual(filter_specific_keywords('RPCNSAPI'), '')
     self.assertEqual(filter_specific_keywords('RPCRTAPI'), '')
     self.assertEqual(filter_specific_keywords('SCSIPORT_API'), '')
     self.assertEqual(filter_specific_keywords('SDBAPI'), '')
     self.assertEqual(filter_specific_keywords('SNAPI'), '')
     self.assertEqual(filter_specific_keywords('SNMPAPI_CALL'), '')
     self.assertEqual(filter_specific_keywords('SNMP_FUNC_TYPE'), '')
     self.assertEqual(filter_specific_keywords('SQL_API'), '')
     self.assertEqual(filter_specific_keywords('SQL_SPI'), '')
     self.assertEqual(filter_specific_keywords('STORPORT_API'), '')
     self.assertEqual(filter_specific_keywords('TSPIAPI'), '')
     self.assertEqual(filter_specific_keywords('UDAPICALL'), '')
     self.assertEqual(filter_specific_keywords('USBRPMAPI'), '')
     self.assertEqual(filter_specific_keywords('USERENVAPI'), '')
     self.assertEqual(filter_specific_keywords('VFWAPI'), '')
     self.assertEqual(filter_specific_keywords('VFWAPIV'), '')
     self.assertEqual(filter_specific_keywords('VIDEOPORT_API'), '')
     self.assertEqual(filter_specific_keywords('W32KAPI'), '')
     self.assertEqual(filter_specific_keywords('WDSBPAPI'), '')
     self.assertEqual(filter_specific_keywords('WDSCLIAPI'), '')
     self.assertEqual(filter_specific_keywords('WDSMCSAPI'), '')
     self.assertEqual(filter_specific_keywords('WDSTCIAPI'), '')
     self.assertEqual(filter_specific_keywords('WDSTRANSPORTPROVIDERAPI'),
                      '')
     self.assertEqual(filter_specific_keywords('WIAMICRO_API'), '')
     self.assertEqual(filter_specific_keywords('WINAPI'), '')
     self.assertEqual(filter_specific_keywords('WINAPI_INLINE'), '')
     self.assertEqual(filter_specific_keywords('WINGDIAPI'), '')
     self.assertEqual(filter_specific_keywords('WINSOCK_API_LINKAGE'), '')
     self.assertEqual(filter_specific_keywords('WMIAPI'), '')
     self.assertEqual(filter_specific_keywords('WSAAPI'), '')
     self.assertEqual(filter_specific_keywords('WSPAPI'), '')
 def test_filter_v1_enum_macro(self):
     self.assertEqual(filter_specific_keywords('[v1_enum]'), '')
 def test_return_keyword(self):
     self.assertEqual(filter_specific_keywords('return (x+y);'), ';')
 def test_filter_drv_macro(self):
     self.assertEqual(filter_specific_keywords('__drv_xx'), '')
     self.assertEqual(filter_specific_keywords('__drv_xx(yy)'), '')
 def test_filter_aligned_macro(self):
     self.assertEqual(filter_specific_keywords('aligned(8)'), '')
     self.assertEqual(filter_specific_keywords('__aligned(x)'), '')
 def test_filter_CRT_keyword(self):
     self.assertEqual(filter_specific_keywords('__CRT '), ' ')
     self.assertEqual(filter_specific_keywords('_CRT(xx)'), '')
     self.assertEqual(filter_specific_keywords('__crt(xx)'), '')
 def test_do_not_filter_CRT_DOUBLE_macro(self):
     self.assertEqual(filter_specific_keywords('_CRT_DOUBLE'),
                      '_CRT_DOUBLE')
 def test_filter_redirected_declarations(self):
     self.assertEqual(
         filter_specific_keywords('void __REDIRECT_NTH(f1,(p),f2);'), '')
 def test_filter_extern_keyword(self):
     self.assertEqual(filter_specific_keywords('extern'), '')
     self.assertEqual(filter_specific_keywords('extern "C" {'), '')
 def test_filter_namespace_keyword(self):
     self.assertEqual(filter_specific_keywords('_NAMESPACE_'), '')
     self.assertEqual(filter_specific_keywords('BEGIN_NAMESPACE_X'), '')
     self.assertEqual(filter_specific_keywords('END_NAMESPACE_X'), '')
 def test_filter_dhcp_const_macro(self):
     self.assertEqual(filter_specific_keywords('DHCP_CONST'), '')
 def test_filter_declspec_macro(self):
     self.assertEqual(filter_specific_keywords('__DECLSPEC_ALIGN(x)'), '')
     self.assertEqual(filter_specific_keywords('__declspec(yy)'), '')
 def test_filter_fortify_function_macro(self):
     self.assertEqual(filter_specific_keywords('__fortify_function'), '')
 def test_filter_align_macros(self):
     self.assertEqual(filter_specific_keywords('POINTER_ALIGNMENT'), '')
     self.assertEqual(filter_specific_keywords('ALIGN(8)'), '')
 def test_filter_clrcall_macro(self):
     self.assertEqual(filter_specific_keywords('__clrcall'), '')
 def test_filter_zlib_ZEXTERN_macro(self):
     self.assertEqual(filter_specific_keywords('ZEXTERN'), '')
 def test_filter_inline_keyword(self):
     self.assertEqual(filter_specific_keywords('inline'), '')
     self.assertEqual(filter_specific_keywords('_inline'), '')
     self.assertEqual(filter_specific_keywords('__inline'), '')
     self.assertEqual(filter_specific_keywords('__INLINE'), '')
     self.assertEqual(filter_specific_keywords('__STRING_INLINE'), '')
     self.assertEqual(filter_specific_keywords('__MATH_INLINE'), '')
     self.assertEqual(filter_specific_keywords('__GMP_EXTERN_INLINE'), '')
     self.assertEqual(filter_specific_keywords('__extern_inline'), '')
     self.assertEqual(filter_specific_keywords('__extern_always_inline'),
                      '')
     self.assertEqual(filter_specific_keywords('__forceinline'), '')
     self.assertEqual(filter_specific_keywords('FORCEINLINE'), '')
     self.assertEqual(filter_specific_keywords('CFORCEINLINE'), '')
     self.assertEqual(filter_specific_keywords('D2D1FORCEINLINE'), '')
     self.assertEqual(filter_specific_keywords('INLINE'), '')
     self.assertEqual(filter_specific_keywords('MI_INLINE'), '')
     self.assertEqual(filter_specific_keywords('MI_INLINE_CALL'), '')
     self.assertEqual(filter_specific_keywords('MSTCPIP_INLINE'), '')
     self.assertEqual(filter_specific_keywords('MSWSOCKDEF_INLINE'), '')
     self.assertEqual(filter_specific_keywords('NTAPI_INLINE'), '')
     self.assertEqual(filter_specific_keywords('VFWAPI_INLINE'), '')
     self.assertEqual(filter_specific_keywords('VXDINLINE'), '')
     self.assertEqual(filter_specific_keywords('WS2TCPIP_INLINE'), '')
 def test_filter_static_keyword(self):
     self.assertEqual(filter_specific_keywords('static'), '')
 def test_filter_RPC_keyword(self):
     self.assertEqual(filter_specific_keywords('__RPC_sth'), '')
     self.assertEqual(filter_specific_keywords('__RPC_sth(xx)'), '')
 def test_filter_throw_keyword(self):
     self.assertEqual(filter_specific_keywords('THROW;'), ';')
     self.assertEqual(filter_specific_keywords('__THROW(x);'), ';')
     self.assertEqual(filter_specific_keywords('__throw(x);'), ';')
 def test_filter_export_macros(self):
     self.assertEqual(filter_specific_keywords('DRMEXPORT'), '')
     self.assertEqual(filter_specific_keywords('EXPORT'), '')
     self.assertEqual(filter_specific_keywords('ZEXPORT'), '')
     self.assertEqual(filter_specific_keywords('FILEHC_EXPORT'), '')
 def test_filter_macros_with_numbers_inside_double_brackets(self):
     self.assertEqual(filter_specific_keywords('__nonnull(())'), '')
     self.assertEqual(filter_specific_keywords('GL_ATTRIBUTE((1, 2))'), '')
 def test_filter_out_data_source_winapi_macro(self):
     self.assertEqual(
         filter_specific_keywords('__out_data_source(MacroItem)'), '')
     self.assertEqual(
         filter_specific_keywords('__in_data_source(MacroItem)'), '')
 def test_filter_noreturn_keyword(self):
     self.assertEqual(filter_specific_keywords('__analysis_noreturn'), '')