From 9f767770ac014211a9d684987fc44b188817ef7d Mon Sep 17 00:00:00 2001 From: acqn Date: Tue, 26 Jul 2022 15:19:48 +0800 Subject: [PATCH] Added test case for #pragma charmap. --- test/val/bug1373.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 test/val/bug1373.c diff --git a/test/val/bug1373.c b/test/val/bug1373.c new file mode 100644 index 000000000..f13f375c1 --- /dev/null +++ b/test/val/bug1373.c @@ -0,0 +1,54 @@ + +/* #1373 - #pragma charmap works in unexpected ways */ + +#include +#include + +char res0[10]; +char res1[10]; +char res2[10]; +char res3[10]; +char res4[10]; + +int err = 0; + +#pragma charmap(0x61, 0x44) +#define STRING_A "abABa" + +extern char mappedA[10]; + +#pragma charmap(0x61, 0x61) +char notmappedA[10] = "abABa"; + +void test(void); + +#pragma charmap(0x61, 0x42) +int main(void) +{ + char mappedB[10] = STRING_A; + sprintf(res0, "abABa"); /* expected: BbABB */ + +#pragma charmap(0x61, 0x61) + sprintf(res1, mappedA); /* expected: CbABC */ + sprintf(res2, STRING_A); /* expected: abABa */ + sprintf(res3, mappedB); /* expected: BbABB */ + +#pragma charmap(0x61, 0x43) + sprintf(res4, notmappedA); /* expected: abABa */ + + test(); + + return err; +} + +char mappedA[10] = "abABa"; + +#pragma charmap(0x61, 0x61) +void test(void) +{ + puts(res0); if (strcmp(res0, "BbABB") != 0) { puts("expected: BbABB"); err++; } + puts(res1); if (strcmp(res1, "CbABC") != 0) { puts("expected: CbABC"); err++; } + puts(res2); if (strcmp(res2, "abABa") != 0) { puts("expected: abABa"); err++; } + puts(res3); if (strcmp(res3, "BbABB") != 0) { puts("expected: BbABB"); err++; } + puts(res4); if (strcmp(res4, "abABa") != 0) { puts("expected: abABa"); err++; } +}