PageRenderTime 17ms CodeModel.GetById 13ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/NRefactory/ICSharpCode.NRefactory.Tests/CSharp/Parser/TypeMembers/EventDeclarationTests.cs

http://github.com/icsharpcode/ILSpy
C# | 104 lines | 82 code | 5 blank | 17 comment | 0 complexity | dadfb09ac0d33b6c1aafe60d3368c5de 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.TypeMembers
 23{
 24	[TestFixture]
 25	public class EventDeclarationTests
 26	{
 27		[Test]
 28		public void SimpleEventDeclarationTest()
 29		{
 30			ParseUtilCSharp.AssertTypeMember(
 31				"event EventHandler MyEvent;",
 32				new EventDeclaration {
 33					ReturnType = new SimpleType("EventHandler"),
 34					Variables = {
 35						new VariableInitializer {
 36							Name = "MyEvent"
 37						}
 38					}});
 39		}
 40		
 41		[Test]
 42		public void MultipleEventDeclarationTest()
 43		{
 44			ParseUtilCSharp.AssertTypeMember(
 45				"public event EventHandler A = null, B = delegate {};",
 46				new EventDeclaration {
 47					Modifiers = Modifiers.Public,
 48					ReturnType = new SimpleType("EventHandler"),
 49					Variables = {
 50						new VariableInitializer {
 51							Name = "A",
 52							Initializer = new NullReferenceExpression()
 53						},
 54						new VariableInitializer {
 55							Name = "B",
 56							Initializer = new AnonymousMethodExpression() { Body = new BlockStatement ()}
 57						}
 58					}});
 59		}
 60		
 61		[Test]
 62		public void AddRemoveEventDeclarationTest()
 63		{
 64			ParseUtilCSharp.AssertTypeMember(
 65				"public event System.EventHandler MyEvent { add { } remove { } }",
 66				new CustomEventDeclaration {
 67					Modifiers = Modifiers.Public,
 68					ReturnType = new MemberType {
 69						Target = new SimpleType("System"),
 70						MemberName = "EventHandler"
 71					},
 72					Name = "MyEvent",
 73				AddAccessor = new Accessor { Body = new BlockStatement() },
 74				RemoveAccessor = new Accessor { Body = new BlockStatement() }
 75			});
 76		}
 77		
 78		[Test]
 79		public void EventImplementingGenericInterfaceDeclarationTest()
 80		{
 81			ParseUtilCSharp.AssertTypeMember(
 82				"event EventHandler MyInterface<string>.MyEvent { add { } [Attr] remove {} }",
 83				new CustomEventDeclaration {
 84					ReturnType = new SimpleType("EventHandler"),
 85					PrivateImplementationType = new SimpleType{
 86						Identifier = "MyInterface",
 87						TypeArguments = { new PrimitiveType("string") }
 88					},
 89					Name = "MyEvent",
 90					AddAccessor = new Accessor { Body = new BlockStatement() },
 91					RemoveAccessor = new Accessor {
 92						Attributes = {
 93							new AttributeSection {
 94								Attributes = {
 95									new Attribute { Type = new SimpleType("Attr") }
 96								}
 97							}
 98						},
 99						Body = new BlockStatement()
100					}
101				});
102		}
103	}
104}