#! /bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src

# Test C++ support: C++11 string literals.

: ${XGETTEXT=xgettext}

cat <<\EOF > err0.cc
gettext ("aaa(
bbb
)ccc");
EOF

(LANGUAGE= LC_ALL=C ${XGETTEXT} --no-location --no-wrap -o - err0.cc 2>&1; exit) | grep 'unterminated string literal' || Exit 1

cat <<\EOF > err1.cc
gettext (R"aaa(
bbb
)ccc");
EOF

(LANGUAGE= LC_ALL=C ${XGETTEXT} --no-location --no-wrap -o - err1.cc 2>&1; exit) | grep 'unterminated raw string literal' || Exit 1

cat <<\EOF > xg-c-c++-1.cc
#define X ""
gettext (X"This is a concatenation of a macro and a string");

#define RR ""
gettext (RR"This (is NOT a raw string");

#define u8RR ""
gettext (u8RR"This (is NOT a raw string");

#define uRR ""
gettext (uRR"This (is NOT a raw string");

#define URR ""
gettext (URR"This (is NOT a raw string");

#define LRR ""
gettext (LRR"This (is NOT a raw string");

#define uX ""
gettext (uX"This (is NOT a raw string");

gettext (u8"This is a UTF-8 string");

wgettext (L"This is a wide string");

c16gettext (u"This is a 16-bit wide char string");

c32gettext (U"This is a 32-bit wide char string");

u88"This is not a UTF-8 string";

u"This is a UTF-16 string";

U"This is a UTF-32 string";

L"This is a wide string";

gettext (R"aaa(
This is a raw string
)aaa");

gettext (u8R"aaa(
This is a raw UTF-8 string
)aaa");

uR"aaa(
This is a UTF-16 raw string
)aaa";

LR"aaa(
This is a wide raw string
)aaa";

// 'LR' prefixed raw string should be skipped.
LR"(

baz

gettext(\"abc\");
)";
EOF

${XGETTEXT} --add-comments --no-location --no-wrap \
            -kgettext -kwgettext -kc16gettext -kc32gettext \
            -o xg-c-c++-1.tmp xg-c-c++-1.cc || Exit 1
func_filter_POT_Creation_Date xg-c-c++-1.tmp xg-c-c++-1.po

cat <<\EOF > xg-c-c++-1.ok
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

msgid "This is a concatenation of a macro and a string"
msgstr ""

msgid "This (is NOT a raw string"
msgstr ""

msgid "This is a UTF-8 string"
msgstr ""

msgid "This is a wide string"
msgstr ""

msgid "This is a 16-bit wide char string"
msgstr ""

msgid "This is a 32-bit wide char string"
msgstr ""

msgid ""
"\n"
"This is a raw string\n"
msgstr ""

msgid ""
"\n"
"This is a raw UTF-8 string\n"
msgstr ""
EOF

: ${DIFF=diff}
${DIFF} xg-c-c++-1.ok xg-c-c++-1.po || Exit 1

cat <<\EOF > xg-c-c++-1.c
gettext (R"aaa(This is NOT a raw string");

gettext (u8R"aaa(This is NOT a raw string");

uR"aaa(This is NOT a raw string";
EOF

${XGETTEXT} --add-comments --no-location --no-wrap \
            -o xg-c-c++-1c.tmp xg-c-c++-1.c || Exit 1
func_filter_POT_Creation_Date xg-c-c++-1c.tmp xg-c-c++-1c.po

cat <<\EOF > xg-c-c++-1c.ok
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

msgid "aaa(This is NOT a raw string"
msgstr ""
EOF

${DIFF} xg-c-c++-1c.ok xg-c-c++-1c.po || Exit 1
