PageRenderTime 30ms CodeModel.GetById 11ms app.highlight 12ms RepoModel.GetById 1ms app.codeStats 1ms

/NRefactory/ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/MemberReferenceExpressionTests.cs

http://github.com/icsharpcode/ILSpy
C# | 126 lines | 98 code | 11 blank | 17 comment | 0 complexity | 5a4745fd32824dae5e0721241eaaedd5 MD5 | raw file
  1// Copyright (c) AlphaSierraPapa for the SharpDevelop Team
  2// 
  3// Permission is hereby granted, free of charge, to any person obtaining a copy of this
  4// software and associated documentation files (the "Software"), to deal in the Software
  5// without restriction, including without limitation the rights to use, copy, modify, merge,
  6// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
  7// to whom the Software is furnished to do so, subject to the following conditions:
  8// 
  9// The above copyright notice and this permission notice shall be included in all copies or
 10// substantial portions of the Software.
 11// 
 12// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 13// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 14// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
 15// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 16// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 17// DEALINGS IN THE SOFTWARE.
 18
 19using System;
 20using NUnit.Framework;
 21
 22namespace ICSharpCode.NRefactory.CSharp.Parser.Expression
 23{
 24	[TestFixture]
 25	public class MemberReferenceExpressionTests
 26	{
 27		[Test]
 28		public void SimpleFieldReferenceExpressionTest()
 29		{
 30			ParseUtilCSharp.AssertExpression(
 31				"myTargetObject.myField",
 32				new IdentifierExpression("myTargetObject").Member("myField")
 33			);
 34		}
 35		
 36		[Test]
 37		public void ShortMaxValueTest()
 38		{
 39			ParseUtilCSharp.AssertExpression(
 40				"short.MaxValue",
 41				new PrimitiveType("short").Member("MaxValue")
 42			);
 43		}
 44		
 45		[Test]
 46		public void IdentShortMaxValueTest()
 47		{
 48			ParseUtilCSharp.AssertExpression(
 49				"@short.MaxValue",
 50				new IdentifierExpression("short").Member("MaxValue")
 51			);
 52		}
 53		
 54		[Test]
 55		public void GenericFieldReferenceExpressionTest()
 56		{
 57			ParseUtilCSharp.AssertExpression(
 58				"SomeClass<string>.myField",
 59				new IdentifierExpression("SomeClass") { TypeArguments = { new PrimitiveType("string") } }.Member("myField")
 60			);
 61		}
 62		
 63		[Test]
 64		public void FullNamespaceGenericFieldReferenceExpressionTest()
 65		{
 66			ParseUtilCSharp.AssertExpression(
 67				"Namespace.Subnamespace.SomeClass<string>.myField",
 68				new MemberReferenceExpression {
 69					Target = new IdentifierExpression("Namespace").Member("Subnamespace"),
 70					MemberName = "SomeClass",
 71					TypeArguments = { new PrimitiveType("string") }
 72				}.Member("myField")
 73			);
 74		}
 75		
 76		[Test]
 77		public void GlobalFullNamespaceGenericFieldReferenceExpressionTest()
 78		{
 79			var target = new MemberType {
 80						Target = new SimpleType("global"),
 81						IsDoubleColon = true,
 82						MemberName = "Namespace"
 83					}.Member("Subnamespace").Member ("SomeClass");
 84			
 85			target.AddChild (new PrimitiveType("string"), Roles.TypeArgument);
 86			
 87			ParseUtilCSharp.AssertExpression(
 88				"global::Namespace.Subnamespace.SomeClass<string>.myField",
 89				new MemberReferenceExpression {
 90					Target = target,
 91					MemberName = "myField"
 92				}
 93			);
 94		}
 95		
 96		[Test]
 97		public void NestedGenericFieldReferenceExpressionTest()
 98		{
 99			ParseUtilCSharp.AssertExpression(
100				"MyType<string>.InnerClass<int>.myField",
101				new MemberReferenceExpression {
102					Target = new IdentifierExpression("MyType") { TypeArguments = { new PrimitiveType("string") } },
103					MemberName = "InnerClass",
104					TypeArguments = { new PrimitiveType("int") }
105				}.Member("myField")
106			);
107		}
108		
109		[Test]
110		public void AliasedNamespace()
111		{
112			ParseUtilCSharp.AssertExpression(
113				"a::b.c",
114				new MemberReferenceExpression {
115					Target = new TypeReferenceExpression {
116						Type = new MemberType {
117							Target = new SimpleType("a"),
118							IsDoubleColon = true,
119							MemberName = "b"
120						}
121					},
122					MemberName = "c"
123				});
124		}
125	}
126}