add some more test cases:
- function like macros
- macro arguments
- variadic macros
- undef
- redefining macro
- self referential macros

@todo: test cases which are not working with current implementation