Merge commit '0a600b1df45558c16812995aa2c03f0b5f636afb' into main

This commit is contained in:
Sam Lantinga 2022-07-05 21:41:13 -07:00
commit c218b55c67
6 changed files with 47 additions and 70 deletions

View File

@ -206,6 +206,7 @@
<ClCompile Include="..\..\..\test\testautomation_audio.c" />
<ClCompile Include="..\..\..\test\testautomation_clipboard.c" />
<ClCompile Include="..\..\..\test\testautomation_events.c" />
<ClCompile Include="..\..\..\test\testautomation_guid.c" />
<ClCompile Include="..\..\..\test\testautomation_hints.c" />
<ClCompile Include="..\..\..\test\testautomation_keyboard.c" />
<ClCompile Include="..\..\..\test\testautomation_main.c" />

View File

@ -96,7 +96,6 @@ add_executable(testgesture testgesture.c)
add_executable(testgl2 testgl2.c)
add_executable(testgles testgles.c)
add_executable(testgles2 testgles2.c)
add_executable(testguid testguid.c)
add_executable(testhaptic testhaptic.c)
add_executable(testhotplug testhotplug.c)
add_executable(testrumble testrumble.c)
@ -178,7 +177,6 @@ SET(ALL_TESTS
testgl2
testgles
testgles2
testguid
testhaptic
testhittesting
testhotplug
@ -227,7 +225,6 @@ set(NONINTERACTIVE
testatomic
testerror
testfilesystem
testguid
testlocale
testplatform
testpower
@ -337,7 +334,6 @@ if(PSP)
testfilesystem
testgeometry
testgl2
testguid
testhittesting
testiconv
testintersections

View File

@ -40,7 +40,6 @@ TARGETS = \
testgamecontroller$(EXE) \
testgeometry$(EXE) \
testgesture$(EXE) \
testguid$(EXE) \
testhaptic$(EXE) \
testhittesting$(EXE) \
testhotplug$(EXE) \
@ -138,6 +137,7 @@ testautomation$(EXE): $(srcdir)/testautomation.c \
$(srcdir)/testautomation_audio.c \
$(srcdir)/testautomation_clipboard.c \
$(srcdir)/testautomation_events.c \
$(srcdir)/testautomation_guid.c \
$(srcdir)/testautomation_keyboard.c \
$(srcdir)/testautomation_main.c \
$(srcdir)/testautomation_mouse.c \
@ -216,9 +216,6 @@ testgles2$(EXE): $(srcdir)/testgles2.c
testgles2_sdf$(EXE): $(srcdir)/testgles2_sdf.c $(srcdir)/testutils.c
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
testguid$(EXE): $(srcdir)/testguid.c
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
testhaptic$(EXE): $(srcdir)/testhaptic.c
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

View File

@ -1,42 +1,13 @@
/*
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely.
*/
/**
* Automated tests for GUID processing
* GUID test suite
*/
#include <stdio.h>
#include "SDL.h"
#include "SDL_test.h"
/* Helpers */
/* ================= Test Case Implementation ================== */
static int _error_count = 0;
static int
_require_eq(Uint64 expected, Uint64 actual, int line, char *msg)
{
if (expected != actual) {
_error_count += 1;
SDL_LogError(SDL_LOG_CATEGORY_ERROR, "[%s, L%d] %s: Actual %ld (0x%lx) != expected %ld (0x%lx)",
__FILE__, line, msg, actual, actual, expected, expected);
return 0;
}
return 1;
}
#define ASSERT_EQ(MSG, EXPECTED, ACTUAL) _require_eq((EXPECTED), (ACTUAL), __LINE__, (MSG))
/* Helpers */
/* Helper functions */
#define NUM_TEST_GUIDS 5
@ -75,18 +46,20 @@ upper_lower_to_bytestring(Uint8* out, Uint64 upper, Uint64 lower)
}
}
/* ================= Test Case Implementation ================== */
/* Test case functions */
/**
* @brief Check String-to-GUID conversion
*
* @sa SDL_GUIDFromString
*/
static void
TestGuidFromString(void)
static int
TestGuidFromString(void *arg)
{
int i;
SDLTest_AssertPass("Call to SDL_GUIDFromString");
for (i = 0; i < NUM_TEST_GUIDS; ++i) {
Uint8 expected[16];
SDL_GUID guid;
@ -95,10 +68,10 @@ TestGuidFromString(void)
test_guids[i].upper, test_guids[i].lower);
guid = SDL_GUIDFromString(test_guids[i].str);
if (!ASSERT_EQ("GUID from string", 0, SDL_memcmp(expected, guid.data, 16))) {
SDL_Log(" GUID was: '%s'", test_guids[i].str);
}
SDLTest_AssertCheck(SDL_memcmp(expected, guid.data, 16) == 0, "GUID from string, GUID was: '%s'", test_guids[i].str);
}
return TEST_COMPLETED;
}
/**
@ -106,11 +79,12 @@ TestGuidFromString(void)
*
* @sa SDL_GUIDToString
*/
static void
TestGuidToString(void)
static int
TestGuidToString(void *arg)
{
int i;
SDLTest_AssertPass("Call to SDL_GUIDToString");
for (i = 0; i < NUM_TEST_GUIDS; ++i) {
const int guid_str_offset = 4;
char guid_str_buf[64];
@ -134,36 +108,43 @@ TestGuidToString(void)
/* Check bytes before guid_str_buf */
expected_prefix = fill_char | (fill_char << 8) | (fill_char << 16) | (fill_char << 24);
SDL_memcpy(&actual_prefix, guid_str_buf, 4);
if (!ASSERT_EQ("String buffer memory before output untouched: ", expected_prefix, actual_prefix)) {
SDL_Log(" at size=%d", size);
}
SDLTest_AssertCheck(expected_prefix == actual_prefix, "String buffer memory before output untouched, expected: %i, got: %i, at size=%d", expected_prefix, actual_prefix, size);
/* Check that we did not overwrite too much */
written_size = 0;
while ((guid_str[written_size] & 0xff) != fill_char && written_size < 256) {
++written_size;
}
if (!ASSERT_EQ("Output length is within expected bounds", 1, written_size <= size)) {
SDL_Log(" with length %d: wrote %d of %d permitted bytes",
size, written_size, size);
}
SDLTest_AssertCheck(written_size <= size, "Output length is within expected bounds, with length %d: wrote %d of %d permitted bytes", size, written_size, size);
if (size >= 33) {
if (!ASSERT_EQ("GUID string equality", 0, SDL_strcmp(guid_str, test_guids[i].str))) {
SDL_Log(" from string: %s", test_guids[i].str);
}
SDLTest_AssertCheck(SDL_strcmp(guid_str, test_guids[i].str) == 0, "GUID string equality, from string: %s", test_guids[i].str);
}
}
}
return TEST_COMPLETED;
}
int
main(int argc, char *argv[])
{
/* Enable standard application logging */
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
/* ================= Test References ================== */
TestGuidFromString();
TestGuidToString();
/* GUID routine test cases */
static const SDLTest_TestCaseReference guidTest1 =
{ (SDLTest_TestCaseFp)TestGuidFromString, "TestGuidFromString", "Call to SDL_GUIDFromString", TEST_ENABLED };
return _error_count > 0;
}
static const SDLTest_TestCaseReference guidTest2 =
{ (SDLTest_TestCaseFp)TestGuidToString, "TestGuidToString", "Call to SDL_GUIDToString", TEST_ENABLED };
/* Sequence of GUID routine test cases */
static const SDLTest_TestCaseReference *guidTests[] = {
&guidTest1,
&guidTest2,
NULL
};
/* GUID routine test suite (global) */
SDLTest_TestSuiteReference guidTestSuite = {
"GUID",
NULL,
guidTests,
NULL
};

View File

@ -12,6 +12,7 @@
extern SDLTest_TestSuiteReference audioTestSuite;
extern SDLTest_TestSuiteReference clipboardTestSuite;
extern SDLTest_TestSuiteReference eventsTestSuite;
extern SDLTest_TestSuiteReference guidTestSuite;
extern SDLTest_TestSuiteReference keyboardTestSuite;
extern SDLTest_TestSuiteReference mainTestSuite;
extern SDLTest_TestSuiteReference mouseTestSuite;
@ -34,6 +35,7 @@ SDLTest_TestSuiteReference *testSuites[] = {
&audioTestSuite,
&clipboardTestSuite,
&eventsTestSuite,
&guidTestSuite,
&keyboardTestSuite,
&mainTestSuite,
&mouseTestSuite,

View File

@ -11,7 +11,7 @@ TARGETS = testatomic.exe testdisplayinfo.exe testbounds.exe testdraw2.exe &
testdrawchessboard.exe testdropfile.exe testerror.exe testfile.exe &
testfilesystem.exe testgamecontroller.exe testgeometry.exe testgesture.exe &
testhittesting.exe testhotplug.exe testiconv.exe testime.exe testlocale.exe &
testguid.exe testintersections.exe testjoystick.exe testkeys.exe testloadso.exe &
testintersections.exe testjoystick.exe testkeys.exe testloadso.exe &
testlock.exe testmessage.exe testoverlay2.exe testplatform.exe &
testpower.exe testsensor.exe testrelative.exe testrendercopyex.exe &
testrendertarget.exe testrumble.exe testscale.exe testsem.exe &
@ -58,7 +58,7 @@ TASRCS = testautomation.c testautomation_audio.c testautomation_clipboard.c &
testautomation_sdltest.c testautomation_stdlib.c &
testautomation_surface.c testautomation_syswm.c &
testautomation_timer.c testautomation_video.c &
testautomation_math.c
testautomation_math.c testautomation_guid.c
OBJS = $(TARGETS:.exe=.obj)
COBJS = $(CSRCS:.c=.obj)