mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 04:45:43 +00:00
Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys.
This commit is contained in:
parent
b94e2d8ca0
commit
c2c66aff7d
24198 changed files with 0 additions and 37285 deletions
471
modules/rostests/winetests/gdiplus/stringformat.c
Normal file
471
modules/rostests/winetests/gdiplus/stringformat.c
Normal file
|
@ -0,0 +1,471 @@
|
|||
/*
|
||||
* Unit test suite for string format
|
||||
*
|
||||
* Copyright (C) 2007 Google (Evan Stade)
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#define WIN32_NO_STATUS
|
||||
#define _INC_WINDOWS
|
||||
#define COM_NO_WINDOWS_H
|
||||
|
||||
//#include "windows.h"
|
||||
#include <wine/test.h>
|
||||
#include <wingdi.h>
|
||||
#include <objbase.h>
|
||||
#include <gdiplus.h>
|
||||
|
||||
#define expect(expected, got) ok(got == expected, "Expected %.8x, got %.8x\n", expected, got)
|
||||
#define expectf(expected, got) ok(got == expected, "Expected %.2f, got %.2f\n", expected, got)
|
||||
|
||||
static void test_constructor(void)
|
||||
{
|
||||
GpStringFormat *format;
|
||||
GpStatus stat;
|
||||
INT n, count;
|
||||
StringAlignment align, line_align;
|
||||
StringTrimming trimming;
|
||||
StringDigitSubstitute digitsub;
|
||||
LANGID digitlang;
|
||||
|
||||
stat = GdipCreateStringFormat(0, LANG_NEUTRAL, &format);
|
||||
expect(Ok, stat);
|
||||
|
||||
GdipGetStringFormatAlign(format, &align);
|
||||
GdipGetStringFormatLineAlign(format, &line_align);
|
||||
GdipGetStringFormatHotkeyPrefix(format, &n);
|
||||
GdipGetStringFormatTrimming(format, &trimming);
|
||||
GdipGetStringFormatDigitSubstitution(format, &digitlang, &digitsub);
|
||||
GdipGetStringFormatMeasurableCharacterRangeCount(format, &count);
|
||||
|
||||
expect(HotkeyPrefixNone, n);
|
||||
expect(StringAlignmentNear, align);
|
||||
expect(StringAlignmentNear, line_align);
|
||||
expect(StringTrimmingCharacter, trimming);
|
||||
expect(StringDigitSubstituteUser, digitsub);
|
||||
expect(LANG_NEUTRAL, digitlang);
|
||||
expect(0, count);
|
||||
|
||||
stat = GdipDeleteStringFormat(format);
|
||||
expect(Ok, stat);
|
||||
}
|
||||
|
||||
static void test_characterrange(void)
|
||||
{
|
||||
CharacterRange ranges[3];
|
||||
INT count;
|
||||
GpStringFormat* format;
|
||||
GpStatus stat;
|
||||
|
||||
stat = GdipCreateStringFormat(0, LANG_NEUTRAL, &format);
|
||||
expect(Ok, stat);
|
||||
stat = GdipSetStringFormatMeasurableCharacterRanges(NULL, 3, ranges);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipSetStringFormatMeasurableCharacterRanges(format, 0, ranges);
|
||||
expect(Ok, stat);
|
||||
stat = GdipSetStringFormatMeasurableCharacterRanges(format, 3, NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipSetStringFormatMeasurableCharacterRanges(format, 3, ranges);
|
||||
expect(Ok, stat);
|
||||
stat = GdipGetStringFormatMeasurableCharacterRangeCount(format, &count);
|
||||
expect(Ok, stat);
|
||||
if (stat == Ok) expect(3, count);
|
||||
|
||||
stat= GdipDeleteStringFormat(format);
|
||||
expect(Ok, stat);
|
||||
}
|
||||
|
||||
static void test_digitsubstitution(void)
|
||||
{
|
||||
GpStringFormat *format;
|
||||
GpStatus stat;
|
||||
StringDigitSubstitute digitsub;
|
||||
LANGID digitlang;
|
||||
|
||||
stat = GdipCreateStringFormat(0, LANG_RUSSIAN, &format);
|
||||
expect(Ok, stat);
|
||||
|
||||
/* NULL arguments */
|
||||
stat = GdipGetStringFormatDigitSubstitution(NULL, NULL, NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipGetStringFormatDigitSubstitution(format, NULL, NULL);
|
||||
expect(Ok, stat);
|
||||
stat = GdipGetStringFormatDigitSubstitution(NULL, &digitlang, NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipGetStringFormatDigitSubstitution(NULL, NULL, &digitsub);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipGetStringFormatDigitSubstitution(NULL, &digitlang, &digitsub);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipSetStringFormatDigitSubstitution(NULL, LANG_NEUTRAL, StringDigitSubstituteNone);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
/* try to get both and one by one */
|
||||
stat = GdipGetStringFormatDigitSubstitution(format, &digitlang, &digitsub);
|
||||
expect(Ok, stat);
|
||||
expect(StringDigitSubstituteUser, digitsub);
|
||||
expect(LANG_NEUTRAL, digitlang);
|
||||
|
||||
digitsub = StringDigitSubstituteNone;
|
||||
stat = GdipGetStringFormatDigitSubstitution(format, NULL, &digitsub);
|
||||
expect(Ok, stat);
|
||||
expect(StringDigitSubstituteUser, digitsub);
|
||||
|
||||
digitlang = LANG_RUSSIAN;
|
||||
stat = GdipGetStringFormatDigitSubstitution(format, &digitlang, NULL);
|
||||
expect(Ok, stat);
|
||||
expect(LANG_NEUTRAL, digitlang);
|
||||
|
||||
/* set/get */
|
||||
stat = GdipSetStringFormatDigitSubstitution(format, MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL),
|
||||
StringDigitSubstituteUser);
|
||||
expect(Ok, stat);
|
||||
digitsub = StringDigitSubstituteNone;
|
||||
digitlang = LANG_RUSSIAN;
|
||||
stat = GdipGetStringFormatDigitSubstitution(format, &digitlang, &digitsub);
|
||||
expect(Ok, stat);
|
||||
expect(StringDigitSubstituteUser, digitsub);
|
||||
expect(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL), digitlang);
|
||||
|
||||
stat = GdipDeleteStringFormat(format);
|
||||
expect(Ok, stat);
|
||||
}
|
||||
|
||||
static void test_getgenerictypographic(void)
|
||||
{
|
||||
GpStringFormat *format, *format2;
|
||||
GpStatus stat;
|
||||
INT flags;
|
||||
INT n;
|
||||
StringAlignment align, line_align;
|
||||
StringTrimming trimming;
|
||||
StringDigitSubstitute digitsub;
|
||||
LANGID digitlang;
|
||||
INT tabcount;
|
||||
|
||||
/* NULL arg */
|
||||
stat = GdipStringFormatGetGenericTypographic(NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipStringFormatGetGenericTypographic(&format);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipStringFormatGetGenericTypographic(&format2);
|
||||
expect(Ok, stat);
|
||||
ok(format == format2, "expected same format object\n");
|
||||
stat = GdipDeleteStringFormat(format2);
|
||||
expect(Ok, stat);
|
||||
|
||||
GdipGetStringFormatFlags(format, &flags);
|
||||
GdipGetStringFormatAlign(format, &align);
|
||||
GdipGetStringFormatLineAlign(format, &line_align);
|
||||
GdipGetStringFormatHotkeyPrefix(format, &n);
|
||||
GdipGetStringFormatTrimming(format, &trimming);
|
||||
GdipGetStringFormatDigitSubstitution(format, &digitlang, &digitsub);
|
||||
GdipGetStringFormatTabStopCount(format, &tabcount);
|
||||
|
||||
expect((StringFormatFlagsNoFitBlackBox |StringFormatFlagsLineLimit | StringFormatFlagsNoClip),
|
||||
flags);
|
||||
expect(HotkeyPrefixNone, n);
|
||||
expect(StringAlignmentNear, align);
|
||||
expect(StringAlignmentNear, line_align);
|
||||
expect(StringTrimmingNone, trimming);
|
||||
expect(StringDigitSubstituteUser, digitsub);
|
||||
expect(LANG_NEUTRAL, digitlang);
|
||||
expect(0, tabcount);
|
||||
|
||||
/* Change format parameters, release, get format object again. */
|
||||
stat = GdipSetStringFormatFlags(format, StringFormatFlagsNoWrap);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipGetStringFormatFlags(format, &flags);
|
||||
expect(Ok, stat);
|
||||
expect(StringFormatFlagsNoWrap, flags);
|
||||
|
||||
stat = GdipDeleteStringFormat(format);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipStringFormatGetGenericTypographic(&format);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipGetStringFormatFlags(format, &flags);
|
||||
expect(Ok, stat);
|
||||
expect(StringFormatFlagsNoWrap, flags);
|
||||
|
||||
stat = GdipDeleteStringFormat(format);
|
||||
expect(Ok, stat);
|
||||
}
|
||||
|
||||
static REAL tabstops[] = {0.0, 10.0, 2.0};
|
||||
static void test_tabstops(void)
|
||||
{
|
||||
GpStringFormat *format;
|
||||
GpStatus stat;
|
||||
INT count;
|
||||
REAL tabs[3];
|
||||
REAL firsttab;
|
||||
|
||||
stat = GdipCreateStringFormat(0, LANG_NEUTRAL, &format);
|
||||
expect(Ok, stat);
|
||||
|
||||
/* NULL */
|
||||
stat = GdipGetStringFormatTabStopCount(NULL, NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipGetStringFormatTabStopCount(NULL, &count);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipGetStringFormatTabStopCount(format, NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipSetStringFormatTabStops(NULL, 0.0, 0, NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipSetStringFormatTabStops(format, 0.0, 0, NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipSetStringFormatTabStops(NULL, 0.0, 0, tabstops);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipGetStringFormatTabStops(NULL, 0, NULL, NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipGetStringFormatTabStops(format, 0, NULL, NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipGetStringFormatTabStops(NULL, 0, &firsttab, NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipGetStringFormatTabStops(NULL, 0, NULL, tabs);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipGetStringFormatTabStops(format, 0, &firsttab, NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
stat = GdipGetStringFormatTabStops(format, 0, NULL, tabs);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
/* not NULL */
|
||||
stat = GdipGetStringFormatTabStopCount(format, &count);
|
||||
expect(Ok, stat);
|
||||
expect(0, count);
|
||||
/* negative tabcount */
|
||||
stat = GdipSetStringFormatTabStops(format, 0.0, -1, tabstops);
|
||||
expect(Ok, stat);
|
||||
count = -1;
|
||||
stat = GdipGetStringFormatTabStopCount(format, &count);
|
||||
expect(Ok, stat);
|
||||
expect(0, count);
|
||||
|
||||
stat = GdipSetStringFormatTabStops(format, -10.0, 0, tabstops);
|
||||
expect(Ok, stat);
|
||||
stat = GdipSetStringFormatTabStops(format, -10.0, 1, tabstops);
|
||||
expect(NotImplemented, stat);
|
||||
|
||||
firsttab = -1.0;
|
||||
tabs[0] = tabs[1] = tabs[2] = -1.0;
|
||||
stat = GdipGetStringFormatTabStops(format, 0, &firsttab, tabs);
|
||||
expect(Ok, stat);
|
||||
expectf(-1.0, tabs[0]);
|
||||
expectf(-1.0, tabs[1]);
|
||||
expectf(-1.0, tabs[2]);
|
||||
expectf(0.0, firsttab);
|
||||
|
||||
stat = GdipSetStringFormatTabStops(format, +0.0, 3, tabstops);
|
||||
expect(Ok, stat);
|
||||
count = 0;
|
||||
stat = GdipGetStringFormatTabStopCount(format, &count);
|
||||
expect(Ok, stat);
|
||||
expect(3, count);
|
||||
|
||||
firsttab = -1.0;
|
||||
tabs[0] = tabs[1] = tabs[2] = -1.0;
|
||||
stat = GdipGetStringFormatTabStops(format, 3, &firsttab, tabs);
|
||||
expect(Ok, stat);
|
||||
expectf(0.0, tabs[0]);
|
||||
expectf(10.0, tabs[1]);
|
||||
expectf(2.0, tabs[2]);
|
||||
expectf(0.0, firsttab);
|
||||
|
||||
stat = GdipSetStringFormatTabStops(format, 10.0, 3, tabstops);
|
||||
expect(Ok, stat);
|
||||
firsttab = -1.0;
|
||||
tabs[0] = tabs[1] = tabs[2] = -1.0;
|
||||
stat = GdipGetStringFormatTabStops(format, 0, &firsttab, tabs);
|
||||
expect(Ok, stat);
|
||||
expectf(-1.0, tabs[0]);
|
||||
expectf(-1.0, tabs[1]);
|
||||
expectf(-1.0, tabs[2]);
|
||||
expectf(10.0, firsttab);
|
||||
|
||||
/* zero tabcount, after valid setting to 3 */
|
||||
stat = GdipSetStringFormatTabStops(format, 0.0, 0, tabstops);
|
||||
expect(Ok, stat);
|
||||
count = 0;
|
||||
stat = GdipGetStringFormatTabStopCount(format, &count);
|
||||
expect(Ok, stat);
|
||||
expect(3, count);
|
||||
|
||||
stat = GdipDeleteStringFormat(format);
|
||||
expect(Ok, stat);
|
||||
}
|
||||
|
||||
static void test_getgenericdefault(void)
|
||||
{
|
||||
GpStringFormat *format, *format2;
|
||||
GpStatus stat;
|
||||
|
||||
INT flags;
|
||||
INT n;
|
||||
StringAlignment align, line_align;
|
||||
StringTrimming trimming;
|
||||
StringDigitSubstitute digitsub;
|
||||
LANGID digitlang;
|
||||
INT tabcount;
|
||||
|
||||
/* NULL arg */
|
||||
stat = GdipStringFormatGetGenericDefault(NULL);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipStringFormatGetGenericDefault(&format);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipStringFormatGetGenericDefault(&format2);
|
||||
expect(Ok, stat);
|
||||
ok(format == format2, "expected same format object\n");
|
||||
stat = GdipDeleteStringFormat(format2);
|
||||
expect(Ok, stat);
|
||||
|
||||
GdipGetStringFormatFlags(format, &flags);
|
||||
GdipGetStringFormatAlign(format, &align);
|
||||
GdipGetStringFormatLineAlign(format, &line_align);
|
||||
GdipGetStringFormatHotkeyPrefix(format, &n);
|
||||
GdipGetStringFormatTrimming(format, &trimming);
|
||||
GdipGetStringFormatDigitSubstitution(format, &digitlang, &digitsub);
|
||||
GdipGetStringFormatTabStopCount(format, &tabcount);
|
||||
|
||||
expect(0, flags);
|
||||
expect(HotkeyPrefixNone, n);
|
||||
expect(StringAlignmentNear, align);
|
||||
expect(StringAlignmentNear, line_align);
|
||||
expect(StringTrimmingCharacter, trimming);
|
||||
expect(StringDigitSubstituteUser, digitsub);
|
||||
expect(LANG_NEUTRAL, digitlang);
|
||||
expect(0, tabcount);
|
||||
|
||||
/* Change default format parameters, release, get format object again. */
|
||||
stat = GdipSetStringFormatFlags(format, StringFormatFlagsNoWrap);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipGetStringFormatFlags(format, &flags);
|
||||
expect(Ok, stat);
|
||||
expect(StringFormatFlagsNoWrap, flags);
|
||||
|
||||
stat = GdipDeleteStringFormat(format);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipStringFormatGetGenericDefault(&format);
|
||||
expect(Ok, stat);
|
||||
|
||||
stat = GdipGetStringFormatFlags(format, &flags);
|
||||
expect(Ok, stat);
|
||||
expect(StringFormatFlagsNoWrap, flags);
|
||||
|
||||
stat = GdipDeleteStringFormat(format);
|
||||
expect(Ok, stat);
|
||||
}
|
||||
|
||||
static void test_stringformatflags(void)
|
||||
{
|
||||
GpStringFormat *format;
|
||||
GpStatus stat;
|
||||
|
||||
INT flags;
|
||||
|
||||
stat = GdipCreateStringFormat(0, LANG_NEUTRAL, &format);
|
||||
expect(Ok, stat);
|
||||
|
||||
/* NULL args */
|
||||
stat = GdipSetStringFormatFlags(NULL, 0);
|
||||
expect(InvalidParameter, stat);
|
||||
|
||||
stat = GdipSetStringFormatFlags(format, 0);
|
||||
expect(Ok, stat);
|
||||
stat = GdipGetStringFormatFlags(format, &flags);
|
||||
expect(Ok, stat);
|
||||
expect(0, flags);
|
||||
|
||||
/* Check some valid flags */
|
||||
stat = GdipSetStringFormatFlags(format, StringFormatFlagsDirectionRightToLeft);
|
||||
expect(Ok, stat);
|
||||
stat = GdipGetStringFormatFlags(format, &flags);
|
||||
expect(Ok, stat);
|
||||
expect(StringFormatFlagsDirectionRightToLeft, flags);
|
||||
|
||||
stat = GdipSetStringFormatFlags(format, StringFormatFlagsNoFontFallback);
|
||||
expect(Ok, stat);
|
||||
stat = GdipGetStringFormatFlags(format, &flags);
|
||||
expect(Ok, stat);
|
||||
expect(StringFormatFlagsNoFontFallback, flags);
|
||||
|
||||
/* Check some flag combinations */
|
||||
stat = GdipSetStringFormatFlags(format, StringFormatFlagsDirectionVertical
|
||||
| StringFormatFlagsNoFitBlackBox);
|
||||
expect(Ok, stat);
|
||||
stat = GdipGetStringFormatFlags(format, &flags);
|
||||
expect(Ok, stat);
|
||||
expect((StringFormatFlagsDirectionVertical
|
||||
| StringFormatFlagsNoFitBlackBox), flags);
|
||||
|
||||
stat = GdipSetStringFormatFlags(format, StringFormatFlagsDisplayFormatControl
|
||||
| StringFormatFlagsMeasureTrailingSpaces);
|
||||
expect(Ok, stat);
|
||||
stat = GdipGetStringFormatFlags(format, &flags);
|
||||
expect(Ok, stat);
|
||||
expect((StringFormatFlagsDisplayFormatControl
|
||||
| StringFormatFlagsMeasureTrailingSpaces), flags);
|
||||
|
||||
/* Check invalid flags */
|
||||
stat = GdipSetStringFormatFlags(format, 0xdeadbeef);
|
||||
expect(Ok, stat);
|
||||
stat = GdipGetStringFormatFlags(format, &flags);
|
||||
expect(Ok, stat);
|
||||
expect(0xdeadbeef, flags);
|
||||
|
||||
stat = GdipDeleteStringFormat(format);
|
||||
expect(Ok, stat);
|
||||
}
|
||||
|
||||
START_TEST(stringformat)
|
||||
{
|
||||
struct GdiplusStartupInput gdiplusStartupInput;
|
||||
ULONG_PTR gdiplusToken;
|
||||
HMODULE hmsvcrt;
|
||||
int (CDECL * _controlfp_s)(unsigned int *cur, unsigned int newval, unsigned int mask);
|
||||
|
||||
/* Enable all FP exceptions except _EM_INEXACT, which gdi32 can trigger */
|
||||
hmsvcrt = LoadLibraryA("msvcrt");
|
||||
_controlfp_s = (void*)GetProcAddress(hmsvcrt, "_controlfp_s");
|
||||
if (_controlfp_s) _controlfp_s(0, 0, 0x0008001e);
|
||||
|
||||
gdiplusStartupInput.GdiplusVersion = 1;
|
||||
gdiplusStartupInput.DebugEventCallback = NULL;
|
||||
gdiplusStartupInput.SuppressBackgroundThread = 0;
|
||||
gdiplusStartupInput.SuppressExternalCodecs = 0;
|
||||
|
||||
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
|
||||
|
||||
test_constructor();
|
||||
test_characterrange();
|
||||
test_digitsubstitution();
|
||||
test_getgenerictypographic();
|
||||
test_tabstops();
|
||||
test_getgenericdefault();
|
||||
test_stringformatflags();
|
||||
|
||||
GdiplusShutdown(gdiplusToken);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue