/NRefactory/ICSharpCode.NRefactory.VB.Tests/Parser/Expressions/TypeOfExpressionTests.cs

http://github.com/icsharpcode/ILSpy · C# · 87 lines · 75 code · 10 blank · 2 comment · 0 complexity · b4665cbcfbc7d07fc4e329acd4d75ba2 MD5 · raw file

  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. using System;
  4. using System.IO;
  5. using NUnit.Framework;
  6. using ICSharpCode.NRefactory.VB.Parser;
  7. using ICSharpCode.NRefactory.VB.Ast;
  8. namespace ICSharpCode.NRefactory.VB.Tests.Ast
  9. {
  10. [TestFixture]
  11. public class TypeOfExpressionTests
  12. {
  13. #region VB.NET
  14. [Test]
  15. public void VBSimpleTypeOfExpressionTest()
  16. {
  17. TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(MyNamespace.N1.MyType)");
  18. Assert.AreEqual("MyNamespace.N1.MyType", toe.TypeReference.Type);
  19. }
  20. [Test]
  21. public void VBGlobalTypeOfExpressionTest()
  22. {
  23. TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(Global.System.Console)");
  24. Assert.AreEqual("System.Console", toe.TypeReference.Type);
  25. }
  26. [Test]
  27. public void VBPrimitiveTypeOfExpressionTest()
  28. {
  29. TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(integer)");
  30. Assert.AreEqual("System.Int32", toe.TypeReference.Type);
  31. }
  32. [Test]
  33. public void VBVoidTypeOfExpressionTest()
  34. {
  35. TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(void)");
  36. Assert.AreEqual("void", toe.TypeReference.Type);
  37. }
  38. [Test]
  39. public void VBArrayTypeOfExpressionTest()
  40. {
  41. TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(MyType())");
  42. Assert.AreEqual("MyType", toe.TypeReference.Type);
  43. Assert.AreEqual(new int[] {0}, toe.TypeReference.RankSpecifier);
  44. }
  45. [Test]
  46. public void VBGenericTypeOfExpressionTest()
  47. {
  48. TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(MyNamespace.N1.MyType(Of string))");
  49. Assert.AreEqual("MyNamespace.N1.MyType", toe.TypeReference.Type);
  50. Assert.AreEqual("System.String", toe.TypeReference.GenericTypes[0].Type);
  51. }
  52. [Test]
  53. public void VBUnboundTypeOfExpressionTest()
  54. {
  55. TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(MyType(Of ,))");
  56. Assert.AreEqual("MyType", toe.TypeReference.Type);
  57. Assert.IsTrue(toe.TypeReference.GenericTypes[0].IsNull);
  58. Assert.IsTrue(toe.TypeReference.GenericTypes[1].IsNull);
  59. }
  60. [Test]
  61. public void VBNestedGenericTypeOfExpressionTest()
  62. {
  63. TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(MyType(Of string).InnerClass(of integer).InnerInnerClass)");
  64. InnerClassTypeReference ic = (InnerClassTypeReference)toe.TypeReference;
  65. Assert.AreEqual("InnerInnerClass", ic.Type);
  66. Assert.AreEqual(0, ic.GenericTypes.Count);
  67. ic = (InnerClassTypeReference)ic.BaseType;
  68. Assert.AreEqual("InnerClass", ic.Type);
  69. Assert.AreEqual(1, ic.GenericTypes.Count);
  70. Assert.AreEqual("System.Int32", ic.GenericTypes[0].Type);
  71. Assert.AreEqual("MyType", ic.BaseType.Type);
  72. Assert.AreEqual(1, ic.BaseType.GenericTypes.Count);
  73. Assert.AreEqual("System.String", ic.BaseType.GenericTypes[0].Type);
  74. }
  75. #endregion
  76. }
  77. }