mirror of
				https://github.com/Ryujinx/SDL.git
				synced 2025-11-04 15:14:56 +00:00 
			
		
		
		
	I updated .clang-format and ran clang-format 14 over the src and test directories to standardize the code base. In general I let clang-format have it's way, and added markup to prevent formatting of code that would break or be completely unreadable if formatted. The script I ran for the src directory is added as build-scripts/clang-format-src.sh This fixes: #6592 #6593 #6594 (cherry picked from commit 5750bcb174300011b91d1de20edb288fcca70f8c)
		
			
				
	
	
		
			158 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/**
 | 
						|
 * GUID test suite
 | 
						|
 */
 | 
						|
 | 
						|
#include "SDL.h"
 | 
						|
#include "SDL_test.h"
 | 
						|
 | 
						|
/* ================= Test Case Implementation ================== */
 | 
						|
 | 
						|
/* Helper functions */
 | 
						|
 | 
						|
#define NUM_TEST_GUIDS 5
 | 
						|
 | 
						|
static struct
 | 
						|
{
 | 
						|
    char *str;
 | 
						|
    Uint64 upper, lower;
 | 
						|
} test_guids[NUM_TEST_GUIDS] = {
 | 
						|
    { "0000000000000000"
 | 
						|
      "ffffffffffffffff",
 | 
						|
      0x0000000000000000, 0xfffffffffffffffflu },
 | 
						|
    { "0011223344556677"
 | 
						|
      "8091a2b3c4d5e6f0",
 | 
						|
      0x0011223344556677lu, 0x8091a2b3c4d5e6f0lu },
 | 
						|
    { "a011223344556677"
 | 
						|
      "8091a2b3c4d5e6f0",
 | 
						|
      0xa011223344556677lu, 0x8091a2b3c4d5e6f0lu },
 | 
						|
    { "a011223344556677"
 | 
						|
      "8091a2b3c4d5e6f1",
 | 
						|
      0xa011223344556677lu, 0x8091a2b3c4d5e6f1lu },
 | 
						|
    { "a011223344556677"
 | 
						|
      "8191a2b3c4d5e6f0",
 | 
						|
      0xa011223344556677lu, 0x8191a2b3c4d5e6f0lu },
 | 
						|
};
 | 
						|
 | 
						|
static void
 | 
						|
upper_lower_to_bytestring(Uint8 *out, Uint64 upper, Uint64 lower)
 | 
						|
{
 | 
						|
    Uint64 values[2];
 | 
						|
    int i, k;
 | 
						|
 | 
						|
    values[0] = upper;
 | 
						|
    values[1] = lower;
 | 
						|
 | 
						|
    for (i = 0; i < 2; ++i) {
 | 
						|
        Uint64 v = values[i];
 | 
						|
 | 
						|
        for (k = 0; k < 8; ++k) {
 | 
						|
            *out++ = v >> 56;
 | 
						|
            v <<= 8;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
/* Test case functions */
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Check String-to-GUID conversion
 | 
						|
 *
 | 
						|
 * @sa SDL_GUIDFromString
 | 
						|
 */
 | 
						|
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;
 | 
						|
 | 
						|
        upper_lower_to_bytestring(expected,
 | 
						|
                                  test_guids[i].upper, test_guids[i].lower);
 | 
						|
 | 
						|
        guid = SDL_GUIDFromString(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;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Check GUID-to-String conversion
 | 
						|
 *
 | 
						|
 * @sa SDL_GUIDToString
 | 
						|
 */
 | 
						|
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];
 | 
						|
        char *guid_str = guid_str_buf + guid_str_offset;
 | 
						|
        SDL_GUID guid;
 | 
						|
        int size;
 | 
						|
 | 
						|
        upper_lower_to_bytestring(guid.data,
 | 
						|
                                  test_guids[i].upper, test_guids[i].lower);
 | 
						|
 | 
						|
        /* Serialise to limited-length buffers */
 | 
						|
        for (size = 0; size <= 36; ++size) {
 | 
						|
            const Uint8 fill_char = size + 0xa0;
 | 
						|
            Uint32 expected_prefix;
 | 
						|
            Uint32 actual_prefix;
 | 
						|
            int written_size;
 | 
						|
 | 
						|
            SDL_memset(guid_str_buf, fill_char, sizeof(guid_str_buf));
 | 
						|
            SDL_GUIDToString(guid, guid_str, size);
 | 
						|
 | 
						|
            /* 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);
 | 
						|
            SDLTest_AssertCheck(expected_prefix == actual_prefix, "String buffer memory before output untouched, expected: %" SDL_PRIu32 ", got: %" SDL_PRIu32 ", 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;
 | 
						|
            }
 | 
						|
            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) {
 | 
						|
                SDLTest_AssertCheck(SDL_strcmp(guid_str, test_guids[i].str) == 0, "GUID string equality, from string: %s", test_guids[i].str);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    return TEST_COMPLETED;
 | 
						|
}
 | 
						|
 | 
						|
/* ================= Test References ================== */
 | 
						|
 | 
						|
/* GUID routine test cases */
 | 
						|
static const SDLTest_TestCaseReference guidTest1 = {
 | 
						|
    (SDLTest_TestCaseFp)TestGuidFromString, "TestGuidFromString", "Call to SDL_GUIDFromString", TEST_ENABLED
 | 
						|
};
 | 
						|
 | 
						|
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
 | 
						|
};
 |