2007-03-31 13:01:20 +02:00
/*
* Unit test suite for paths
*
* Copyright 2007 Laurent Vromman
*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation ; either
* version 2.1 of the License , or ( at your option ) any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin St , Fifth Floor , Boston , MA 02110 - 1301 , USA
*/
# include <stdarg.h>
2007-04-02 23:33:09 +02:00
# include <stdio.h>
2007-03-31 13:01:20 +02:00
# include "windef.h"
# include "winbase.h"
# include "wingdi.h"
# include "wine/test.h"
# include "winuser.h"
# include "winerror.h"
static void test_widenpath ( void )
{
HDC hdc = GetDC ( 0 ) ;
2007-04-02 23:33:09 +02:00
HPEN greenPen , narrowPen ;
2007-03-31 13:01:20 +02:00
HPEN oldPen ;
POINT pnt [ 6 ] ;
2007-04-03 07:45:40 +02:00
INT nSize , ret ;
DWORD error ;
2007-03-31 13:01:20 +02:00
/* Create a pen to be used in WidenPath */
greenPen = CreatePen ( PS_SOLID , 10 , RGB ( 0 , 0 , 0 ) ) ;
oldPen = SelectObject ( hdc , greenPen ) ;
/* Prepare a path */
pnt [ 0 ] . x = 100 ;
pnt [ 0 ] . y = 0 ;
pnt [ 1 ] . x = 200 ;
pnt [ 1 ] . y = 0 ;
pnt [ 2 ] . x = 300 ;
pnt [ 2 ] . y = 100 ;
pnt [ 3 ] . x = 300 ;
pnt [ 3 ] . y = 200 ;
pnt [ 4 ] . x = 200 ;
pnt [ 4 ] . y = 300 ;
pnt [ 5 ] . x = 100 ;
pnt [ 5 ] . y = 300 ;
/* Set a polyline path */
BeginPath ( hdc ) ;
Polyline ( hdc , pnt , 6 ) ;
EndPath ( hdc ) ;
/* Widen the polyline path */
ok ( WidenPath ( hdc ) , " WidenPath fails while widening a poyline path. \n " ) ;
/* Test if WidenPath seems to have done his job */
nSize = GetPath ( hdc , NULL , NULL , 0 ) ;
ok ( nSize ! = - 1 , " GetPath fails after calling WidenPath. \n " ) ;
ok ( nSize > 6 , " Path number of points is to low. Should be more than 6 but is %d \n " , nSize ) ;
2007-04-02 23:33:09 +02:00
AbortPath ( hdc ) ;
2007-04-03 07:45:40 +02:00
/* Test WidenPath with an open path */
SetLastError ( 0xdeadbeef ) ;
BeginPath ( hdc ) ;
ret = WidenPath ( hdc ) ;
error = GetLastError ( ) ;
ok ( ret = = FALSE & & GetLastError ( ) = = ERROR_CAN_NOT_COMPLETE , " WidenPath fails while widening an open path. Return value is %d, should be %d. Error is %08x, should be %08x \n " , ret , FALSE , GetLastError ( ) , ERROR_CAN_NOT_COMPLETE ) ;
2007-03-31 13:01:20 +02:00
2007-04-02 23:33:09 +02:00
AbortPath ( hdc ) ;
/* Test when the pen width is equal to 1. The path should not change */
narrowPen = CreatePen ( PS_SOLID , 1 , RGB ( 0 , 0 , 0 ) ) ;
oldPen = SelectObject ( hdc , narrowPen ) ;
BeginPath ( hdc ) ;
Polyline ( hdc , pnt , 6 ) ;
EndPath ( hdc ) ;
nSize = GetPath ( hdc , NULL , NULL , 0 ) ;
ok ( nSize = = 6 , " WidenPath fails detecting 1px wide pen. Path length is %d, should be 6 \n " , nSize ) ;
2007-03-31 13:01:20 +02:00
ReleaseDC ( 0 , hdc ) ;
return ;
}
START_TEST ( path )
{
test_widenpath ( ) ;
}