Commit graph

13 commits

Author SHA1 Message Date
Carl Worth
db272e6e6f Add test for function-like macro invocations with multiple-token arguments.
These are not yet parsed correctly, so these tests fail.
2010-05-14 11:50:27 -07:00
Carl Worth
3014073311 Add test where a macro formal parameter is the same as an existing macro.
This is a well-defined condition, but something that currently trips up
the implementation. Should be easy to fix.
2010-05-14 09:53:50 -07:00
Carl Worth
af71ba41bd Add tests exercising substitution of arguments in function-like macros.
This capability is the only thing that makes function-like macros
interesting. This isn't supported yet so these tests fail for now.
2010-05-14 09:53:50 -07:00
Carl Worth
27bc8930ba Add some whitespace variations to test 15.
This shows two minor failures in our current parsing (resulting in
whitespace-only changes, oso not that significant):

  1. We are inserting extra whitespace between tokens not originally
     separated by whitespace in the replacement list of a macro
     definition.

  2. We are swallowing whitespace separating tokens in the general
     content.
2010-05-14 09:20:13 -07:00
Carl Worth
67c27afc16 Add test for an object-like macro with a definition beginning with '('
Our current parser sees "#define foo (" as an identifier token
followed by a '(' token and parses this as a function-like macro.

That would be correct for "#define foo(" but the preprocessor
specification treats this whitespace as significant here so this test
currently fails.
2010-05-14 09:20:13 -07:00
Carl Worth
4abc3dec72 Add tests for the structure of function-like macros.
These test only the most basic aspect of parsing of function-like
macros.  Specifically, none of the definitions of these function like
macros use the arguments of the function.

No function-like macros are implemented yet, so all of these fail for
now.
2010-05-13 09:35:50 -07:00
Carl Worth
a68e668b17 Add test case to define, undef, and then again define a macro.
Happily, this is another test case that works just fine without any
additional code.
2010-05-12 13:14:08 -07:00
Carl Worth
7bdd1f36d9 Add test for #undef.
Which hasn't been implemented yet, so this test fails.
2010-05-12 13:11:23 -07:00
Carl Worth
39cd7c2f2e Add test for an empty definition.
Happily this one passes without needing any additional code.
2010-05-12 12:49:07 -07:00
Carl Worth
df2ab5b992 Add tests defining a macro to be a literal and another macro.
These 3 new tests are modeled after 3 existing tests but made slightly
more complex since now instead of definining a new macro to be an
existing macro, we define it to be replaced with two tokens, (one a
literal, and one an existing macro).

These tests all fail currently because the replacement lookup is
currently happening on the basis of the entire replacement string
rather than on a list of tokens.
2010-05-11 12:39:29 -07:00
Carl Worth
34db0d332e Add a couple more tests for chained #define directives.
One with the chained defines in the opposite order, and one with the
potential to trigger an infinite-loop bug through mutual
recursion. Each of these tests pass already.
2010-05-11 12:35:06 -07:00
Carl Worth
49206ef4c8 Add test for chained #define directives.
Where one macro is defined in terms of another macro. The current
implementation does not yet deal with this correctly.
2010-05-11 12:29:22 -07:00
Carl Worth
e8c790b3ce Add a very simple test for the pre-processor.
Validate desired test cases by ensuring the output of glcpp matches
the output of the gcc preprocessor, (ignoring any lines of the gcc
output beginning with '#').

Only one test case so far with a trivial #define.
2010-05-10 16:21:10 -07:00