xref: /netbsd-src/external/gpl2/gettext/dist/gettext-tools/tests/xgettext-csharp-3 (revision 946379e7b37692fc43f68eb0d1c10daa0a7f3b6c)
1*946379e7Schristos#!/bin/sh
2*946379e7Schristos
3*946379e7Schristos# More tests for C# support: string syntax
4*946379e7Schristos
5*946379e7Schristostmpfiles=""
6*946379e7Schristostrap 'rm -fr $tmpfiles' 1 2 3 15
7*946379e7Schristos
8*946379e7Schristostmpfiles="$tmpfiles xg-cs-3.cs"
9*946379e7Schristostr '%' '\015' <<\EOF > xg-cs-3.cs
10*946379e7Schristosclass TestCase {
11*946379e7Schristos  public static void Main (String[] args) {
12*946379e7Schristos    // Test recognition of \u escapes.
13*946379e7Schristos    GetString ("B\u00f6se B\u00fcbchen");
14*946379e7Schristos    // \u escapes with more than one u are invalid.
15*946379e7Schristos    GetString ("Japanese: \uu65e5\uuu672c\u8A9e");
16*946379e7Schristos    GetString ("embedded\nnewline");
17*946379e7Schristos    // Spaces from end of comment are removed.    %GetString("dummy");
18*946379e7Schristos    // Two backslashes (unlike in Java, where this is just one backslash).
19*946379e7Schristos    GetString ("\u005c\u005c");
20*946379e7Schristos    // A 6-character string (unlike in Java, where this is just one backslash).
21*946379e7Schristos    GetString ("\\u005c");
22*946379e7Schristos    // A single backslash.
23*946379e7Schristos    GetString ("\\");
24*946379e7Schristos    // There is only one \u recognition pass.
25*946379e7Schristos    GetString ("\u005cu005c");
26*946379e7Schristos    // Octal escape sequences are not recognized, except for \0.
27*946379e7Schristos    GetString ("\134");
28*946379e7Schristos    // Escape sequences in strings.
29*946379e7Schristos    GetString ("t -> \t, b -> \b, n -> \n, dquote -> \", squote -> \' ...");
30*946379e7Schristos    // Hex escapes are recognized.
31*946379e7Schristos    GetString ("bel: \x07\n");
32*946379e7Schristos    GetString // Recognized despite comments
33*946379e7Schristos       ( /* Even across multiline
34*946379e7Schristoscomment! */ "this is a single " /* now comes the concatenation! */ + // after +
35*946379e7Schristos         "long line");
36*946379e7Schristos    // Verbatim string literals are extracted.
37*946379e7Schristos    GetString (@"verbatim 1");
38*946379e7Schristos    // In verbatim string literals, no escape sequences are recognized.
39*946379e7Schristos    GetString (@"verbatim 2 \u005c \\ \t \b \n \'");
40*946379e7Schristos    // In verbatim string literals, only doubled delimiters are recognized.
41*946379e7Schristos    GetString (@"verbatim 3 ""test");
42*946379e7Schristos    // Normal and verbatim string literals can be concatenated.
43*946379e7Schristos    GetString ("left - \"quot" + @"ation"" - right");
44*946379e7Schristos    // Character literals are not extracted.
45*946379e7Schristos    GetString ('x');
46*946379e7Schristos    // Invalid concatenations are not concatenated.
47*946379e7Schristos    GetString ("fooba"+'r');
48*946379e7Schristos    // Verify that a comma inside braces is hidden.
49*946379e7Schristos    MyGetString (new Object[] { "don't", "fool", "me" }, "this is the second argument");
50*946379e7Schristos  }
51*946379e7Schristos}
52*946379e7SchristosEOF
53*946379e7Schristos
54*946379e7Schristostmpfiles="$tmpfiles xg-cs-3.po"
55*946379e7Schristos: ${XGETTEXT=xgettext}
56*946379e7Schristos# delete POT-Creation-Date: line because the date depends on local time.
57*946379e7Schristos${XGETTEXT} --output - --add-location -c -kMyGetString:2 xg-cs-3.cs 2>/dev/null \
58*946379e7Schristos  | sed '/\"POT-Creation-Date:.*/d' > xg-cs-3.po
59*946379e7Schristostest $? = 0 || { rm -fr $tmpfiles; exit 1; }
60*946379e7Schristos
61*946379e7Schristostmpfiles="$tmpfiles xg-cs-3.ok"
62*946379e7Schristoscat <<\EOF > xg-cs-3.ok
63*946379e7Schristos# SOME DESCRIPTIVE TITLE.
64*946379e7Schristos# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
65*946379e7Schristos# This file is distributed under the same license as the PACKAGE package.
66*946379e7Schristos# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
67*946379e7Schristos#
68*946379e7Schristos#, fuzzy
69*946379e7Schristosmsgid ""
70*946379e7Schristosmsgstr ""
71*946379e7Schristos"Project-Id-Version: PACKAGE VERSION\n"
72*946379e7Schristos"Report-Msgid-Bugs-To: \n"
73*946379e7Schristos"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
74*946379e7Schristos"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
75*946379e7Schristos"Language-Team: LANGUAGE <LL@li.org>\n"
76*946379e7Schristos"MIME-Version: 1.0\n"
77*946379e7Schristos"Content-Type: text/plain; charset=UTF-8\n"
78*946379e7Schristos"Content-Transfer-Encoding: 8bit\n"
79*946379e7Schristos
80*946379e7Schristos#. Test recognition of \u escapes.
81*946379e7Schristos#: xg-cs-3.cs:4
82*946379e7Schristosmsgid "Böse Bübchen"
83*946379e7Schristosmsgstr ""
84*946379e7Schristos
85*946379e7Schristos#. \u escapes with more than one u are invalid.
86*946379e7Schristos#: xg-cs-3.cs:6
87*946379e7Schristosmsgid "Japanese: \\uu65e5\\uuu672c語"
88*946379e7Schristosmsgstr ""
89*946379e7Schristos
90*946379e7Schristos#: xg-cs-3.cs:7
91*946379e7Schristosmsgid ""
92*946379e7Schristos"embedded\n"
93*946379e7Schristos"newline"
94*946379e7Schristosmsgstr ""
95*946379e7Schristos
96*946379e7Schristos#. Spaces from end of comment are removed.
97*946379e7Schristos#: xg-cs-3.cs:8
98*946379e7Schristosmsgid "dummy"
99*946379e7Schristosmsgstr ""
100*946379e7Schristos
101*946379e7Schristos#. Two backslashes (unlike in Java, where this is just one backslash).
102*946379e7Schristos#: xg-cs-3.cs:10
103*946379e7Schristosmsgid "\\\\"
104*946379e7Schristosmsgstr ""
105*946379e7Schristos
106*946379e7Schristos#. A 6-character string (unlike in Java, where this is just one backslash).
107*946379e7Schristos#. There is only one \u recognition pass.
108*946379e7Schristos#: xg-cs-3.cs:12 xg-cs-3.cs:16
109*946379e7Schristosmsgid "\\u005c"
110*946379e7Schristosmsgstr ""
111*946379e7Schristos
112*946379e7Schristos#. A single backslash.
113*946379e7Schristos#: xg-cs-3.cs:14
114*946379e7Schristosmsgid "\\"
115*946379e7Schristosmsgstr ""
116*946379e7Schristos
117*946379e7Schristos#. Octal escape sequences are not recognized, except for \0.
118*946379e7Schristos#: xg-cs-3.cs:18
119*946379e7Schristosmsgid "\\134"
120*946379e7Schristosmsgstr ""
121*946379e7Schristos
122*946379e7Schristos#. Escape sequences in strings.
123*946379e7Schristos#: xg-cs-3.cs:20
124*946379e7Schristosmsgid ""
125*946379e7Schristos"t -> \t, b -> \b, n -> \n"
126*946379e7Schristos", dquote -> \", squote -> ' ..."
127*946379e7Schristosmsgstr ""
128*946379e7Schristos
129*946379e7Schristos#. Hex escapes are recognized.
130*946379e7Schristos#: xg-cs-3.cs:22
131*946379e7Schristosmsgid "bel: \a\n"
132*946379e7Schristosmsgstr ""
133*946379e7Schristos
134*946379e7Schristos#. Recognized despite comments
135*946379e7Schristos#. Even across multiline
136*946379e7Schristos#. comment!
137*946379e7Schristos#: xg-cs-3.cs:25
138*946379e7Schristosmsgid "this is a single long line"
139*946379e7Schristosmsgstr ""
140*946379e7Schristos
141*946379e7Schristos#. Verbatim string literals are extracted.
142*946379e7Schristos#: xg-cs-3.cs:28
143*946379e7Schristosmsgid "verbatim 1"
144*946379e7Schristosmsgstr ""
145*946379e7Schristos
146*946379e7Schristos#. In verbatim string literals, no escape sequences are recognized.
147*946379e7Schristos#: xg-cs-3.cs:30
148*946379e7Schristosmsgid "verbatim 2 \\u005c \\\\ \\t \\b \\n \\'"
149*946379e7Schristosmsgstr ""
150*946379e7Schristos
151*946379e7Schristos#. In verbatim string literals, only doubled delimiters are recognized.
152*946379e7Schristos#: xg-cs-3.cs:32
153*946379e7Schristosmsgid "verbatim 3 \"test"
154*946379e7Schristosmsgstr ""
155*946379e7Schristos
156*946379e7Schristos#. Normal and verbatim string literals can be concatenated.
157*946379e7Schristos#: xg-cs-3.cs:34
158*946379e7Schristosmsgid "left - \"quotation\" - right"
159*946379e7Schristosmsgstr ""
160*946379e7Schristos
161*946379e7Schristos#. Invalid concatenations are not concatenated.
162*946379e7Schristos#: xg-cs-3.cs:38
163*946379e7Schristosmsgid "fooba"
164*946379e7Schristosmsgstr ""
165*946379e7Schristos
166*946379e7Schristos#. Verify that a comma inside braces is hidden.
167*946379e7Schristos#: xg-cs-3.cs:40
168*946379e7Schristosmsgid "this is the second argument"
169*946379e7Schristosmsgstr ""
170*946379e7SchristosEOF
171*946379e7Schristos
172*946379e7Schristos: ${DIFF=diff}
173*946379e7Schristos${DIFF} xg-cs-3.ok xg-cs-3.po
174*946379e7Schristosresult=$?
175*946379e7Schristos
176*946379e7Schristosrm -fr $tmpfiles
177*946379e7Schristos
178*946379e7Schristosexit $result
179