/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* * This is a simple test of the PR_fprintf() function for size_t formats. */ #include "prprf.h" #include #include #include #include int main(int argc, char **argv) { char buffer[128]; size_t unsigned_small = 266; #ifdef XP_UNIX ssize_t signed_small_p = 943; ssize_t signed_small_n = -1; #endif size_t unsigned_max = SIZE_MAX; size_t unsigned_min = 0; #ifdef XP_UNIX ssize_t signed_max = SSIZE_MAX; #endif printf("Test: unsigned small '%%zu' : "); PR_snprintf(buffer, sizeof(buffer), "%zu", unsigned_small); if (strncmp(buffer, "266", sizeof(buffer)) != 0) { printf("Failed, got '%s'\n", buffer); return -1; } printf("OK\n"); #ifdef XP_UNIX printf("Test: signed small positive '%%zd' : "); PR_snprintf(buffer, sizeof(buffer), "%zd", signed_small_p); if (strncmp(buffer, "943", sizeof(buffer)) != 0) { printf("Failed, got '%s'\n", buffer); return -1; } printf("OK\n"); printf("Test: signed small negative '%%zd' : "); PR_snprintf(buffer, sizeof(buffer), "%zd", signed_small_n); if (strncmp(buffer, "-1", sizeof(buffer)) != 0) { printf("Failed, got '%s'\n", buffer); return -1; } printf("OK\n"); #endif printf("Test: 0 '%%zu' : "); PR_snprintf(buffer, sizeof(buffer), "%zu", unsigned_min); if (strncmp(buffer, "0", sizeof(buffer)) != 0) { printf("Failed, got '%s'\n", buffer); return -1; } printf("OK\n"); printf("Test: SIZE_MAX '%%zx' : "); PR_snprintf(buffer, sizeof(buffer), "%zx", unsigned_max); if (strspn(buffer, "f") != sizeof(size_t) * 2) { printf("Failed, got '%s'\n", buffer); return -1; } printf("OK\n"); #ifdef XP_UNIX printf("Test: SSIZE_MAX '%%zx' : "); PR_snprintf(buffer, sizeof(buffer), "%zx", signed_max); if (*buffer != '7' || strspn(buffer + 1, "f") != sizeof(ssize_t) * 2 - 1) { printf("Failed, got '%s'\n", buffer); return -1; } printf("OK\n"); #endif return 0; }