Files
HomeKitADK/Tests/HAPBase+StringTests.c
2019-12-18 05:20:05 -08:00

156 lines
5.5 KiB
C

// Copyright (c) 2015-2019 The HomeKit ADK Contributors
//
// Licensed under the Apache License, Version 2.0 (the “License”);
// you may not use this file except in compliance with the License.
// See [CONTRIBUTORS.md] for the list of HomeKit ADK project authors.
#include "HAPPlatform.h"
#define TEST(expectedString, format, ...) \
do { \
HAPError err; \
\
HAPLogInfo(&kHAPLog_Default, "Testing %s", format); \
char actualString[sizeof expectedString] = { 0 }; \
err = HAPStringWithFormat(actualString, sizeof actualString, format, ##__VA_ARGS__); \
HAPAssert(!err); \
HAPAssert(HAPStringGetNumBytes(actualString) == sizeof expectedString - 1); \
HAPAssert(HAPStringAreEqual(actualString, expectedString)); \
} while (0)
static const char* null() {
return NULL;
}
int main() {
TEST("value: [77%] blabla", "value: [%d%%] blabla", 77);
TEST("12:34:56:78:9A:BC", "%02X:%02X:%02X:%02X:%02X:%02X", 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC);
TEST("77", "%d", 77);
TEST("-77", "%d", -77);
TEST(" 77", "%4d", 77);
TEST(" -77", "%4d", -77);
TEST("77", "%02d", 77);
TEST("-77", "%02d", -77);
TEST("0077", "%04d", 77);
TEST("-077", "%04d", -77);
TEST(" +77", "%+4d", 77);
TEST(" -77", "%+4d", -77);
TEST("+77", "%+02d", 77);
TEST("-77", "%+02d", -77);
TEST("+077", "%+04d", 77);
TEST("-077", "%+04d", -77);
TEST(" 77", "% 4d", 77);
TEST(" -77", "% 4d", -77);
TEST(" 77", "% 02d", 77);
TEST("-77", "% 02d", -77);
TEST(" 077", "% 04d", 77);
TEST("-077", "% 04d", -77);
TEST("77", "%ld", 77l);
TEST("-77", "%ld", -77l);
TEST(" 77", "%4ld", 77l);
TEST(" -77", "%4ld", -77l);
TEST("77", "%02ld", 77l);
TEST("-77", "%02ld", -77l);
TEST("0077", "%04ld", 77l);
TEST("-077", "%04ld", -77l);
TEST(" +77", "%+4ld", 77l);
TEST(" -77", "%+4ld", -77l);
TEST("+77", "%+02ld", 77l);
TEST("-77", "%+02ld", -77l);
TEST("+077", "%+04ld", 77l);
TEST("-077", "%+04ld", -77l);
TEST(" 77", "% 4ld", 77l);
TEST(" -77", "% 4ld", -77l);
TEST(" 77", "% 02ld", 77l);
TEST("-77", "% 02ld", -77l);
TEST(" 077", "% 04ld", 77l);
TEST("-077", "% 04ld", -77l);
TEST("7777777777777777", "%lld", 7777777777777777ll);
TEST("-7777777777777777", "%lld", -7777777777777777ll);
TEST(" 7777777777777777", "%20lld", 7777777777777777ll);
TEST(" -7777777777777777", "%20lld", -7777777777777777ll);
TEST("7777777777777777", "%016lld", 7777777777777777ll);
TEST("-7777777777777777", "%016lld", -7777777777777777ll);
TEST("00007777777777777777", "%020lld", 7777777777777777ll);
TEST("-0007777777777777777", "%020lld", -7777777777777777ll);
TEST(" +7777777777777777", "%+20lld", 7777777777777777ll);
TEST(" -7777777777777777", "%+20lld", -7777777777777777ll);
TEST("+7777777777777777", "%+016lld", 7777777777777777ll);
TEST("-7777777777777777", "%+016lld", -7777777777777777ll);
TEST("+0007777777777777777", "%+020lld", 7777777777777777ll);
TEST("-0007777777777777777", "%+020lld", -7777777777777777ll);
TEST(" 7777777777777777", "% 20lld", 7777777777777777ll);
TEST(" -7777777777777777", "% 20lld", -7777777777777777ll);
TEST(" 7777777777777777", "% 016lld", 7777777777777777ll);
TEST("-7777777777777777", "% 016lld", -7777777777777777ll);
TEST(" 0007777777777777777", "% 020lld", 7777777777777777ll);
TEST("-0007777777777777777", "% 020lld", -7777777777777777ll);
TEST("77", "%u", 77);
TEST(" 77", "%4u", 77);
TEST("77", "%02u", 77);
TEST("0077", "%04u", 77);
TEST("77", "%lu", 77l);
TEST(" 77", "%4lu", 77l);
TEST("77", "%02lu", 77l);
TEST("0077", "%04lu", 77l);
TEST("17777777777777777777", "%llu", 17777777777777777777llu);
TEST(" 17777777777777777777", "%22llu", 17777777777777777777llu);
TEST("0017777777777777777777", "%022llu", 17777777777777777777llu);
TEST("4d", "%x", 77);
TEST("4d", "%02x", 77);
TEST(" 4d", "%4x", 77);
TEST("004d", "%04x", 77);
TEST("4D", "%X", 77);
TEST("4D", "%02X", 77);
TEST(" 4D", "%4X", 77);
TEST("004D", "%04X", 77);
TEST("4d", "%lx", 77l);
TEST("4d", "%02lx", 77l);
TEST(" 4d", "%4lx", 77l);
TEST("004d", "%04lx", 77l);
TEST("4D", "%lX", 77l);
TEST("4D", "%02lX", 77l);
TEST(" 4D", "%4lX", 77l);
TEST("004D", "%04lX", 77l);
TEST("1234567890abcdef", "%llx", 0x1234567890ABCDEFll);
TEST(" 1234567890abcdef", "%20llx", 0x1234567890ABCDEFll);
TEST("00001234567890abcdef", "%020llx", 0x1234567890ABCDEFll);
TEST("1234567890ABCDEF", "%llX", 0x1234567890ABCDEFll);
TEST(" 1234567890ABCDEF", "%20llX", 0x1234567890ABCDEFll);
TEST("00001234567890ABCDEF", "%020llX", 0x1234567890ABCDEFll);
TEST(" 123456789", "%12zu", (size_t) 123456789);
TEST(" 0x12345678", "%12p", (void*) 0x12345678);
TEST(" 0xbeeffeed", "%12p", (void*) 0xBeefFeed);
TEST("$", "%c", '$');
TEST(" $", "%3c", '$');
do {
HAPError err;
HAPLogInfo(&kHAPLog_Default, "Testing >%%c<");
char actualString[4] = { 0 };
err = HAPStringWithFormat(actualString, sizeof actualString, ">%c<", 0);
HAPAssert(!err);
HAPAssert(actualString[0] == '>');
HAPAssert(actualString[1] == 0);
HAPAssert(actualString[2] == '<');
HAPAssert(actualString[3] == 0);
} while (0);
TEST("(null)", "%s", null());
TEST("abcdefg", "%s", "abcdefg");
TEST(" abcdefg", "%10s", "abcdefg");
return 0;
}