~ubuntu-branches/ubuntu/trusty/monodevelop/trusty-proposed

« back to all changes in this revision

Viewing changes to external/nrefactory/ICSharpCode.NRefactory.VB.Tests/Lexer/LexerContextTests.cs

  • Committer: Package Import Robot
  • Author(s): Jo Shields
  • Date: 2013-05-12 09:46:03 UTC
  • mto: This revision was merged to the branch mainline in revision 29.
  • Revision ID: package-import@ubuntu.com-20130512094603-mad323bzcxvmcam0
Tags: upstream-4.0.5+dfsg
ImportĀ upstreamĀ versionĀ 4.0.5+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
ļ»æ// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
 
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
 
3
 
 
4
using System;
 
5
using System.IO;
 
6
using NUnit.Framework;
 
7
using ICSharpCode.NRefactory.VB.Parser;
 
8
 
 
9
namespace ICSharpCode.NRefactory.VB.Tests.Lexer
 
10
{
 
11
        [TestFixture]
 
12
        public class LexerContextTests
 
13
        {
 
14
                [Test]
 
15
                public void SimpleGlobal()
 
16
                {
 
17
                        RunTest(
 
18
                                @"Option Explicit",
 
19
                                @"enter Global
 
20
exit Global
 
21
"
 
22
                        );
 
23
                }
 
24
                
 
25
                [Test]
 
26
                public void VariableWithXmlLiteral()
 
27
                {
 
28
                        RunTest(
 
29
                                @"Class Test
 
30
        Public Sub New()
 
31
                Dim x = <a />
 
32
        End Sub
 
33
End Class
 
34
",
 
35
                                @"enter Global
 
36
        enter TypeDeclaration
 
37
                enter Identifier
 
38
                exit Identifier
 
39
                enter Member
 
40
                        enter Identifier
 
41
                        exit Identifier
 
42
                        enter Body
 
43
                                enter Identifier
 
44
                                exit Identifier
 
45
                                enter Expression
 
46
                                        enter Expression
 
47
                                                enter Expression
 
48
                                                        enter Xml
 
49
                                                                enter Xml
 
50
                                                                exit Xml
 
51
                                                        exit Xml
 
52
                                                exit Expression
 
53
                                        exit Expression
 
54
                                exit Expression
 
55
                        exit Body
 
56
                exit Member
 
57
        exit TypeDeclaration
 
58
exit Global
 
59
"
 
60
                        );
 
61
                }
 
62
                
 
63
                [Test]
 
64
                public void MemberWithXmlLiteral()
 
65
                {
 
66
                        RunTest(
 
67
                                @"Class Test
 
68
        Private xml As XElement = <b />
 
69
        
 
70
        Public Sub New()
 
71
                Dim x = <a />
 
72
        End Sub
 
73
End Class
 
74
",
 
75
                                @"enter Global
 
76
        enter TypeDeclaration
 
77
                enter Identifier
 
78
                exit Identifier
 
79
                enter Member
 
80
                        enter Identifier
 
81
                        exit Identifier
 
82
                        enter Type
 
83
                        exit Type
 
84
                        enter Expression
 
85
                                enter Expression
 
86
                                        enter Expression
 
87
                                                enter Xml
 
88
                                                        enter Xml
 
89
                                                        exit Xml
 
90
                                                exit Xml
 
91
                                        exit Expression
 
92
                                exit Expression
 
93
                        exit Expression
 
94
                exit Member
 
95
                enter Member
 
96
                        enter Identifier
 
97
                        exit Identifier
 
98
                        enter Body
 
99
                                enter Identifier
 
100
                                exit Identifier
 
101
                                enter Expression
 
102
                                        enter Expression
 
103
                                                enter Expression
 
104
                                                        enter Xml
 
105
                                                                enter Xml
 
106
                                                                exit Xml
 
107
                                                        exit Xml
 
108
                                                exit Expression
 
109
                                        exit Expression
 
110
                                exit Expression
 
111
                        exit Body
 
112
                exit Member
 
113
        exit TypeDeclaration
 
114
exit Global
 
115
"
 
116
                        );
 
117
                }
 
118
                
 
119
                [Test]
 
120
                public void GlobalAttributeTest()
 
121
                {
 
122
                        RunTest(
 
123
                                @"<assembly: CLSCompliant(True)>
 
124
Class Test
 
125
        Public Sub New()
 
126
                Dim x = 5
 
127
        End Sub
 
128
End Class
 
129
",
 
130
                                @"enter Global
 
131
        enter Attribute
 
132
        exit Attribute
 
133
        enter TypeDeclaration
 
134
                enter Identifier
 
135
                exit Identifier
 
136
                enter Member
 
137
                        enter Identifier
 
138
                        exit Identifier
 
139
                        enter Body
 
140
                                enter Identifier
 
141
                                exit Identifier
 
142
                                enter Expression
 
143
                                        enter Expression
 
144
                                                enter Expression
 
145
                                                exit Expression
 
146
                                        exit Expression
 
147
                                exit Expression
 
148
                        exit Body
 
149
                exit Member
 
150
        exit TypeDeclaration
 
151
exit Global
 
152
"
 
153
                        );
 
154
                }
 
155
                
 
156
                [Test]
 
157
                public void ClassAttributeTest()
 
158
                {
 
159
                        RunTest(
 
160
                                @"<Serializable>
 
161
Class Test
 
162
        Public Sub New()
 
163
                Dim x = 5
 
164
        End Sub
 
165
End Class
 
166
",
 
167
                                @"enter Global
 
168
        enter Attribute
 
169
        exit Attribute
 
170
        enter TypeDeclaration
 
171
                enter Identifier
 
172
                exit Identifier
 
173
                enter Member
 
174
                        enter Identifier
 
175
                        exit Identifier
 
176
                        enter Body
 
177
                                enter Identifier
 
178
                                exit Identifier
 
179
                                enter Expression
 
180
                                        enter Expression
 
181
                                                enter Expression
 
182
                                                exit Expression
 
183
                                        exit Expression
 
184
                                exit Expression
 
185
                        exit Body
 
186
                exit Member
 
187
        exit TypeDeclaration
 
188
exit Global
 
189
"
 
190
                        );
 
191
                }
 
192
                
 
193
                [Test]
 
194
                public void MethodAttributeTest()
 
195
                {
 
196
                        RunTest(
 
197
                                @"Class Test
 
198
        <Test>
 
199
        Public Sub New()
 
200
                Dim x = 5
 
201
        End Sub
 
202
End Class
 
203
",
 
204
                                @"enter Global
 
205
        enter TypeDeclaration
 
206
                enter Identifier
 
207
                exit Identifier
 
208
                enter Attribute
 
209
                exit Attribute
 
210
                enter Member
 
211
                        enter Identifier
 
212
                        exit Identifier
 
213
                        enter Body
 
214
                                enter Identifier
 
215
                                exit Identifier
 
216
                                enter Expression
 
217
                                        enter Expression
 
218
                                                enter Expression
 
219
                                                exit Expression
 
220
                                        exit Expression
 
221
                                exit Expression
 
222
                        exit Body
 
223
                exit Member
 
224
        exit TypeDeclaration
 
225
exit Global
 
226
"
 
227
                        );
 
228
                }
 
229
                
 
230
                [Test]
 
231
                public void WithBlockTest()
 
232
                {
 
233
                        RunTest(
 
234
                                @"Class Test
 
235
        Public Sub New()
 
236
                With x
 
237
                        
 
238
                End With
 
239
        End Sub
 
240
End Class
 
241
",
 
242
                                @"enter Global
 
243
        enter TypeDeclaration
 
244
                enter Identifier
 
245
                exit Identifier
 
246
                enter Member
 
247
                        enter Identifier
 
248
                        exit Identifier
 
249
                        enter Body
 
250
                                enter Expression
 
251
                                        enter Expression
 
252
                                                enter Expression
 
253
                                                exit Expression
 
254
                                        exit Expression
 
255
                                exit Expression
 
256
                                enter Body
 
257
                                exit Body
 
258
                        exit Body
 
259
                exit Member
 
260
        exit TypeDeclaration
 
261
exit Global
 
262
"
 
263
                        );
 
264
                }
 
265
                
 
266
                [Test]
 
267
                public void StatementsTest()
 
268
                {
 
269
                        RunTest(
 
270
                                @"Class Test
 
271
        Public Sub New()
 
272
                For i As Integer = 0 To 10
 
273
                
 
274
                Next
 
275
        
 
276
                For Each x As Integer In list
 
277
                
 
278
                Next
 
279
                
 
280
                Try
 
281
                
 
282
                Catch e As Exception
 
283
                
 
284
                End Try
 
285
        End Sub
 
286
End Class
 
287
",
 
288
                                @"enter Global
 
289
        enter TypeDeclaration
 
290
                enter Identifier
 
291
                exit Identifier
 
292
                enter Member
 
293
                        enter Identifier
 
294
                        exit Identifier
 
295
                        enter Body
 
296
                                enter Identifier
 
297
                                        enter Expression
 
298
                                        exit Expression
 
299
                                exit Identifier
 
300
                                enter Type
 
301
                                exit Type
 
302
                                enter Expression
 
303
                                        enter Expression
 
304
                                                enter Expression
 
305
                                                exit Expression
 
306
                                        exit Expression
 
307
                                        enter Expression
 
308
                                                enter Expression
 
309
                                                exit Expression
 
310
                                        exit Expression
 
311
                                exit Expression
 
312
                                enter Body
 
313
                                exit Body
 
314
                                enter Identifier
 
315
                                        enter Expression
 
316
                                        exit Expression
 
317
                                exit Identifier
 
318
                                enter Type
 
319
                                exit Type
 
320
                                enter Expression
 
321
                                        enter Expression
 
322
                                                enter Expression
 
323
                                                exit Expression
 
324
                                        exit Expression
 
325
                                exit Expression
 
326
                                enter Body
 
327
                                exit Body
 
328
                                enter Body
 
329
                                exit Body
 
330
                                enter Identifier
 
331
                                exit Identifier
 
332
                                enter Type
 
333
                                exit Type
 
334
                                enter Body
 
335
                                exit Body
 
336
                        exit Body
 
337
                exit Member
 
338
        exit TypeDeclaration
 
339
exit Global
 
340
"
 
341
                        );
 
342
                }
 
343
                
 
344
                [Test]
 
345
                public void ClassTest()
 
346
                {
 
347
                        RunTest(
 
348
                                @"Class MainClass ' a comment
 
349
        Dim under_score_field As Integer
 
350
        Sub SomeMethod()
 
351
                simple += 1
 
352
                For Each loopVarName In collection
 
353
                Next
 
354
        End Sub
 
355
End Class",
 
356
                                @"enter Global
 
357
        enter TypeDeclaration
 
358
                enter Identifier
 
359
                exit Identifier
 
360
                enter Member
 
361
                        enter Identifier
 
362
                        exit Identifier
 
363
                        enter Type
 
364
                        exit Type
 
365
                exit Member
 
366
                enter Member
 
367
                        enter Identifier
 
368
                        exit Identifier
 
369
                        enter Body
 
370
                                enter Expression
 
371
                                        enter Expression
 
372
                                                enter Expression
 
373
                                                exit Expression
 
374
                                        exit Expression
 
375
                                        enter Expression
 
376
                                                enter Expression
 
377
                                                exit Expression
 
378
                                        exit Expression
 
379
                                exit Expression
 
380
                                enter Identifier
 
381
                                        enter Expression
 
382
                                        exit Expression
 
383
                                exit Identifier
 
384
                                enter Expression
 
385
                                        enter Expression
 
386
                                                enter Expression
 
387
                                                exit Expression
 
388
                                        exit Expression
 
389
                                exit Expression
 
390
                                enter Body
 
391
                                exit Body
 
392
                        exit Body
 
393
                exit Member
 
394
        exit TypeDeclaration
 
395
exit Global
 
396
");
 
397
                }
 
398
                
 
399
                [Test]
 
400
                public void CollectionInitializer()
 
401
                {
 
402
                        RunTest(@"'
 
403
' Created by SharpDevelop.
 
404
' User: Siegfried
 
405
' Date: 22.06.2010
 
406
' Time: 21:29
 
407
'
 
408
' To change this template use Tools | Options | Coding | Edit Standard Headers.
 
409
'
 
410
 
 
411
Option Infer On
 
412
 
 
413
Imports System.Linq
 
414
Imports System.Xml.Linq
 
415
 
 
416
Module Program
 
417
        Sub Main()
 
418
                Console.WriteLine(""Hello World!"")
 
419
                
 
420
                Dim name = ""Test""
 
421
                Dim content = { 4, 5, New XAttribute(""a"", 3) }
 
422
                
 
423
                Dim xml = <<%= name %> <%= content %> />
 
424
                
 
425
                Console.ReadKey()
 
426
        End Sub
 
427
End Module",
 
428
                                @"enter Global
 
429
        enter Importable
 
430
        exit Importable
 
431
        enter Importable
 
432
        exit Importable
 
433
        enter TypeDeclaration
 
434
                enter Identifier
 
435
                exit Identifier
 
436
                enter Member
 
437
                        enter Identifier
 
438
                        exit Identifier
 
439
                        enter Body
 
440
                                enter Expression
 
441
                                        enter Expression
 
442
                                                enter Expression
 
443
                                                exit Expression
 
444
                                                enter Expression
 
445
                                                        enter Expression
 
446
                                                                enter Expression
 
447
                                                                        enter Expression
 
448
                                                                        exit Expression
 
449
                                                                exit Expression
 
450
                                                        exit Expression
 
451
                                                exit Expression
 
452
                                        exit Expression
 
453
                                exit Expression
 
454
                                enter Identifier
 
455
                                exit Identifier
 
456
                                enter Expression
 
457
                                        enter Expression
 
458
                                                enter Expression
 
459
                                                exit Expression
 
460
                                        exit Expression
 
461
                                exit Expression
 
462
                                enter Identifier
 
463
                                exit Identifier
 
464
                                enter Expression
 
465
                                        enter Expression
 
466
                                                enter Expression
 
467
                                                        enter Expression
 
468
                                                                enter Expression
 
469
                                                                exit Expression
 
470
                                                        exit Expression
 
471
                                                exit Expression
 
472
                                                enter Expression
 
473
                                                        enter Expression
 
474
                                                                enter Expression
 
475
                                                                exit Expression
 
476
                                                        exit Expression
 
477
                                                exit Expression
 
478
                                                enter Expression
 
479
                                                        enter Expression
 
480
                                                                enter ObjectCreation
 
481
                                                                        enter Expression
 
482
                                                                                enter Expression
 
483
                                                                                        enter Expression
 
484
                                                                                                enter Expression
 
485
                                                                                                exit Expression
 
486
                                                                                        exit Expression
 
487
                                                                                exit Expression
 
488
                                                                                enter Expression
 
489
                                                                                        enter Expression
 
490
                                                                                                enter Expression
 
491
                                                                                                exit Expression
 
492
                                                                                        exit Expression
 
493
                                                                                exit Expression
 
494
                                                                        exit Expression
 
495
                                                                exit ObjectCreation
 
496
                                                        exit Expression
 
497
                                                exit Expression
 
498
                                        exit Expression
 
499
                                exit Expression
 
500
                                enter Identifier
 
501
                                exit Identifier
 
502
                                enter Expression
 
503
                                        enter Expression
 
504
                                                enter Expression
 
505
                                                        enter Xml
 
506
                                                                enter Xml
 
507
                                                                        enter Expression
 
508
                                                                                enter Expression
 
509
                                                                                        enter Expression
 
510
                                                                                        exit Expression
 
511
                                                                                exit Expression
 
512
                                                                        exit Expression
 
513
                                                                        enter Expression
 
514
                                                                                enter Expression
 
515
                                                                                        enter Expression
 
516
                                                                                        exit Expression
 
517
                                                                                exit Expression
 
518
                                                                        exit Expression
 
519
                                                                exit Xml
 
520
                                                        exit Xml
 
521
                                                exit Expression
 
522
                                        exit Expression
 
523
                                exit Expression
 
524
                                enter Expression
 
525
                                        enter Expression
 
526
                                                enter Expression
 
527
                                                exit Expression
 
528
                                                enter Expression
 
529
                                                exit Expression
 
530
                                        exit Expression
 
531
                                exit Expression
 
532
                        exit Body
 
533
                exit Member
 
534
        exit TypeDeclaration
 
535
exit Global
 
536
");
 
537
                }
 
538
                
 
539
                [Test]
 
540
                public void Imports()
 
541
                {
 
542
                        RunTest(@"Imports System
 
543
Imports System.Linq
 
544
Imports System.Collections.Generic",
 
545
                                @"enter Global
 
546
        enter Importable
 
547
        exit Importable
 
548
        enter Importable
 
549
        exit Importable
 
550
        enter Importable
 
551
        exit Importable
 
552
exit Global
 
553
");
 
554
                }
 
555
                
 
556
                void RunTest(string code, string expectedOutput)
 
557
                {
 
558
                        ExpressionFinder p = new ExpressionFinder();
 
559
                        VBLexer lexer = new VBLexer(new StringReader(code));
 
560
                        Token t;
 
561
                        
 
562
                        do {
 
563
                                t = lexer.NextToken();
 
564
                                p.InformToken(t);
 
565
                        } while (t.Kind != Tokens.EOF);
 
566
                        
 
567
                        Console.WriteLine(p.Output);
 
568
                        
 
569
                        Assert.IsEmpty(p.Errors);
 
570
                        
 
571
                        Assert.AreEqual(expectedOutput, p.Output);
 
572
                }
 
573
        }
 
574
}