diff --git a/test/unit/cmock_header_parser_test.rb b/test/unit/cmock_header_parser_test.rb index 674c25e..2a567af 100644 --- a/test/unit/cmock_header_parser_test.rb +++ b/test/unit/cmock_header_parser_test.rb @@ -2083,4 +2083,53 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do assert_equal(expected, @parser.parse("module", source)[:functions]) end + it "Transform inline functions takes user provided patterns into account" do + source = + "static inline int staticinlinefunc(struct my_struct *s)\n" + # 'normal' inline pattern + "{\n" + + " return s->a;\n" + + "}\n" + + "static __inline__ int dummy_func_2(int a, char b, float c) {\n" + # First user pattern + " c += 3.14;\n" + + " b -= 32;\n" + + " return a + (int)(b) + (int)c;\n" + + "}\n" + + "static __inline__ __attribute__ ((always_inline)) uint16_t attributealwaysinlinefuncname(void) {\n" + # Second user pattern + " return (uint16_t)(42);\n" + + "}\n" + + "\n" + + expected = + "int staticinlinefunc(struct my_struct *s);\n" + + "int dummy_func_2(int a, char b, float c);\n" + + "uint16_t attributealwaysinlinefuncname(void);\n" + + "\n" + + @parser.treat_inlines = :include + @parser.inline_function_patterns = ['static __inline__ __attribute__ \(\(always_inline\)\)', 'static __inline__', 'static inline'] + assert_equal(expected, @parser.transform_inline_functions(source)) + end + + it "Transform inline functions takes user provided patterns into account" do + source = + "static __inline__ __attribute__ ((always_inline)) uint16_t _somefunc (uint32_t a)\n" + + "{\n" + + " return _someotherfunc (a);\n" + + "}\n" + + "static __inline__ uint16_t _somefunc_0 (uint32_t a)\n" + + "{\n" + + " return (uint16_t) a;\n" + + "}\n" + + "\n" + + expected = + "uint16_t _somefunc (uint32_t a);\n" + + "uint16_t _somefunc_0 (uint32_t a);\n" + + "\n" + + @parser.treat_inlines = :include + @parser.inline_function_patterns = ['static __inline__ __attribute__ \(\(always_inline\)\)', 'static __inline__'] + assert_equal(expected, @parser.transform_inline_functions(source)) + end + end