Skip to content

Commit 492cce6

Browse files
committed
Tests for various special declaration types.
1 parent e2fd8ca commit 492cce6

6 files changed

+334
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
3+
using Rubberduck.Parsing.Symbols;
4+
using Rubberduck.VBEditor;
5+
6+
namespace RubberduckTests.Symbols
7+
{
8+
[TestClass]
9+
public class ConstantDeclarationTests
10+
{
11+
[TestMethod]
12+
public void ExpressionReturnsTheContructorInjectedValue()
13+
{
14+
var value = "testtest";
15+
var constantName = new QualifiedMemberName(StubQualifiedModuleName(),"testConstant");
16+
var constantDeclaration = new ConstantDeclaration(constantName, null, "test", "test", null, "test", null, Accessibility.Implicit, DeclarationType.Constant, value, null, Selection.Home, false);
17+
18+
Assert.AreEqual<string>(value, constantDeclaration.Expression);
19+
}
20+
21+
private static QualifiedModuleName StubQualifiedModuleName()
22+
{
23+
return new QualifiedModuleName("dummy", "dummy", "dummy");
24+
}
25+
}
26+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using System;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
3+
using System.Linq;
4+
using Rubberduck.Parsing.Symbols;
5+
using Rubberduck.VBEditor;
6+
7+
namespace RubberduckTests.Symbols
8+
{
9+
[TestClass]
10+
public class ExternalProcedureDeclarationTests
11+
{
12+
[TestMethod]
13+
public void ByDefaultExternalProceduresDoNotHaveParameters()
14+
{
15+
var externalProcedure = GetTestExternalProcedure("testProcedure");
16+
17+
Assert.IsFalse(externalProcedure.Parameters.Any());
18+
}
19+
20+
private static ExternalProcedureDeclaration GetTestExternalProcedure(string name)
21+
{
22+
var qualifiedProcedureName = new QualifiedMemberName(StubQualifiedModuleName(), name);
23+
return new ExternalProcedureDeclaration(qualifiedProcedureName, null, null, DeclarationType.Procedure, "test", null, Accessibility.Public, null, Selection.Home, false, null);
24+
}
25+
26+
private static QualifiedModuleName StubQualifiedModuleName()
27+
{
28+
return new QualifiedModuleName("dummy", "dummy", "dummy");
29+
}
30+
31+
32+
[TestMethod]
33+
public void ParametersReturnsTheParametersAddedViaAddParameters()
34+
{
35+
var externalProcedure = GetTestExternalProcedure("testProcedure");
36+
var inputParameter = GetTestParameter("testParameter", false, false, false);
37+
externalProcedure.AddParameter(inputParameter);
38+
var returnedParameter = externalProcedure.Parameters.SingleOrDefault();
39+
40+
Assert.AreEqual(returnedParameter, inputParameter);
41+
}
42+
43+
private static ParameterDeclaration GetTestParameter(string name, bool isOptional, bool isByRef, bool isParamArray)
44+
{
45+
var qualifiedParameterName = new QualifiedMemberName(StubQualifiedModuleName(), name);
46+
return new ParameterDeclaration(qualifiedParameterName, null, "test", null, "test", isOptional, isByRef, false, isParamArray);
47+
}
48+
49+
}
50+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
using System;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
3+
using System.Linq;
4+
using Rubberduck.Parsing.Symbols;
5+
using Rubberduck.VBEditor;
6+
using Rubberduck.Parsing.VBA;
7+
8+
namespace RubberduckTests.Symbols
9+
{
10+
[TestClass]
11+
public class FunctionDeclarationTests
12+
{
13+
[TestMethod]
14+
public void FunctionsHaveDeclarationTypeFunction()
15+
{
16+
var function = GetTestFunction("testFoo", null);
17+
18+
Assert.IsTrue(function.DeclarationType.HasFlag(DeclarationType.Function));
19+
}
20+
21+
private static FunctionDeclaration GetTestFunction(string name, Attributes attributes)
22+
{
23+
var qualifiedName = new QualifiedMemberName(StubQualifiedModuleName(), name);
24+
return new FunctionDeclaration(qualifiedName, null, null, "test", null, "test", Accessibility.Implicit, null, Selection.Home, false, false, null, attributes);
25+
}
26+
27+
private static QualifiedModuleName StubQualifiedModuleName()
28+
{
29+
return new QualifiedModuleName("dummy", "dummy", "dummy");
30+
}
31+
32+
33+
[TestMethod]
34+
public void ByDefaultFunctionsDoNotHaveParameters()
35+
{
36+
var function = GetTestFunction("testFoo", null);
37+
38+
Assert.IsFalse(function.Parameters.Any());
39+
}
40+
41+
42+
[TestMethod]
43+
public void ParametersReturnsTheParametersAddedViaAddParameters()
44+
{
45+
var function = GetTestFunction("testFoo", null);
46+
var inputParameter = GetTestParameter("testParameter", false, false, false);
47+
function.AddParameter(inputParameter);
48+
var returnedParameter = function.Parameters.SingleOrDefault();
49+
50+
Assert.AreEqual(returnedParameter, inputParameter);
51+
}
52+
53+
private static ParameterDeclaration GetTestParameter(string name, bool isOptional, bool isByRef, bool isParamArray)
54+
{
55+
var qualifiedParameterName = new QualifiedMemberName(StubQualifiedModuleName(), name);
56+
return new ParameterDeclaration(qualifiedParameterName, null, "test", null, "test", isOptional, isByRef, false, isParamArray);
57+
}
58+
59+
60+
[TestMethod]
61+
public void ByDefaultFunctionsAreNotDefaultMembers()
62+
{
63+
var function = GetTestFunction("testFoo", null);
64+
65+
Assert.IsFalse(function.IsDefaultMember);
66+
}
67+
68+
69+
[TestMethod]
70+
public void FunctionsAreDefaultMembersIfTheyHaveTheDefaultMemberAttribute()
71+
{
72+
var attributes = new Attributes();
73+
attributes.AddDefaultMemberAttribute("testFoo");
74+
var function = GetTestFunction("testFoo", attributes);
75+
76+
Assert.IsTrue(function.IsDefaultMember);
77+
}
78+
}
79+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using System;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
3+
using Rubberduck.Parsing.Symbols;
4+
using Rubberduck.VBEditor;
5+
6+
namespace RubberduckTests.Symbols
7+
{
8+
[TestClass]
9+
public class ParameterDeclarationTests
10+
{
11+
[TestMethod]
12+
public void ParametersHaveDeclarationTypeParameter()
13+
{
14+
var paramter = GetTestParameter("testParam", false, false, false);
15+
16+
Assert.IsTrue(paramter.DeclarationType.HasFlag(DeclarationType.Parameter));
17+
}
18+
19+
private static ParameterDeclaration GetTestParameter(string name, bool isOptional, bool isByRef, bool isParamArray)
20+
{
21+
var qualifiedParameterName = new QualifiedMemberName(StubQualifiedModuleName(), name);
22+
return new ParameterDeclaration(qualifiedParameterName, null, "test", null,"test", isOptional,isByRef, false, isParamArray);
23+
}
24+
25+
private static QualifiedModuleName StubQualifiedModuleName()
26+
{
27+
return new QualifiedModuleName("dummy", "dummy", "dummy");
28+
}
29+
30+
31+
[TestMethod]
32+
public void ParametersHaveImpliciteAccessibility()
33+
{
34+
var paramter = GetTestParameter("testParam", false, false, false);
35+
36+
Assert.IsTrue(paramter.Accessibility.HasFlag(Accessibility.Implicit));
37+
}
38+
39+
40+
[TestMethod]
41+
public void IsParamArrayCanBeSetPublicly()
42+
{
43+
var paramter = GetTestParameter("testParam", false, false, false);
44+
paramter.IsParamArray = true;
45+
46+
Assert.IsTrue(paramter.IsParamArray);
47+
}
48+
49+
}
50+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
using System;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
3+
using Rubberduck.Parsing.Symbols;
4+
using Rubberduck.VBEditor;
5+
using Rubberduck.Parsing.VBA;
6+
7+
namespace RubberduckTests.Symbols
8+
{
9+
[TestClass]
10+
public class ProceduralModuleDeclarationTests
11+
{
12+
[TestMethod]
13+
public void ProceduralModulesHaveDeclarationTypeProceduralModule()
14+
{
15+
var projectDeclaration = GetTestProject("testProject");
16+
var proceduralModule = GetTestProceduralModule(projectDeclaration, "testModule", false, null);
17+
18+
Assert.IsTrue(proceduralModule.DeclarationType.HasFlag(DeclarationType.ProceduralModule));
19+
}
20+
21+
private static ProjectDeclaration GetTestProject(string name)
22+
{
23+
var qualifiedProjectName = new QualifiedMemberName(StubQualifiedModuleName(), name);
24+
return new ProjectDeclaration(qualifiedProjectName, name, false);
25+
}
26+
27+
private static QualifiedModuleName StubQualifiedModuleName()
28+
{
29+
return new QualifiedModuleName("dummy", "dummy", "dummy");
30+
}
31+
32+
private static ProceduralModuleDeclaration GetTestProceduralModule(Declaration projectDeclatation, string name, bool isBuiltIn, Attributes attributes)
33+
{
34+
var qualifiedProceduralModuleMemberName = new QualifiedMemberName(StubQualifiedModuleName(), name);
35+
return new ProceduralModuleDeclaration(qualifiedProceduralModuleMemberName, projectDeclatation, name, isBuiltIn, null, attributes);
36+
}
37+
38+
39+
[TestMethod]
40+
public void ByDefaultProceduralModulesAreNotPrivate()
41+
{
42+
var projectDeclaration = GetTestProject("testProject");
43+
var proceduralModule = GetTestProceduralModule(projectDeclaration, "testModule", false, null);
44+
45+
Assert.IsFalse(proceduralModule.IsPrivateModule);
46+
}
47+
48+
}
49+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
using System;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
3+
using System.Linq;
4+
using Rubberduck.Parsing.Symbols;
5+
using Rubberduck.VBEditor;
6+
using Rubberduck.Parsing.VBA;
7+
8+
namespace RubberduckTests.Symbols
9+
{
10+
[TestClass]
11+
public class SubroutineDeclarationTests
12+
{
13+
[TestMethod]
14+
public void SubroutinesHaveDeclarationTypeProcedure()
15+
{
16+
var subroutine = GetTestSub("testSub", null);
17+
18+
Assert.IsTrue(subroutine.DeclarationType.HasFlag(DeclarationType.Procedure));
19+
}
20+
21+
private static SubroutineDeclaration GetTestSub(string name, Attributes attributes)
22+
{
23+
var qualifiedName = new QualifiedMemberName(StubQualifiedModuleName(), name);
24+
return new SubroutineDeclaration(qualifiedName, null, null, "test", Accessibility.Implicit, null, Selection.Home, false, null, attributes);
25+
}
26+
27+
private static QualifiedModuleName StubQualifiedModuleName()
28+
{
29+
return new QualifiedModuleName("dummy", "dummy", "dummy");
30+
}
31+
32+
33+
[TestMethod]
34+
public void ByDefaultSubroutinesDoNotHaveParameters()
35+
{
36+
var subroutine = GetTestSub("testSub", null);
37+
38+
Assert.IsFalse(subroutine.Parameters.Any());
39+
}
40+
41+
42+
[TestMethod]
43+
public void ParametersReturnsTheParametersAddedViaAddParameters()
44+
{
45+
var subroutine = GetTestSub("testSub", null);
46+
var inputParameter = GetTestParameter("testParameter", false, false, false);
47+
subroutine.AddParameter(inputParameter);
48+
var returnedParameter = subroutine.Parameters.SingleOrDefault();
49+
50+
Assert.AreEqual(returnedParameter, inputParameter);
51+
}
52+
53+
private static ParameterDeclaration GetTestParameter(string name, bool isOptional, bool isByRef, bool isParamArray)
54+
{
55+
var qualifiedParameterName = new QualifiedMemberName(StubQualifiedModuleName(), name);
56+
return new ParameterDeclaration(qualifiedParameterName, null, "test", null, "test", isOptional, isByRef, false, isParamArray);
57+
}
58+
59+
60+
[TestMethod]
61+
public void ByDefaultSubroutinesAreNotDefaultMembers()
62+
{
63+
var subroutine = GetTestSub("testSub", null);
64+
65+
Assert.IsFalse(subroutine.IsDefaultMember);
66+
}
67+
68+
69+
[TestMethod]
70+
public void SubroutinesAreDefaultMembersIfTheyHaveTheDefaultMemberAttribute()
71+
{
72+
var attributes = new Attributes();
73+
attributes.AddDefaultMemberAttribute("testSub");
74+
var subroutine = GetTestSub("testSub", attributes);
75+
76+
Assert.IsTrue(subroutine.IsDefaultMember);
77+
}
78+
79+
}
80+
}

0 commit comments

Comments
 (0)