Boost logo

Boost :

From: Hartmut Kaiser (HartmutKaiser_at_[hidden])
Date: 2005-02-10 15:29:59


 
Gennadiy Rozental wrote:

> 2. How are we supposed to test this submission (by test I
> mean: make sure it works correct)?
> The submission package does not include any tests, while with
> utility of this complexity, I actually expected compliance
> testing facilities to exceed in side the implementation.

Just wanted to post the results produced by Wave while running against the
publicly available preprocessor testsuite bundled with the MCPP preprocessor
(available here: http://www.m17n.org/mcpp/index_eng.html)

This test suite consists of over 250 single tests grouped into 168 category
tests - Wave passes 161 out of these. It's a very comprehensive test of all
kinds of different pieces mandated by the Standard.

The failed tests are related to multi character input sequences mainly,
which is one of the known problems of the Wave preprocessing engine.

Regards Hartmut

---------------------------------------------------------------
Legend:
    * test passed
    o test compiled but gave wrong result
    - test didn't pass
    
General Standards conformance
n_1: Trigraph sequences. 3 *
n_2: Line splicing by <backslash>. 5 *
n_3: Handling of comment. 3 *
n_3_4: Handling of comment and \ \n 1 *
n_4: Tokens spelled by digraphs. 2 *
n_5: Spaces or tabs in pp-directive. 1 *
n_6: #include directive. 3 *
n_7: #line directive. 3 *
n_8: #error directive 1 *
n_8_2: #error directive 1 *
n_9: #pragma directive. 1 *
n_10: #if, #elif pp-directive. 2 *
n_11: Operator "defined" in #if. 2 *
n_12: Pp-number and type of #if expr. 7 *
n_13: Valid operators in #if expr. 4 *
n_13_5: Usual arithmetic conversion. 2 *
n_13_7: Short-circuit evaluation of #if. 1 *
n_13_8: Grouping of #if sub-expressions. 5 *
n_13_13: #if expression with macros. 2 *
n_15: #ifdef, #ifndef directives. 2 *
n_18: #define directive. 3 *
n_19: Valid re-definitions of macros. 2 *
n_20: Macro name identical to keyword. 1 *
n_21: Tokenization (no token merging). 1 *
n_22: Tokenization of pp-number. 3 o passes 2 of 3
n_23: ## operator in macro definition. 2 * (C99 mode)
n_24: # operator in macro definition. 4 *
n_25: Pre-expansion of macro args. 5 *
n_26: No recursive replacement. 5 *
n_27: Rescanning of a macro. 5 - passes 4 of 5
n_28: Standard pre-defined macros. 7 * (C99 mode)
n_29: #undef directive. 2 *
n_30: Macro call crossing lines. 1 *
n_32: Escape sequence in char-const. 2 *
n_37: Translation limits. 8 *
                                        104 2

Implementation defined behaviour
i_32_3: Character constant in #if. 2 *
i_33: Wide character constant in #if. 1 *
i_34: Multi-byte character constant. 1 *
i_35: Multi-character character const. 1 *
i_35_3: Multi-character wide character. 1 o passes 0 of 1
                                          6 1
                                          
Error reporting
e_4_3: Illegal pp-token 1 *
e_7_4: #line error 1 *
e_12_8: Out of range integer pp-token 1 *
e_14: Illegal #if expression 6 *
e_14_7: Keywords in #if expression 2 *
e_14_9: Division by 0 in #if expression 1 *
e_14_10: Overflow of constant expression 1 -
e_15_3: #ifdef, #ifndef syntax errors 3 *
e_16: Trailing junk of #else, #endif 2 *
e_17: Ill-formed group /#if, #else...) 7 *
e_18_4: #define syntax errors 6 *
e_19_3: Redefinitions of macros 5 *
e_23_3: Operator ## placement 4 * reported at macro invocation
time
e_24_5: Operator # operand must be param 1 * reported at macro invocation
time
e_27_6: Error of rescanning 1 *
e_29_3: #undef errors 3 *
e_31: Illegal macro calls 2 *
e_31_3: Invalid macro call 1 *
e_32_5: Range error of character constant 1 - passes 0 of 1
e_33_2: Range error of wide char constant 1 - passes 0 of 1
e_35_2: Out of range of char constant 1 - passes 0 of 1
                                         51 4

Total number of tests passed/unpassed. 161 7


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk