156 lines
5.5 KiB
C
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;
|
|
}
|