1
- using NUnit . Framework ;
1
+ using Microsoft . Win32 ;
2
+ using Moq ;
3
+ using NUnit . Framework ;
2
4
using Rubberduck . VBERuntime ;
3
5
using RubberduckTests . Mocks ;
4
6
@@ -7,13 +9,25 @@ namespace RubberduckTests.VBE
7
9
[ TestFixture ]
8
10
public class VBESettingsTests
9
11
{
12
+ private const string Vbe7SettingPath = @"HKEY_CURRENT_USER\Software\Microsoft\VBA\7.0\Common" ;
13
+ private const string Vbe6SettingPath = @"HKEY_CURRENT_USER\Software\Microsoft\VBA\6.0\Common" ;
14
+ private const int DWordFalseValue = 0 ;
15
+ private const int DWordTrueValue = 1 ;
16
+
17
+ private Mock < IRegistryWrapper > GetRegistryMock ( )
18
+ {
19
+ return new Mock < IRegistryWrapper > ( ) ;
20
+ }
21
+
10
22
[ Category ( "VBE" ) ]
11
23
[ Test ]
12
24
public void DllVersion_MustBe6 ( )
13
25
{
14
26
var vbe = new MockVbeBuilder ( ) . Build ( ) ;
27
+ var registry = GetRegistryMock ( ) ;
28
+
15
29
vbe . SetupGet ( s => s . Version ) . Returns ( "6.00" ) ;
16
- var settings = new VBESettings ( vbe . Object ) ;
30
+ var settings = new VBESettings ( vbe . Object , registry . Object ) ;
17
31
18
32
Assert . IsTrue ( settings . Version == VBESettings . DllVersion . Vbe6 ) ;
19
33
}
@@ -23,8 +37,10 @@ public void DllVersion_MustBe6()
23
37
public void DllVersion_MustBe7 ( )
24
38
{
25
39
var vbe = new MockVbeBuilder ( ) . Build ( ) ;
40
+ var registry = GetRegistryMock ( ) ;
41
+
26
42
vbe . SetupGet ( s => s . Version ) . Returns ( "7.00" ) ;
27
- var settings = new VBESettings ( vbe . Object ) ;
43
+ var settings = new VBESettings ( vbe . Object , registry . Object ) ;
28
44
29
45
Assert . IsTrue ( settings . Version == VBESettings . DllVersion . Vbe7 ) ;
30
46
}
@@ -34,8 +50,10 @@ public void DllVersion_MustBe7()
34
50
public void DllVersion_IsBogus ( )
35
51
{
36
52
var vbe = new MockVbeBuilder ( ) . Build ( ) ;
53
+ var registry = GetRegistryMock ( ) ;
54
+
37
55
vbe . SetupGet ( s => s . Version ) . Returns ( "foo" ) ;
38
- var settings = new VBESettings ( vbe . Object ) ;
56
+ var settings = new VBESettings ( vbe . Object , registry . Object ) ;
39
57
40
58
Assert . IsTrue ( settings . Version == VBESettings . DllVersion . Unknown ) ;
41
59
}
@@ -45,38 +63,44 @@ public void DllVersion_IsBogus()
45
63
public void DllVersion_IsNull ( )
46
64
{
47
65
var vbe = new MockVbeBuilder ( ) . Build ( ) ;
66
+ var registry = GetRegistryMock ( ) ;
67
+
48
68
vbe . SetupGet ( s => s . Version ) . Returns ( ( string ) null ) ;
49
- var settings = new VBESettings ( vbe . Object ) ;
69
+ var settings = new VBESettings ( vbe . Object , registry . Object ) ;
50
70
51
71
Assert . IsTrue ( settings . Version == VBESettings . DllVersion . Unknown ) ;
52
72
}
53
73
54
74
[ Category ( "VBE" ) ]
55
75
[ Test ]
56
- public void CompileOnDemand_WriteRead ( )
76
+ public void CompileOnDemand_Write_IsTrue ( )
57
77
{
58
78
var vbe = new MockVbeBuilder ( ) . Build ( ) ;
79
+ var registry = GetRegistryMock ( ) ;
80
+
59
81
vbe . SetupGet ( s => s . Version ) . Returns ( "7.00" ) ;
60
- var settings = new VBESettings ( vbe . Object ) ;
82
+ registry . Setup ( s => s . SetValue ( Vbe7SettingPath , "CompileOnDemand" , true , RegistryValueKind . DWord ) ) ;
83
+ registry . Setup ( s => s . GetValue ( Vbe7SettingPath , "CompileOnDemand" , DWordFalseValue ) ) . Returns ( DWordTrueValue ) ;
84
+
85
+ var settings = new VBESettings ( vbe . Object , registry . Object ) ;
61
86
62
87
settings . CompileOnDemand = true ;
63
88
Assert . IsTrue ( settings . CompileOnDemand ) ;
64
-
65
- settings . CompileOnDemand = false ;
66
- Assert . IsTrue ( settings . CompileOnDemand == false ) ;
67
89
}
68
90
69
91
[ Category ( "VBE" ) ]
70
92
[ Test ]
71
- public void BackGroundCompile_WriteRead ( )
93
+ public void BackGroundCompile_Write_IsFalse ( )
72
94
{
73
95
var vbe = new MockVbeBuilder ( ) . Build ( ) ;
74
- vbe . SetupGet ( s => s . Version ) . Returns ( "7.00" ) ;
75
- var settings = new VBESettings ( vbe . Object ) ;
96
+ var registry = GetRegistryMock ( ) ;
76
97
77
- settings . BackGroundCompile = true ;
78
- Assert . IsTrue ( settings . BackGroundCompile ) ;
98
+ vbe . SetupGet ( s => s . Version ) . Returns ( "7.00" ) ;
99
+ registry . Setup ( s => s . SetValue ( Vbe7SettingPath , "BackGroundCompile" , false , RegistryValueKind . DWord ) ) ;
100
+ registry . Setup ( s => s . GetValue ( Vbe7SettingPath , "BackGroundCompile" , DWordFalseValue ) ) . Returns ( DWordFalseValue ) ;
79
101
102
+ var settings = new VBESettings ( vbe . Object , registry . Object ) ;
103
+
80
104
settings . BackGroundCompile = false ;
81
105
Assert . IsTrue ( settings . BackGroundCompile == false ) ;
82
106
}
0 commit comments