Skip to content

Commit 269bf28

Browse files
committed
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck into next
2 parents 9a6f94d + 83b08c4 commit 269bf28

File tree

7 files changed

+425
-131
lines changed

7 files changed

+425
-131
lines changed

Rubberduck.SmartIndenter/IndenterSettings.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,22 @@ namespace Rubberduck.SmartIndenter
77
[XmlType(AnonymousType = true)]
88
public class IndenterSettings : IIndenterSettings
99
{
10-
public bool IndentEntireProcedureBody { get; set; }
11-
public bool IndentFirstCommentBlock { get; set; }
12-
public bool IndentFirstDeclarationBlock { get; set; }
13-
public bool AlignCommentsWithCode { get; set; }
14-
public bool AlignContinuations { get; set; }
15-
public bool IgnoreOperatorsInContinuations { get; set; }
16-
public bool IndentCase { get; set; }
17-
public bool ForceDebugStatementsInColumn1 { get; set; }
18-
public bool ForceCompilerDirectivesInColumn1 { get; set; }
19-
public bool IndentCompilerDirectives { get; set; }
20-
public bool AlignDims { get; set; }
21-
public int AlignDimColumn { get; set; }
22-
public bool EnableUndo { get; set; }
23-
public EndOfLineCommentStyle EndOfLineCommentStyle { get; set; }
24-
public int EndOfLineCommentColumnSpaceAlignment { get; set; }
25-
public int IndentSpaces { get; set; }
10+
public virtual bool IndentEntireProcedureBody { get; set; }
11+
public virtual bool IndentFirstCommentBlock { get; set; }
12+
public virtual bool IndentFirstDeclarationBlock { get; set; }
13+
public virtual bool AlignCommentsWithCode { get; set; }
14+
public virtual bool AlignContinuations { get; set; }
15+
public virtual bool IgnoreOperatorsInContinuations { get; set; }
16+
public virtual bool IndentCase { get; set; }
17+
public virtual bool ForceDebugStatementsInColumn1 { get; set; }
18+
public virtual bool ForceCompilerDirectivesInColumn1 { get; set; }
19+
public virtual bool IndentCompilerDirectives { get; set; }
20+
public virtual bool AlignDims { get; set; }
21+
public virtual int AlignDimColumn { get; set; }
22+
public virtual bool EnableUndo { get; set; }
23+
public virtual EndOfLineCommentStyle EndOfLineCommentStyle { get; set; }
24+
public virtual int EndOfLineCommentColumnSpaceAlignment { get; set; }
25+
public virtual int IndentSpaces { get; set; }
2626

2727
public IndenterSettings()
2828
{

RubberduckTests/Settings/IndenterSettingsTests.cs

Lines changed: 123 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,143 @@
11
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using Moq;
23
using Rubberduck.Settings;
34
using Rubberduck.SmartIndenter;
5+
using Rubberduck.UI;
46
using Rubberduck.UI.Settings;
57

68
namespace RubberduckTests.Settings
79
{
810
[TestClass]
911
public class IndenterSettingsTests
1012
{
13+
#region Defaults
14+
private const bool DefaultIndentEntireProcedureBody = true;
15+
private const bool DefaultIndentFirstCommentBlock = true;
16+
private const bool DefaultIndentFirstDeclarationBlock = true;
17+
private const bool DefaultAlignCommentsWithCode = true;
18+
private const bool DefaultAlignContinuations = true;
19+
private const bool DefaultIgnoreOperatorsInContinuations = true;
20+
private const bool DefaultIndentCase = false;
21+
private const bool DefaultForceDebugStatementsInColumn1 = false;
22+
private const bool DefaultForceCompilerDirectivesInColumn1 = false;
23+
private const bool DefaultIndentCompilerDirectives = true;
24+
private const bool DefaultAlignDims = false;
25+
private const int DefaultAlignDimColumn = 15;
26+
private const bool DefaultEnableUndo = true;
27+
private const EndOfLineCommentStyle DefaultEndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn;
28+
private const int DefaultEndOfLineCommentColumnSpaceAlignment = 50;
29+
private const int DefaultIndentSpaces = 4;
30+
#endregion
31+
32+
#region Nondefaults
33+
private const bool NondefaultIndentEntireProcedureBody = false;
34+
private const bool NondefaultIndentFirstCommentBlock = false;
35+
private const bool NondefaultIndentFirstDeclarationBlock = false;
36+
private const bool NondefaultAlignCommentsWithCode = false;
37+
private const bool NondefaultAlignContinuations = false;
38+
private const bool NondefaultIgnoreOperatorsInContinuations = false;
39+
private const bool NondefaultIndentCase = true;
40+
private const bool NondefaultForceDebugStatementsInColumn1 = true;
41+
private const bool NondefaultForceCompilerDirectivesInColumn1 = true;
42+
private const bool NondefaultIndentCompilerDirectives = false;
43+
private const bool NondefaultAlignDims = true;
44+
private const int NondefaultAlignDimColumn = 16;
45+
private const bool NondefaultEnableUndo = false;
46+
private const EndOfLineCommentStyle NondefaultEndOfLineCommentStyle = EndOfLineCommentStyle.Absolute;
47+
private const int NondefaultEndOfLineCommentColumnSpaceAlignment = 60;
48+
private const int NondefaultIndentSpaces = 2;
49+
#endregion
50+
51+
public static Rubberduck.SmartIndenter.IndenterSettings GetMockIndenterSettings(bool nondefault = false)
52+
{
53+
var output = new Mock<Rubberduck.SmartIndenter.IndenterSettings>();
54+
55+
output.SetupProperty(s => s.IndentEntireProcedureBody);
56+
output.SetupProperty(s => s.IndentFirstCommentBlock);
57+
output.SetupProperty(s => s.IndentFirstDeclarationBlock);
58+
output.SetupProperty(s => s.AlignCommentsWithCode);
59+
output.SetupProperty(s => s.AlignContinuations);
60+
output.SetupProperty(s => s.IgnoreOperatorsInContinuations);
61+
output.SetupProperty(s => s.IndentCase);
62+
output.SetupProperty(s => s.ForceDebugStatementsInColumn1);
63+
output.SetupProperty(s => s.ForceCompilerDirectivesInColumn1);
64+
output.SetupProperty(s => s.IndentCompilerDirectives);
65+
output.SetupProperty(s => s.AlignDims);
66+
output.SetupProperty(s => s.AlignDimColumn);
67+
output.SetupProperty(s => s.EnableUndo);
68+
output.SetupProperty(s => s.EndOfLineCommentStyle);
69+
output.SetupProperty(s => s.EndOfLineCommentColumnSpaceAlignment);
70+
output.SetupProperty(s => s.IndentSpaces);
71+
72+
output.Object.IndentEntireProcedureBody = nondefault ? NondefaultIndentEntireProcedureBody : DefaultIndentEntireProcedureBody;
73+
output.Object.IndentFirstCommentBlock = nondefault ? NondefaultIndentFirstCommentBlock : DefaultIndentFirstCommentBlock;
74+
output.Object.IndentFirstDeclarationBlock = nondefault ? NondefaultIndentFirstDeclarationBlock : DefaultIndentFirstDeclarationBlock;
75+
output.Object.AlignCommentsWithCode = nondefault ? NondefaultAlignCommentsWithCode : DefaultAlignCommentsWithCode;
76+
output.Object.AlignContinuations = nondefault ? NondefaultAlignContinuations : DefaultAlignContinuations;
77+
output.Object.IgnoreOperatorsInContinuations = nondefault ? NondefaultIgnoreOperatorsInContinuations : DefaultIgnoreOperatorsInContinuations;
78+
output.Object.IndentCase = nondefault ? NondefaultIndentCase : DefaultIndentCase;
79+
output.Object.ForceDebugStatementsInColumn1 = nondefault ? NondefaultForceDebugStatementsInColumn1 : DefaultForceDebugStatementsInColumn1;
80+
output.Object.ForceCompilerDirectivesInColumn1 = nondefault ? NondefaultForceCompilerDirectivesInColumn1 : DefaultForceCompilerDirectivesInColumn1;
81+
output.Object.IndentCompilerDirectives = nondefault ? NondefaultIndentCompilerDirectives : DefaultIndentCompilerDirectives;
82+
output.Object.AlignDims = nondefault ? NondefaultAlignDims : DefaultAlignDims;
83+
output.Object.AlignDimColumn = nondefault ? NondefaultAlignDimColumn : DefaultAlignDimColumn;
84+
output.Object.EnableUndo = nondefault ? NondefaultEnableUndo : DefaultEnableUndo;
85+
output.Object.EndOfLineCommentStyle = nondefault ? NondefaultEndOfLineCommentStyle : DefaultEndOfLineCommentStyle;
86+
output.Object.EndOfLineCommentColumnSpaceAlignment = nondefault ? NondefaultEndOfLineCommentColumnSpaceAlignment : DefaultEndOfLineCommentColumnSpaceAlignment;
87+
output.Object.IndentSpaces = nondefault ? NondefaultIndentSpaces : DefaultIndentSpaces;
88+
89+
return output.Object;
90+
}
91+
1192
private Configuration GetDefaultConfig()
1293
{
13-
var indenterSettings = new Rubberduck.SmartIndenter.IndenterSettings
14-
{
15-
IndentEntireProcedureBody = true,
16-
IndentFirstCommentBlock = true,
17-
IndentFirstDeclarationBlock = true,
18-
AlignCommentsWithCode = true,
19-
AlignContinuations = true,
20-
IgnoreOperatorsInContinuations = true,
21-
IndentCase = false,
22-
ForceDebugStatementsInColumn1 = false,
23-
ForceCompilerDirectivesInColumn1 = false,
24-
IndentCompilerDirectives = true,
25-
AlignDims = false,
26-
AlignDimColumn = 15,
27-
EnableUndo = true,
28-
EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn,
29-
EndOfLineCommentColumnSpaceAlignment = 50,
30-
IndentSpaces = 4
31-
};
32-
33-
var userSettings = new UserSettings(null, null, null, null, null, indenterSettings);
94+
//var indenterSettings = GetTestIndenterSettings();
95+
//{
96+
// indenterSettings.IndentEntireProcedureBody = true,
97+
// indenterSettings.IndentFirstCommentBlock = true,
98+
// indenterSettings.IndentFirstDeclarationBlock = true,
99+
// indenterSettings.AlignCommentsWithCode = true,
100+
// indenterSettings.AlignContinuations = true,
101+
// IgnoreOperatorsInContinuations = true,
102+
// IndentCase = false,
103+
// ForceDebugStatementsInColumn1 = false,
104+
// ForceCompilerDirectivesInColumn1 = false,
105+
// IndentCompilerDirectives = true,
106+
// AlignDims = false,
107+
// AlignDimColumn = 15,
108+
// EnableUndo = true,
109+
// EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn,
110+
// EndOfLineCommentColumnSpaceAlignment = 50,
111+
// IndentSpaces = 4
112+
//};
113+
114+
var userSettings = new UserSettings(null, null, null, null, null, GetMockIndenterSettings());
34115
return new Configuration(userSettings);
35116
}
36117

37118
private Configuration GetNondefaultConfig()
38119
{
39-
var indenterSettings = new Rubberduck.SmartIndenter.IndenterSettings
40-
{
41-
IndentEntireProcedureBody = false,
42-
IndentFirstCommentBlock = false,
43-
IndentFirstDeclarationBlock = false,
44-
AlignCommentsWithCode = false,
45-
AlignContinuations = false,
46-
IgnoreOperatorsInContinuations = false,
47-
IndentCase = true,
48-
ForceDebugStatementsInColumn1 = true,
49-
ForceCompilerDirectivesInColumn1 = true,
50-
IndentCompilerDirectives = false,
51-
AlignDims = true,
52-
AlignDimColumn = 16,
53-
EnableUndo = false,
54-
EndOfLineCommentStyle = EndOfLineCommentStyle.Absolute,
55-
EndOfLineCommentColumnSpaceAlignment = 60,
56-
IndentSpaces = 2
57-
};
58-
59-
var userSettings = new UserSettings(null, null, null, null, null, indenterSettings);
120+
//var indenterSettings = new Rubberduck.SmartIndenter.IndenterSettings
121+
//{
122+
// IndentEntireProcedureBody = false,
123+
// IndentFirstCommentBlock = false,
124+
// IndentFirstDeclarationBlock = false,
125+
// AlignCommentsWithCode = false,
126+
// AlignContinuations = false,
127+
// IgnoreOperatorsInContinuations = false,
128+
// IndentCase = true,
129+
// ForceDebugStatementsInColumn1 = true,
130+
// ForceCompilerDirectivesInColumn1 = true,
131+
// IndentCompilerDirectives = false,
132+
// AlignDims = true,
133+
// AlignDimColumn = 16,
134+
// EnableUndo = false,
135+
// EndOfLineCommentStyle = EndOfLineCommentStyle.Absolute,
136+
// EndOfLineCommentColumnSpaceAlignment = 60,
137+
// IndentSpaces = 2
138+
//};
139+
140+
var userSettings = new UserSettings(null, null, null, null, null, GetMockIndenterSettings(true));
60141
return new Configuration(userSettings);
61142
}
62143

RubberduckTests/SmartIndenter/EndOfLineCommentTests.cs

Lines changed: 56 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Linq;
22
using Microsoft.VisualStudio.TestTools.UnitTesting;
33
using Rubberduck.SmartIndenter;
4+
using RubberduckTests.Settings;
45

56
namespace RubberduckTests.SmartIndenter
67
{
@@ -25,7 +26,12 @@ public void AbsolutePositionWorks()
2526
"End Sub"
2627
};
2728

28-
var indenter = new Indenter(null, () => new IndenterSettings { EndOfLineCommentStyle = EndOfLineCommentStyle.Absolute });
29+
var indenter = new Indenter(null, () =>
30+
{
31+
var s = IndenterSettingsTests.GetMockIndenterSettings();
32+
s.EndOfLineCommentStyle = EndOfLineCommentStyle.Absolute;
33+
return s;
34+
});
2935
var actual = indenter.Indent(code, string.Empty);
3036
Assert.IsTrue(expected.SequenceEqual(actual));
3137
}
@@ -48,7 +54,12 @@ public void SameGapWorks()
4854
"End Sub"
4955
};
5056

51-
var indenter = new Indenter(null, () => new IndenterSettings { EndOfLineCommentStyle = EndOfLineCommentStyle.SameGap });
57+
var indenter = new Indenter(null, () =>
58+
{
59+
var s = IndenterSettingsTests.GetMockIndenterSettings();
60+
s.EndOfLineCommentStyle = EndOfLineCommentStyle.SameGap;
61+
return s;
62+
});
5263
var actual = indenter.Indent(code, string.Empty);
5364
Assert.IsTrue(expected.SequenceEqual(actual));
5465
}
@@ -71,7 +82,13 @@ public void StandardGapWorks()
7182
"End Sub"
7283
};
7384

74-
var indenter = new Indenter(null, () => new IndenterSettings { EndOfLineCommentStyle = EndOfLineCommentStyle.StandardGap });
85+
86+
var indenter = new Indenter(null, () =>
87+
{
88+
var s = IndenterSettingsTests.GetMockIndenterSettings();
89+
s.EndOfLineCommentStyle = EndOfLineCommentStyle.StandardGap;
90+
return s;
91+
});
7592
var actual = indenter.Indent(code, string.Empty);
7693
Assert.IsTrue(expected.SequenceEqual(actual));
7794
}
@@ -94,7 +111,12 @@ public void AlignInColumnWorks()
94111
"End Sub"
95112
};
96113

97-
var indenter = new Indenter(null, () => new IndenterSettings { EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn });
114+
var indenter = new Indenter(null, () =>
115+
{
116+
var s = IndenterSettingsTests.GetMockIndenterSettings();
117+
s.EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn;
118+
return s;
119+
});
98120
var actual = indenter.Indent(code, string.Empty);
99121
Assert.IsTrue(expected.SequenceEqual(actual));
100122
}
@@ -117,7 +139,12 @@ public void AlignInColumnFallsBackToOneSpace()
117139
"End Sub"
118140
};
119141

120-
var indenter = new Indenter(null, () => new IndenterSettings { EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn });
142+
var indenter = new Indenter(null, () =>
143+
{
144+
var s = IndenterSettingsTests.GetMockIndenterSettings();
145+
s.EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn;
146+
return s;
147+
});
121148
var actual = indenter.Indent(code, string.Empty);
122149
Assert.IsTrue(expected.SequenceEqual(actual));
123150
}
@@ -140,7 +167,12 @@ public void AbsoluteFallsBackToOneSpace()
140167
"End Sub"
141168
};
142169

143-
var indenter = new Indenter(null, () => new IndenterSettings { EndOfLineCommentStyle = EndOfLineCommentStyle.Absolute });
170+
var indenter = new Indenter(null, () =>
171+
{
172+
var s = IndenterSettingsTests.GetMockIndenterSettings();
173+
s.EndOfLineCommentStyle = EndOfLineCommentStyle.Absolute;
174+
return s;
175+
});
144176
var actual = indenter.Indent(code, string.Empty);
145177
Assert.IsTrue(expected.SequenceEqual(actual));
146178
}
@@ -163,8 +195,12 @@ public void CommentOnlyLineIgnoresEndOfLineSetting()
163195
"End Sub"
164196
};
165197

166-
var indenter = new Indenter(null,
167-
() => new IndenterSettings { EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn });
198+
var indenter = new Indenter(null, () =>
199+
{
200+
var s = IndenterSettingsTests.GetMockIndenterSettings();
201+
s.EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn;
202+
return s;
203+
});
168204
var actual = indenter.Indent(code, string.Empty);
169205
Assert.IsTrue(expected.SequenceEqual(actual));
170206
}
@@ -187,8 +223,12 @@ public void WorksOutsideOfProcedures()
187223
"End Sub"
188224
};
189225

190-
var indenter = new Indenter(null,
191-
() => new IndenterSettings { EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn });
226+
var indenter = new Indenter(null, () =>
227+
{
228+
var s = IndenterSettingsTests.GetMockIndenterSettings();
229+
s.EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn;
230+
return s;
231+
});
192232
var actual = indenter.Indent(code, string.Empty);
193233
Assert.IsTrue(expected.SequenceEqual(actual));
194234
}
@@ -213,8 +253,12 @@ public void WorksInsideEnums()
213253
"End Enum"
214254
};
215255

216-
var indenter = new Indenter(null,
217-
() => new IndenterSettings { EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn });
256+
var indenter = new Indenter(null, () =>
257+
{
258+
var s = IndenterSettingsTests.GetMockIndenterSettings();
259+
s.EndOfLineCommentStyle = EndOfLineCommentStyle.AlignInColumn;
260+
return s;
261+
});
218262
var actual = indenter.Indent(code, string.Empty);
219263
Assert.IsTrue(expected.SequenceEqual(actual));
220264
}

0 commit comments

Comments
 (0)