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)
7
using ICSharpCode.NRefactory.VB.Parser;
8
using ICSharpCode.NRefactory.VB.Ast;
10
namespace ICSharpCode.NRefactory.VB.Tests.Ast
13
public class CastExpressionTests
16
void TestSpecializedCast(string castExpression, Type castType)
18
CastExpression ce = ParseUtil.ParseExpression<CastExpression>(castExpression);
19
Assert.AreEqual(castType.FullName, ce.CastTo.Type);
20
Assert.IsTrue(ce.Expression is SimpleNameExpression);
21
Assert.AreEqual(CastType.PrimitiveConversion, ce.CastType);
26
public void VBNetSimpleCastExpression()
28
CastExpression ce = ParseUtil.ParseExpression<CastExpression>("CType(o, MyObject)");
29
Assert.AreEqual("MyObject", ce.CastTo.Type);
30
Assert.IsTrue(ce.Expression is SimpleNameExpression);
31
Assert.AreEqual(CastType.Conversion, ce.CastType);
35
public void VBNetGenericCastExpression()
37
CastExpression ce = ParseUtil.ParseExpression<CastExpression>("CType(o, List(of T))");
38
Assert.AreEqual("List", ce.CastTo.Type);
39
Assert.AreEqual("T", ce.CastTo.GenericTypes[0].Type);
40
Assert.IsTrue(ce.Expression is SimpleNameExpression);
41
Assert.AreEqual(CastType.Conversion, ce.CastType);
45
public void VBNetSimpleDirectCastExpression()
47
CastExpression ce = ParseUtil.ParseExpression<CastExpression>("DirectCast(o, MyObject)");
48
Assert.AreEqual("MyObject", ce.CastTo.Type);
49
Assert.IsTrue(ce.Expression is SimpleNameExpression);
50
Assert.AreEqual(CastType.Cast, ce.CastType);
54
public void VBNetGenericDirectCastExpression()
56
CastExpression ce = ParseUtil.ParseExpression<CastExpression>("DirectCast(o, List(of T))");
57
Assert.AreEqual("List", ce.CastTo.Type);
58
Assert.AreEqual("T", ce.CastTo.GenericTypes[0].Type);
59
Assert.IsTrue(ce.Expression is SimpleNameExpression);
60
Assert.AreEqual(CastType.Cast, ce.CastType);
64
public void VBNetSimpleTryCastExpression()
66
CastExpression ce = ParseUtil.ParseExpression<CastExpression>("TryCast(o, MyObject)");
67
Assert.AreEqual("MyObject", ce.CastTo.Type);
68
Assert.IsTrue(ce.Expression is SimpleNameExpression);
69
Assert.AreEqual(CastType.TryCast, ce.CastType);
73
public void VBNetGenericTryCastExpression()
75
CastExpression ce = ParseUtil.ParseExpression<CastExpression>("TryCast(o, List(of T))");
76
Assert.AreEqual("List", ce.CastTo.Type);
77
Assert.AreEqual("T", ce.CastTo.GenericTypes[0].Type);
78
Assert.IsTrue(ce.Expression is SimpleNameExpression);
79
Assert.AreEqual(CastType.TryCast, ce.CastType);
83
public void VBNetSpecializedBoolCastExpression()
85
TestSpecializedCast("CBool(o)", typeof(System.Boolean));
89
public void VBNetSpecializedCharCastExpression()
91
TestSpecializedCast("CChar(o)", typeof(System.Char));
96
public void VBNetSpecializedStringCastExpression()
98
TestSpecializedCast("CStr(o)", typeof(System.String));
102
public void VBNetSpecializedDateTimeCastExpression()
104
TestSpecializedCast("CDate(o)", typeof(System.DateTime));
108
public void VBNetSpecializedDecimalCastExpression()
110
TestSpecializedCast("CDec(o)", typeof(System.Decimal));
114
public void VBNetSpecializedSingleCastExpression()
116
TestSpecializedCast("CSng(o)", typeof(System.Single));
120
public void VBNetSpecializedDoubleCastExpression()
122
TestSpecializedCast("CDbl(o)", typeof(System.Double));
126
public void VBNetSpecializedByteCastExpression()
128
TestSpecializedCast("CByte(o)", typeof(System.Byte));
132
public void VBNetSpecializedInt16CastExpression()
134
TestSpecializedCast("CShort(o)", typeof(System.Int16));
138
public void VBNetSpecializedInt32CastExpression()
140
TestSpecializedCast("CInt(o)", typeof(System.Int32));
144
public void VBNetSpecializedInt64CastExpression()
146
TestSpecializedCast("CLng(o)", typeof(System.Int64));
150
public void VBNetSpecializedSByteCastExpression()
152
TestSpecializedCast("CSByte(o)", typeof(System.SByte));
156
public void VBNetSpecializedUInt16CastExpression()
158
TestSpecializedCast("CUShort(o)", typeof(System.UInt16));
162
public void VBNetSpecializedUInt32CastExpression()
164
TestSpecializedCast("CUInt(o)", typeof(System.UInt32));
168
public void VBNetSpecializedUInt64CastExpression()
170
TestSpecializedCast("CULng(o)", typeof(System.UInt64));
175
public void VBNetSpecializedObjectCastExpression()
177
TestSpecializedCast("CObj(o)", typeof(System.Object));