@@ -1038,13 +1038,192 @@ public void CompareByType_ReturnsZeroForErrorNodes()
10381038 }
10391039
10401040 [ TestMethod ]
1041- public void CompareByType_ReturnsFieldBelowSub ( )
1041+ public void CompareByType_ReturnsEventAboveConst ( )
10421042 {
10431043 var inputCode =
1044- @"Public Foo As Boolean
1044+ @"Public Event Foo(ByVal arg1 As Integer, ByVal arg2 As String)
1045+ Public Const Bar = 0" ;
10451046
1046- Sub Bar()
1047- End Sub" ;
1047+ var builder = new MockVbeBuilder ( ) ;
1048+ VBComponent component ;
1049+ var vbe = builder . BuildFromSingleStandardModule ( inputCode , out component ) ;
1050+ var mockHost = new Mock < IHostApplication > ( ) ;
1051+ mockHost . SetupAllProperties ( ) ;
1052+
1053+ var state = new RubberduckParserState ( ) ;
1054+ var commands = new List < ICommand > ( ) ;
1055+
1056+ var vm = new CodeExplorerViewModel ( new FolderHelper ( state , GetDelimiterConfigLoader ( ) ) , state , commands ) ;
1057+
1058+ var parser = MockParser . Create ( vbe . Object , state ) ;
1059+ parser . Parse ( ) ;
1060+
1061+ var eventNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Foo" ) ;
1062+ var constNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Bar = 0" ) ;
1063+
1064+ Assert . AreEqual ( - 1 , new CompareByType ( ) . Compare ( eventNode , constNode ) ) ;
1065+ }
1066+
1067+ [ TestMethod ]
1068+ public void CompareByType_ReturnsConstAboveField ( )
1069+ {
1070+ var inputCode =
1071+ @"Public Const Foo = 0
1072+ Public Bar As Boolean" ;
1073+
1074+ var builder = new MockVbeBuilder ( ) ;
1075+ VBComponent component ;
1076+ var vbe = builder . BuildFromSingleStandardModule ( inputCode , out component ) ;
1077+ var mockHost = new Mock < IHostApplication > ( ) ;
1078+ mockHost . SetupAllProperties ( ) ;
1079+
1080+ var state = new RubberduckParserState ( ) ;
1081+ var commands = new List < ICommand > ( ) ;
1082+
1083+ var vm = new CodeExplorerViewModel ( new FolderHelper ( state , GetDelimiterConfigLoader ( ) ) , state , commands ) ;
1084+
1085+ var parser = MockParser . Create ( vbe . Object , state ) ;
1086+ parser . Parse ( ) ;
1087+
1088+ var constNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Foo = 0" ) ;
1089+ var fieldNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Bar" ) ;
1090+
1091+ Assert . AreEqual ( - 1 , new CompareByType ( ) . Compare ( constNode , fieldNode ) ) ;
1092+ }
1093+
1094+ [ TestMethod ]
1095+ public void CompareByType_ReturnsFieldAbovePropertyGet ( )
1096+ {
1097+ var inputCode =
1098+ @"Private Bar As Boolean
1099+
1100+ Public Property Get Foo() As Variant
1101+ End Property
1102+ " ;
1103+
1104+ var builder = new MockVbeBuilder ( ) ;
1105+ VBComponent component ;
1106+ var vbe = builder . BuildFromSingleStandardModule ( inputCode , out component ) ;
1107+ var mockHost = new Mock < IHostApplication > ( ) ;
1108+ mockHost . SetupAllProperties ( ) ;
1109+
1110+ var state = new RubberduckParserState ( ) ;
1111+ var commands = new List < ICommand > ( ) ;
1112+
1113+ var vm = new CodeExplorerViewModel ( new FolderHelper ( state , GetDelimiterConfigLoader ( ) ) , state , commands ) ;
1114+
1115+ var parser = MockParser . Create ( vbe . Object , state ) ;
1116+ parser . Parse ( ) ;
1117+
1118+ var fieldNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Bar" ) ;
1119+ var propertyGetNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Foo (Get)" ) ;
1120+
1121+ Assert . AreEqual ( - 1 , new CompareByType ( ) . Compare ( fieldNode , propertyGetNode ) ) ;
1122+ }
1123+
1124+ [ TestMethod ]
1125+ public void CompareByType_ReturnsPropertyGetAbovePropertyLet ( )
1126+ {
1127+ var inputCode =
1128+ @"Public Property Get Foo() As Variant
1129+ End Property
1130+
1131+ Public Property Let Foo(ByVal Value As Variant)
1132+ End Property
1133+ " ;
1134+
1135+ var builder = new MockVbeBuilder ( ) ;
1136+ VBComponent component ;
1137+ var vbe = builder . BuildFromSingleStandardModule ( inputCode , out component ) ;
1138+ var mockHost = new Mock < IHostApplication > ( ) ;
1139+ mockHost . SetupAllProperties ( ) ;
1140+
1141+ var state = new RubberduckParserState ( ) ;
1142+ var commands = new List < ICommand > ( ) ;
1143+
1144+ var vm = new CodeExplorerViewModel ( new FolderHelper ( state , GetDelimiterConfigLoader ( ) ) , state , commands ) ;
1145+
1146+ var parser = MockParser . Create ( vbe . Object , state ) ;
1147+ parser . Parse ( ) ;
1148+
1149+ var propertyGetNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Foo (Get)" ) ;
1150+ var propertyLetNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Foo (Let)" ) ;
1151+
1152+ Assert . AreEqual ( - 1 , new CompareByType ( ) . Compare ( propertyGetNode , propertyLetNode ) ) ;
1153+ }
1154+
1155+ [ TestMethod ]
1156+ public void CompareByType_ReturnsPropertyLetAbovePropertySet ( )
1157+ {
1158+ var inputCode =
1159+ @"Public Property Let Foo(ByVal Value As Variant)
1160+ End Property
1161+
1162+ Public Property Set Foo(ByVal Value As Variant)
1163+ End Property
1164+ " ;
1165+
1166+ var builder = new MockVbeBuilder ( ) ;
1167+ VBComponent component ;
1168+ var vbe = builder . BuildFromSingleStandardModule ( inputCode , out component ) ;
1169+ var mockHost = new Mock < IHostApplication > ( ) ;
1170+ mockHost . SetupAllProperties ( ) ;
1171+
1172+ var state = new RubberduckParserState ( ) ;
1173+ var commands = new List < ICommand > ( ) ;
1174+
1175+ var vm = new CodeExplorerViewModel ( new FolderHelper ( state , GetDelimiterConfigLoader ( ) ) , state , commands ) ;
1176+
1177+ var parser = MockParser . Create ( vbe . Object , state ) ;
1178+ parser . Parse ( ) ;
1179+
1180+ var propertyLetNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Foo (Let)" ) ;
1181+ var propertySetNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Foo (Set)" ) ;
1182+
1183+ Assert . AreEqual ( - 1 , new CompareByType ( ) . Compare ( propertyLetNode , propertySetNode ) ) ;
1184+ }
1185+
1186+ [ TestMethod ]
1187+ public void CompareByType_ReturnsPropertySetAboveFunction ( )
1188+ {
1189+ var inputCode =
1190+ @"Public Property Set Foo(ByVal Value As Variant)
1191+ End Property
1192+
1193+ Public Function Bar() As Boolean
1194+ End Function
1195+ " ;
1196+
1197+ var builder = new MockVbeBuilder ( ) ;
1198+ VBComponent component ;
1199+ var vbe = builder . BuildFromSingleStandardModule ( inputCode , out component ) ;
1200+ var mockHost = new Mock < IHostApplication > ( ) ;
1201+ mockHost . SetupAllProperties ( ) ;
1202+
1203+ var state = new RubberduckParserState ( ) ;
1204+ var commands = new List < ICommand > ( ) ;
1205+
1206+ var vm = new CodeExplorerViewModel ( new FolderHelper ( state , GetDelimiterConfigLoader ( ) ) , state , commands ) ;
1207+
1208+ var parser = MockParser . Create ( vbe . Object , state ) ;
1209+ parser . Parse ( ) ;
1210+
1211+ var propertySetNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Foo (Set)" ) ;
1212+ var functionNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Bar" ) ;
1213+
1214+ Assert . AreEqual ( - 1 , new CompareByType ( ) . Compare ( propertySetNode , functionNode ) ) ;
1215+ }
1216+
1217+ [ TestMethod ]
1218+ public void CompareByType_ReturnsFunctionAboveSub ( )
1219+ {
1220+ var inputCode =
1221+ @"Public Function Foo() As Boolean
1222+ End Function
1223+
1224+ Public Sub Bar()
1225+ End Sub
1226+ " ;
10481227
10491228 var builder = new MockVbeBuilder ( ) ;
10501229 VBComponent component ;
@@ -1060,10 +1239,10 @@ Sub Bar()
10601239 var parser = MockParser . Create ( vbe . Object , state ) ;
10611240 parser . Parse ( ) ;
10621241
1242+ var functionNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Foo" ) ;
10631243 var subNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Bar" ) ;
1064- var fieldNode = vm . Projects . First ( ) . Items . First ( ) . Items . First ( ) . Items . Single ( s => s . Name == "Foo" ) ;
10651244
1066- Assert . AreEqual ( - 1 , new CompareByType ( ) . Compare ( subNode , fieldNode ) ) ;
1245+ Assert . AreEqual ( - 1 , new CompareByType ( ) . Compare ( functionNode , subNode ) ) ;
10671246 }
10681247
10691248 [ TestMethod ]
0 commit comments