~halega/+junk/sharpdevelop

« back to all changes in this revision

Viewing changes to src/Libraries/NRefactory/Test/Parser/Expressions/ConditionalExpressionTests.cs

  • Committer: sk
  • Date: 2011-09-10 05:17:57 UTC
  • Revision ID: halega@halega.com-20110910051757-qfouz1llya9m6boy
4.1.0.7915 Release Candidate 1

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.Parser;
 
8
using ICSharpCode.NRefactory.Ast;
 
9
 
 
10
namespace ICSharpCode.NRefactory.Tests.Ast
 
11
{
 
12
        [TestFixture]
 
13
        public class ConditionalExpressionTests
 
14
        {
 
15
                #region C#
 
16
                [Test]
 
17
                public void CSharpConditionalExpressionTest()
 
18
                {
 
19
                        ConditionalExpression ce = ParseUtilCSharp.ParseExpression<ConditionalExpression>("a == b ? a() : a.B");
 
20
                        
 
21
                        Assert.IsTrue(ce.Condition is BinaryOperatorExpression);
 
22
                        Assert.IsTrue(ce.TrueExpression is InvocationExpression);
 
23
                        Assert.IsTrue(ce.FalseExpression is MemberReferenceExpression);
 
24
                }
 
25
                
 
26
                [Test]
 
27
                public void CSharpConditionalIsExpressionTest()
 
28
                {
 
29
                        // (as is b?) ERROR (conflict with nullables, SD2-419)
 
30
                        ConditionalExpression ce = ParseUtilCSharp.ParseExpression<ConditionalExpression>("a is b ? a() : a.B");
 
31
                        
 
32
                        Assert.IsTrue(ce.Condition is TypeOfIsExpression);
 
33
                        Assert.IsTrue(ce.TrueExpression is InvocationExpression);
 
34
                        Assert.IsTrue(ce.FalseExpression is MemberReferenceExpression);
 
35
                }
 
36
                
 
37
                [Test]
 
38
                public void CSharpConditionalIsWithNullableExpressionTest()
 
39
                {
 
40
                        ConditionalExpression ce = ParseUtilCSharp.ParseExpression<ConditionalExpression>("a is b? ? a() : a.B");
 
41
                        
 
42
                        Assert.IsTrue(ce.Condition is TypeOfIsExpression);
 
43
                        Assert.IsTrue(ce.TrueExpression is InvocationExpression);
 
44
                        Assert.IsTrue(ce.FalseExpression is MemberReferenceExpression);
 
45
                }
 
46
                
 
47
                [Test]
 
48
                public void CSharpConditionalIsExpressionTest2()
 
49
                {
 
50
                        ConditionalExpression ce = ParseUtilCSharp.ParseExpression<ConditionalExpression>("a is b ? (a()) : a.B");
 
51
                        
 
52
                        Assert.IsTrue(ce.Condition is TypeOfIsExpression);
 
53
                        Assert.IsTrue(ce.TrueExpression is ParenthesizedExpression);
 
54
                        Assert.IsTrue(ce.FalseExpression is MemberReferenceExpression);
 
55
                }
 
56
                
 
57
                [Test]
 
58
                public void CSharpConditionalExpressionNegativeValue()
 
59
                {
 
60
                        ConditionalExpression ce = ParseUtilCSharp.ParseExpression<ConditionalExpression>("isNegative ? -1 : 1");
 
61
                        
 
62
                        Assert.IsTrue(ce.Condition is IdentifierExpression);
 
63
                        Assert.IsTrue(ce.TrueExpression is UnaryOperatorExpression);
 
64
                        Assert.IsTrue(ce.FalseExpression is PrimitiveExpression);
 
65
                }
 
66
                
 
67
                
 
68
                [Test]
 
69
                public void CSharpConditionalIsWithNegativeValue()
 
70
                {
 
71
                        ConditionalExpression ce = ParseUtilCSharp.ParseExpression<ConditionalExpression>("a is b ? -1 : 1");
 
72
                        
 
73
                        Assert.IsTrue(ce.Condition is TypeOfIsExpression);
 
74
                        Assert.IsTrue(ce.TrueExpression is UnaryOperatorExpression);
 
75
                        Assert.IsTrue(ce.FalseExpression is PrimitiveExpression);
 
76
                }
 
77
                
 
78
                [Test]
 
79
                public void CSharpConditionalIsWithExplicitPositiveValue()
 
80
                {
 
81
                        ConditionalExpression ce = ParseUtilCSharp.ParseExpression<ConditionalExpression>("a is b ? +1 : 1");
 
82
                        
 
83
                        Assert.IsTrue(ce.Condition is TypeOfIsExpression);
 
84
                        Assert.IsTrue(ce.TrueExpression is UnaryOperatorExpression);
 
85
                        Assert.IsTrue(ce.FalseExpression is PrimitiveExpression);
 
86
                }
 
87
                
 
88
                [Test]
 
89
                public void CSharpRepeatedConditionalExpr()
 
90
                {
 
91
                        ConditionalExpression ce = ParseUtilCSharp.ParseExpression<ConditionalExpression>("a ? b : c ? d : e");
 
92
                        
 
93
                        Assert.AreEqual("a", ((IdentifierExpression)ce.Condition).Identifier);
 
94
                        Assert.AreEqual("b", ((IdentifierExpression)ce.TrueExpression).Identifier);
 
95
                        Assert.IsTrue(ce.FalseExpression is ConditionalExpression);
 
96
                }
 
97
                
 
98
                [Test]
 
99
                public void CSharpNestedConditionalExpr()
 
100
                {
 
101
                        ConditionalExpression ce = ParseUtilCSharp.ParseExpression<ConditionalExpression>("a ? b ? c : d : e");
 
102
                        
 
103
                        Assert.AreEqual("a", ((IdentifierExpression)ce.Condition).Identifier);
 
104
                        Assert.AreEqual("e", ((IdentifierExpression)ce.FalseExpression).Identifier);
 
105
                        Assert.IsTrue(ce.TrueExpression is ConditionalExpression);
 
106
                }
 
107
                #endregion
 
108
                
 
109
                #region VB.NET
 
110
                
 
111
                [Test]
 
112
                public void VBNetConditionalExpressionTest()
 
113
                {
 
114
                        ConditionalExpression ce = ParseUtilVBNet.ParseExpression<ConditionalExpression>("If(x IsNot Nothing, x.Test, \"nothing\")");
 
115
                        
 
116
                        Assert.IsTrue(ce.Condition is BinaryOperatorExpression);
 
117
                        Assert.IsTrue(ce.TrueExpression is MemberReferenceExpression);
 
118
                        Assert.IsTrue(ce.FalseExpression is PrimitiveExpression);
 
119
                }
 
120
                
 
121
                #endregion
 
122
        }
 
123
}