HomeAbout Us A-Z IndexSearch * Contact Us Register LoginPress Shop

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 1124 Details

Help Show help | Quick Search | Submit a Test Suite Support Request | Click here to view your privileges

This page provides all information on Problem Report 1124.


Report 1124 Actions


    Problem Report Number 1124
    Submitter's Classification Test Suite problem
    State Resolved
    Resolution Rejected (REJ)
    Problem Resolution ID REJ.X.0326
    Raised 1970-01-01 08:00
    Updated 2003-03-13 08:00
    Published null
    Product Standard Internationalised Terminal Interfaces
    Certification Program The Open Brand certification program
    Test Suite VSU version 5.0.2
    Test Identification xcurses/add_wch 1, 15
    Problem Summary PG4U.00147 The implementation outputs the non-spacing portions of complex characters before the spacing portions.
    Problem Text

    The following test cases and numbers are failing because of a problem in
    SRC/LIB/capi_xcurses/out.c:

    /tset/CAPIxcurses/fadd_wch/fadd_wch1 1 15
    /tset/CAPIxcurses/fadd_wchns/fadd_wchns1 1 2 4 6 11
    /tset/CAPIxcurses/fadd_wchst/fadd_wchst1 1 2 5 10
    /tset/CAPIxcurses/faddnwstr/faddnwstr1 1 3 14
    /tset/CAPIxcurses/faddwstr/faddwstr1 13
    /tset/CAPIxcurses/fchgat/fchgat1 1 2 3
    /tset/CAPIxcurses/fecho_wcha/fecho_wcha1 1 15
    /tset/CAPIxcurses/fhline_set/fhline_set1 1
    /tset/CAPIxcurses/fins_nwstr/fins_nwstr1 1 2 4 5
    /tset/CAPIxcurses/fins_wstr/fins_wstr1 1 2 4
    /tset/CAPIxcurses/fmove/fmove1 2
    /tset/CAPIxcurses/fmvadd_wch/fmvadd_wch1 1 15
    /tset/CAPIxcurses/fmvadd_wcn/fmvadd_wcn1 1 2 4 6 11
    /tset/CAPIxcurses/fmvadd_wcs/fmvadd_wcs1 1 2 5 10
    /tset/CAPIxcurses/fmvaddnwst/fmvaddnwst1 1 3 14
    /tset/CAPIxcurses/fmvaddwstr/fmvaddwstr1 13
    /tset/CAPIxcurses/fmvchgat/fmvchgat1 1 2 3
    /tset/CAPIxcurses/fmvhline_s/fmvhline_s1 1 3 4
    /tset/CAPIxcurses/fmvins_nws/fmvins_nws1 2 4 5
    /tset/CAPIxcurses/fmvins_wch/fmvins_wch1 1 2 3
    /tset/CAPIxcurses/fmvins_wst/fmvins_wst1 1 2 4
    /tset/CAPIxcurses/fmvvline_s/fmvvline_s1 1 2 3 4
    /tset/CAPIxcurses/fmvwadd_wc/fmvwadd_wc1 1 15
    /tset/CAPIxcurses/fmvwadd_wn/fmvwadd_wn1 1 2 4 6 11
    /tset/CAPIxcurses/fmvwadd_ws/fmvwadd_ws1 1 2 5 10
    /tset/CAPIxcurses/fmvwaddnws/fmvwaddnws1 1 3 14
    /tset/CAPIxcurses/fmvwaddwst/fmvwaddwst1 13
    /tset/CAPIxcurses/fmvwchgat/fmvwchgat1 1 2 3
    /tset/CAPIxcurses/fmvwget_wc/fmvwget_wc1 24
    /tset/CAPIxcurses/fmvwgetch/fmvwgetch1 24
    /tset/CAPIxcurses/fmvwins_nw/fmvwins_nw1 2 4 5
    /tset/CAPIxcurses/fmvwins_wc/fmvwins_wc1 1 2 3
    /tset/CAPIxcurses/fmvwins_ws/fmvwins_ws1 1 2 4
    /tset/CAPIxcurses/fmvwvline_/fmvwvline_1 1 2 3 4
    /tset/CAPIxcurses/fpecho_wch/fpecho_wch1 1 15
    /tset/CAPIxcurses/fvline_set/fvline_set1 1 2 3 4
    /tset/CAPIxcurses/fwadd_wch/fwadd_wch1 1 15
    /tset/CAPIxcurses/fwadd_wchn/fwadd_wchn1 1 2 4 6 11
    /tset/CAPIxcurses/fwadd_wchs/fwadd_wchs1 1 2 5 10
    /tset/CAPIxcurses/fwaddnwstr/fwaddnwstr1 1 3 14
    /tset/CAPIxcurses/fwaddwstr/fwaddwstr1 13
    /tset/CAPIxcurses/fwchgat/fwchgat1 1 2 3
    /tset/CAPIxcurses/fwecho_wch/fwecho_wch1 1 15
    /tset/CAPIxcurses/fwhline_se/fwhline_se1 1 2 3 4
    /tset/CAPIxcurses/fwins_nwst/fwins_nwst1 1 2 4 5
    /tset/CAPIxcurses/fwins_wch/fwins_wch1 1 2 3
    /tset/CAPIxcurses/fwins_wstr/fwins_wstr1 1 2 4
    /tset/CAPIxcurses/fwvline_se/fwvline_se1 1 2 3 4

    According to Curses Interfaces, 4.2, p. 17, "A complex character is a
    set of associated characters, which may include a spacing character and
    may include any non-spacing characters associated with it. A spacing
    complex character is a spacing character followed by any non-spacing
    characters associated with it. That is, a spacing complex character is
    a complex character that includes one spacing character."

    The standard does not require the spacing character to be the last
    character in a spacing complex character; it instead specifically allows
    the case when it is not.

    The library calls in out.c incorrectly advance the cursor on acceptance of
    the spacing character, so following non-spacing characters are not
    handled correctly and the tests fail.

    We have found the following changes to out.c to solve the problem:

    ---
    *** out.c.org Wed Apr 8 17:16:17 1998
    --- /home/muffin/out.c Tue Apr 21 10:24:53 1998
    ***************
    *** 1,5 ****
    /*
    ! $Header: /usr5/CAPI/RCS/out.c,v 22.0 1997/11/26 23:50:18 andy Rel $
    */
    /*
    ** Copyright (c) 88open Consortium, Ltd. 1990, 1991, 1992, 1993
    --- 1,5 ----
    /*
    ! $Header:
    /team/ps/sun_xcurses/archive/local_changes/VSU5/CAPI/SRC/LIB/capi_xcurses/rcs/out.c 1.1 1998/04/13 13:34:20 cbates Exp $
    */
    /*
    ** Copyright (c) 88open Consortium, Ltd. 1990, 1991, 1992, 1993
    ***************
    *** 13,19 ****
    ** Description: Low level terminal emulator code
    **
    ** Modifications:
    ! ** $Log: out.c,v $
    * Revision 22.0 1997/11/26 23:50:18 andy
    * Branch point for Release 5.0.2
    *
    --- 13,21 ----
    ** Description: Low level terminal emulator code
    **
    ** Modifications:
    ! ** $Log: out.c $
    ! ** Revision 1.1 1998/04/13 13:34:20 cbates
    ! ** Initial revision
    * Revision 22.0 1997/11/26 23:50:18 andy
    * Branch point for Release 5.0.2
    *
    ***************
    *** 1031,1044 ****
    break;
    }
    }
    -

    /* handle_output - Main loop of output process.
    * Reads and dispatches characters from output stream.
    */
    void avsvirtual_output(FILE *fil)
    {
    -
    register int ch;
    int tmp;
    static int first_time=1;
    --- 1033,1047 ----
    break;
    }
    }

    + static int nonSpacingCol = -1;
    + static int nonSpacingRow = 0;
    +
    /* handle_output - Main loop of output process.
    * Reads and dispatches characters from output stream.
    */
    void avsvirtual_output(FILE *fil)
    {
    register int ch;
    int tmp;
    static int first_time=1;
    ***************
    *** 1057,1062 ****
    --- 1060,1066 ----
    while ((ch = nextch()) != EOF) {
    /* Escape character */
    if (ch == VSU_XC_ESC) {
    + nonSpacingCol = -1;
    do_ansi_escape();
    continue;
    }
    ***************
    *** 1065,1071 ****
    --- 1069,1078 ----
    tmp = ch;
    fextended = get_wide_char(&tmp);
    if (fextended == -1) /*parse error*/
    + {
    + nonSpacingCol = -1;
    continue;
    + }
    ch = tmp;

    /* Normal character */
    ***************
    *** 1074,1079 ****
    --- 1081,1087 ----
    #else
    if ((ch >0x1f) && (ch < 0x7F) && !fextended) {
    #endif
    + nonSpacingCol = -1;
    if (col == COLUMNS+1) {
    if (wrap) {
    col = 1;
    ***************
    *** 1104,1110 ****
    width = 0;
    switch (width) {
    case 0:
    ! send_mb_char(col-1, arow-1, (char)ch, 0);
    break;
    case 1:
    if (col == COLUMNS+1) {
    --- 1112,1126 ----
    width = 0;
    switch (width) {
    case 0:
    ! if (nonSpacingCol != -1)
    ! {
    ! send_mb_char(
    ! nonSpacingCol-1,
    ! nonSpacingRow-1,
    ! (char)ch, 0);
    ! }
    ! else
    ! send_mb_char(col-1, arow-1,
    (char)ch, 0);
    break;
    case 1:
    if (col == COLUMNS+1) {
    ***************
    *** 1115,1130 ****
    else
    col = COLUMNS;
    }
    if (col == COLUMNS) {
    - send_mb_char(col-1, arow-1, (char)ch, 1);
    if (wrap)
    col++;
    }
    else {
    - send_mb_char(col-1, arow-1, (char)ch, 1);
    col++;
    }
    ! set_cursor(col-1, arow-1); /* Correct? */
    break;
    case 2:
    if (col == COLUMNS)
    --- 1131,1147 ----
    else
    col = COLUMNS;
    }
    + send_mb_char(col-1, arow-1, (char)ch, 1);
    + nonSpacingCol = col;
    + nonSpacingRow = arow;
    if (col == COLUMNS) {
    if (wrap)
    col++;
    }
    else {
    col++;
    }
    ! set_cursor(col-1, arow-1);
    break;
    case 2:
    if (col == COLUMNS)
    ***************
    *** 1137,1154 ****
    else
    break;
    }
    if (col == COLUMNS-1) {
    - send_mb_char(col-1, arow-1, (char)ch, 1);
    - send_mb_char(col, arow-1, '0', 1);
    if (wrap)
    ! col +=2;
    }
    else {
    - send_mb_char(col-1, arow-1, (char)ch, 1);
    - send_mb_char(col, arow-1, '0', 1);
    col += 2;
    }
    ! set_cursor(col-1, arow-1); /* Correct? */
    break;
    default:
    break;
    --- 1154,1171 ----
    else
    break;
    }
    + send_mb_char(col-1, arow-1, (char)ch, 1);
    + send_mb_char(col, arow-1, '0', 1);
    + nonSpacingCol = col;
    + nonSpacingRow = arow;
    if (col == COLUMNS-1) {
    if (wrap)
    ! col += 2;
    }
    else {
    col += 2;
    }
    ! set_cursor(col-1, arow-1);
    break;
    default:
    break;

    ----

    [Note to reviewer: The complete journal is too large to submit here. It's
    available under separate cover on request.]
    Test Output

    10|394 /tset/CAPIxcurses/fadd_wch/fadd_wch1 21:15:24|TC Start, scenario ref 176-54
    15|394 1.10 18|TCM Start
    400|394 1 1 21:15:25|IC Start
    200|394 1 21:15:25|TP Start
    520|394 1 6785 1 1|SPEC1170TESTSUITE CASE 1
    520|394 1 6785 1 2|A successful call to int add_wch(const cchar_t *wch)
    520|394 1 6785 1 3|shall put the character component of wch into the
    520|394 1 6785 1 4|window stdscr at the cursor position for stdscr,
    520|394 1 6785 1 5|advance the cursor position for stdscr, and return OK.
    520|394 1 6786 1 1|PREP: Set test locale: xcurses
    520|394 1 6786 1 2|PREP: Set environment variables and open terminal connection
    520|394 1 6786 2 1|PREP: Call newterm
    520|394 1 6786 2 2|PREP: Initialize color pairs
    520|394 1 6786 2 3|PREP: Write extended characters with various attributes
    520|394 1 6786 2 4|TEST: Write with add_wch
    520|394 1 6786 2 5|ERROR: Asked to add non-spacing char #1 to non-extended char ' ' at (r=5, c=6)
    520|394 1 6786 2 6|ERROR: Asked to add non-spacing char #2 to non-extended char ' ' at (r=5, c=6)
    520|394 1 6786 2 7|TEST: Data on terminal screen matches expected data
    520|394 1 6786 2 8|ERROR: Line 5 is not as expected. Expected line is:
    520|394 1 6786 2 9| B290x
    520|394 1 6786 2 10|ERROR: Actual line is:
    520|394 1 6786 2 11| 1290x
    520|394 1 6786 2 12| Expected data: $TET_ROOT/CAPI/tset/CAPIxcurses/data/ADD_WCH/data1.scrn.
    520|394 1 6786 2 13| Actual data: $TET_ROOT/CAPI/tset/CAPIxcurses/tmp/ADD_WCH/data1.scrn
    520|394 1 6786 2 14|TEST: Cursor movement
    520|394 1 6786 2 15|CLEANUP: Call endwin
    520|394 1 6786 2 16|CLEANUP: Call delscreen
    520|394 1 6786 2 17|CLEANUP: Restore environment variables and close terminal connection
    520|394 1 6785 2 1|INFO: Testing the macro version of add_wch
    520|394 1 6789 1 1|PREP: Set test locale: xcurses
    520|394 1 6789 1 2|PREP: Set environment variables and open terminal connection
    520|394 1 6789 2 1|PREP: Call newterm
    520|394 1 6789 2 2|PREP: Initialize color pairs
    520|394 1 6789 2 3|PREP: Write extended characters with various attributes
    520|394 1 6789 2 4|TEST: Write with add_wch
    520|394 1 6789 2 5|ERROR: Asked to add non-spacing char #1 to non-extended char ' ' at (r=5, c=6)
    520|394 1 6789 2 6|ERROR: Asked to add non-spacing char #2 to non-extended char ' ' at (r=5, c=6)
    520|394 1 6789 2 7|TEST: Data on terminal screen matches expected data
    520|394 1 6789 2 8|ERROR: Line 5 is not as expected. Expected line is:
    520|394 1 6789 2 9| B290x
    520|394 1 6789 2 10|ERROR: Actual line is:
    520|394 1 6789 2 11| 1290x
    520|394 1 6789 2 12| Expected data: $TET_ROOT/CAPI/tset/CAPIxcurses/data/ADD_WCH/data1.scrn.
    520|394 1 6789 2 13| Actual data: $TET_ROOT/CAPI/tset/CAPIxcurses/tmp/ADD_WCH/data1.scrn
    520|394 1 6789 2 14|TEST: Cursor movement
    520|394 1 6789 2 15|CLEANUP: Call endwin
    520|394 1 6789 2 16|CLEANUP: Call delscreen
    520|394 1 6789 2 17|CLEANUP: Restore environment variables and close terminal connection
    220|394 1 1 21:15:30|FAIL
    410|394 1 1 21:15:30|IC End

    Review Information

    Review Type TSMA Review
    Start Date null
    Completed null
    Status Complete
    Review Recommendation No Resolution Given
    Review Response
    This request should be refused.

    The specification clearly states " A spacing complex character is a
    spacing character followed by any non-spacing characters associated with it."
    The submitter's implementation does not conform to this requirement.
    The terminal emulator provided by the tests supports exactly this
    functionality.

    Note to TOG: please take a look at VSU SR #319 in which this requirement
    was clarified previously.

    Note to the submitter: sorry but regardless of the length of the results
    involved a waiver request only applies to tests for which results are
    included in the request itself. Results may not be submitted as
    separate files.

    Review Type SA Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution Rejected (REJ)
    Review Conclusion
    This request is refused.

    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority