-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy pathMethods.cs
More file actions
145 lines (124 loc) · 3.92 KB
/
Methods.cs
File metadata and controls
145 lines (124 loc) · 3.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
using System;
using System.Text;
using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Reflection;
using System.Diagnostics;
using BitDiffer.Core;
using BitDiffer.Common.Model;
using BitDiffer.Common.Utility;
using BitDiffer.Common.Misc;
using BitDiffer.Common.Configuration;
namespace BitDiffer.Tests
{
/// <summary>
/// Summary description for UnitTest1
/// </summary>
[TestClass]
public class Methods : TestBase
{
[TestMethod]
public void Method_Extraction()
{
MethodDetail mi = ExtractMethod(Subjects.One, "BasicClass", "SimplePublicMethod");
Assert.AreEqual(Status.Present, mi.Status);
Assert.AreEqual("public void SimplePublicMethod()", mi.ToString());
}
[TestMethod]
public void Method_WithAttributes()
{
MethodDetail mi = ExtractMethod(Subjects.One, "BasicClass", "MethodWithAttribute");
Assert.AreEqual(Status.Present, mi.Status);
CheckForAttribute(mi);
}
[TestMethod]
public void Method_Virtual()
{
MethodDetail mi = ExtractMethod(Subjects.One, "DerivedClass", "SomeMethod");
Assert.AreEqual(Status.Present, mi.Status);
Assert.AreEqual("public virtual void SomeMethod()", mi.ToString());
}
[TestMethod]
public void Method_Override()
{
MethodDetail mi = ExtractMethod(Subjects.One, "ChildClass", "SomeMethod");
Assert.AreEqual(Status.Present, mi.Status);
Assert.AreEqual("public override void SomeMethod()", mi.ToString());
}
[TestMethod]
public void Method_Abstract()
{
MethodDetail mi = ExtractMethod(Subjects.One, "AbstractClass", "SimpleAbstractMethod");
Assert.AreEqual(Status.Present, mi.Status);
Assert.AreEqual("public abstract void SimpleAbstractMethod()", mi.ToString());
}
[TestMethod]
public void Method_Static()
{
MethodDetail mi = ExtractMethod(Subjects.One, "StaticClass", "SimpleStaticMethod");
Assert.AreEqual(Status.Present, mi.Status);
Assert.AreEqual("public static void SimpleStaticMethod()", mi.ToString());
}
[TestMethod]
public void Method_Change_NoChange()
{
AssertChange("BasicClass", "BodyDoesNotChange", ChangeType.None);
}
[TestMethod]
public void Method_Change_NoChange2()
{
AssertChange("BasicClass", "BodyDoesNotChange2", ChangeType.None);
}
[TestMethod]
public void Method_Change_BodyChanges()
{
AssertChange("BasicClass", "MethodBodyChanges", ChangeType.ImplementationChanged);
}
[TestMethod]
public void Method_Change_BodyAndVisibilityChanges()
{
AssertChange("BasicClass", "MethodBecomesInternalAndBodyChanges", ChangeType.ImplementationChanged | ChangeType.VisibilityChangedBreaking);
}
[TestMethod]
public void Method_Change_SignatureChanges()
{
AssertChange("BasicClass", "MethodSignatureChanges", ChangeType.DeclarationChangedBreaking);
}
[TestMethod]
public void Method_Change_AttributeAdded()
{
AssertChange("BasicClass", "MethodFindsAttribute", ChangeType.AttributesChanged);
}
[TestMethod]
public void Method_Change_AttributeChanged()
{
AssertChange("BasicClass", "MethodAttributeChanges", ChangeType.AttributesChanged);
}
[TestMethod]
public void Method_Change_PublicRemoved()
{
AssertChange("BasicClass", "PublicMethodRemoved", ChangeType.RemovedBreaking);
}
[TestMethod]
public void Method_Change_InternalRemoved()
{
AssertChange("BasicClass", "InternalMethodRemoved", ChangeType.RemovedNonBreaking);
}
[TestMethod]
public void Method_Change_Added()
{
AssertChange("BasicClass", "InternalMethodAdded", ChangeType.Added);
}
private void AssertChange(string from, string name, ChangeType change)
{
AssertChange(from, name, change, DiffConfig.Default);
}
private void AssertChange(string from, string name, ChangeType change, DiffConfig config)
{
MemberDetail r1 = ExtractMethod(Subjects.One, from, name, config);
MemberDetail r2 = ExtractMethod(Subjects.Two, from, name, config);
Align(r1, r2);
Assert.AreEqual(change, r2.PerformCompare(r1));
}
}
}