|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1124 Details
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 EndReview 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:
- View Report 1124
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority