| #!/bin/sh |
| . "${srcdir=.}/init.sh"; path_prepend_ . ../src |
| |
| # More tests for C# support: string syntax |
| |
| LC_ALL=C tr '%' '\015' <<\EOF > xg-cs-3.cs |
| class TestCase { |
| public static void Main (String[] args) { |
| // Test recognition of \u escapes. |
| GetString ("B\u00f6se B\u00fcbchen"); |
| // \u escapes with more than one u are invalid. |
| GetString ("Japanese: \uu65e5\uuu672c\u8A9e"); |
| GetString ("embedded\nnewline"); |
| // Spaces from end of comment are removed. %GetString("dummy"); |
| // Two backslashes (unlike in Java, where this is just one backslash). |
| GetString ("\u005c\u005c"); |
| // A 6-character string (unlike in Java, where this is just one backslash). |
| GetString ("\\u005c"); |
| // A single backslash. |
| GetString ("\\"); |
| // There is only one \u recognition pass. |
| GetString ("\u005cu005c"); |
| // Octal escape sequences are not recognized, except for \0. |
| GetString ("\134"); |
| // Escape sequences in strings. |
| GetString ("t -> \t, b -> \b, n -> \n, dquote -> \", squote -> \' ..."); |
| // Hex escapes are recognized. |
| GetString ("bel: \x07\n"); |
| GetString // Recognized despite comments |
| ( /* Even across multiline |
| comment! */ "this is a single " /* now comes the concatenation! */ + // after + |
| "long line"); |
| // Verbatim string literals are extracted. |
| GetString (@"verbatim 1"); |
| // In verbatim string literals, no escape sequences are recognized. |
| GetString (@"verbatim 2 \u005c \\ \t \b \n \'"); |
| // In verbatim string literals, only doubled delimiters are recognized. |
| GetString (@"verbatim 3 ""test"); |
| // Normal and verbatim string literals can be concatenated. |
| GetString ("left - \"quot" + @"ation"" - right"); |
| // Character literals are not extracted. |
| GetString ('x'); |
| // Invalid concatenations are not concatenated. |
| GetString ("fooba"+'r'); |
| // Verify that a comma inside braces is hidden. |
| MyGetString (new Object[] { "don't", "fool", "me" }, "this is the second argument"); |
| } |
| } |
| EOF |
| |
| : ${XGETTEXT=xgettext} |
| # delete POT-Creation-Date: line because the date depends on local time. |
| ${XGETTEXT} --output xg-cs-3.tmp --add-location -c -kMyGetString:2 xg-cs-3.cs 2>/dev/null || Exit 1 |
| sed -e '/\"POT-Creation-Date:.*/d' < xg-cs-3.tmp | LC_ALL=C tr -d '\r' > xg-cs-3.po || Exit 1 |
| |
| cat <<\EOF > xg-cs-3.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=UTF-8\n" |
| "Content-Transfer-Encoding: 8bit\n" |
| |
| #. Test recognition of \u escapes. |
| #: xg-cs-3.cs:4 |
| msgid "Böse Bübchen" |
| msgstr "" |
| |
| #. \u escapes with more than one u are invalid. |
| #: xg-cs-3.cs:6 |
| msgid "Japanese: \\uu65e5\\uuu672c語" |
| msgstr "" |
| |
| #: xg-cs-3.cs:7 |
| msgid "" |
| "embedded\n" |
| "newline" |
| msgstr "" |
| |
| #. Spaces from end of comment are removed. |
| #: xg-cs-3.cs:8 |
| msgid "dummy" |
| msgstr "" |
| |
| #. Two backslashes (unlike in Java, where this is just one backslash). |
| #: xg-cs-3.cs:10 |
| msgid "\\\\" |
| msgstr "" |
| |
| #. A 6-character string (unlike in Java, where this is just one backslash). |
| #. There is only one \u recognition pass. |
| #: xg-cs-3.cs:12 xg-cs-3.cs:16 |
| msgid "\\u005c" |
| msgstr "" |
| |
| #. A single backslash. |
| #: xg-cs-3.cs:14 |
| msgid "\\" |
| msgstr "" |
| |
| #. Octal escape sequences are not recognized, except for \0. |
| #: xg-cs-3.cs:18 |
| msgid "\\134" |
| msgstr "" |
| |
| #. Escape sequences in strings. |
| #: xg-cs-3.cs:20 |
| msgid "" |
| "t -> \t, b -> \b, n -> \n" |
| ", dquote -> \", squote -> ' ..." |
| msgstr "" |
| |
| #. Hex escapes are recognized. |
| #: xg-cs-3.cs:22 |
| msgid "bel: \a\n" |
| msgstr "" |
| |
| #. Recognized despite comments |
| #. Even across multiline |
| #. comment! |
| #: xg-cs-3.cs:25 |
| msgid "this is a single long line" |
| msgstr "" |
| |
| #. Verbatim string literals are extracted. |
| #: xg-cs-3.cs:28 |
| msgid "verbatim 1" |
| msgstr "" |
| |
| #. In verbatim string literals, no escape sequences are recognized. |
| #: xg-cs-3.cs:30 |
| msgid "verbatim 2 \\u005c \\\\ \\t \\b \\n \\'" |
| msgstr "" |
| |
| #. In verbatim string literals, only doubled delimiters are recognized. |
| #: xg-cs-3.cs:32 |
| msgid "verbatim 3 \"test" |
| msgstr "" |
| |
| #. Normal and verbatim string literals can be concatenated. |
| #: xg-cs-3.cs:34 |
| msgid "left - \"quotation\" - right" |
| msgstr "" |
| |
| #. Invalid concatenations are not concatenated. |
| #: xg-cs-3.cs:38 |
| msgid "fooba" |
| msgstr "" |
| |
| #. Verify that a comma inside braces is hidden. |
| #: xg-cs-3.cs:40 |
| msgid "this is the second argument" |
| msgstr "" |
| EOF |
| |
| : ${DIFF=diff} |
| ${DIFF} xg-cs-3.ok xg-cs-3.po |
| result=$? |
| |
| exit $result |