@@ -23,12 +23,15 @@ public void FindModinfoFiles_InvalidArgs_Throws()
2323
2424 public ModinfoFileFinderTests ( )
2525 {
26- CreateScenario_MainModinfoOnly ( ) ;
27- CreateScenario_MainModinfoOnly_WithCaseInsensitiveName ( ) ;
28- CreateScenario_WithNoValidModinfoFiles ( ) ;
29- CreateScenario_WithMainModinfoAndVariant ( ) ;
30- CreateScenario_WithOnlyVariants ( ) ;
31- CreateScenario_WithMainModinfoAndVariantAndInvalidFiles ( ) ;
26+ CreateScenario1_MainModinfoOnly ( ) ;
27+ CreateScenario2_MainModinfoOnly_WithCaseInsensitiveName ( ) ;
28+ CreateScenario3_WithNoValidModinfoFiles ( ) ;
29+ CreateScenario4_WithMainModinfoAndVariant ( ) ;
30+ CreateScenario5_WithOnlyVariants ( ) ;
31+ CreateScenario6_CreateWithMainModinfoAndVariantAndOtherFiles ( ) ;
32+ CreateScenario7_WithInvalidMainModinfo ( ) ;
33+ CreateScenario8_WithMainModinfoAndInvalidVariant ( ) ;
34+ CreateScenario9_WithInvalidMainModinfoAndValidVariant ( ) ;
3235 }
3336
3437 [ Theory ]
@@ -38,6 +41,9 @@ public ModinfoFileFinderTests()
3841 [ InlineData ( 4 , true , 1 ) ]
3942 [ InlineData ( 5 , false , 2 ) ]
4043 [ InlineData ( 6 , true , 1 ) ]
44+ [ InlineData ( 7 , true , 0 ) ]
45+ [ InlineData ( 8 , true , 1 ) ]
46+ [ InlineData ( 9 , true , 1 ) ]
4147 public void FindModinfoFiles_TestAll ( int scenario , bool hasMain , int numberVariants )
4248 {
4349 var scenarioPath = _fileSystem . DirectoryInfo . New ( _scenarioPaths [ scenario ] ) ;
@@ -57,7 +63,20 @@ public void FindModinfoFiles_TestMerge(int scenario)
5763 Assert . NotNull ( all . Variants . ElementAt ( 0 ) . GetModinfo ( ) . Version ) ;
5864 }
5965
60- private void CreateScenario_MainModinfoOnly ( )
66+ [ Theory ]
67+ [ InlineData ( 7 ) ]
68+ [ InlineData ( 9 ) ]
69+ public void FindModinfoFiles_InvalidMain_CannotGetModinfo ( int scenario )
70+ {
71+ var scenarioPath = _fileSystem . DirectoryInfo . New ( _scenarioPaths [ scenario ] ) ;
72+ var all = ModinfoFileFinder . FindModinfoFiles ( scenarioPath ) ;
73+
74+ Assert . False ( all . MainModinfo ! . TryGetModinfo ( out _ ) ) ;
75+ foreach ( var modinfoVariantFile in all . Variants )
76+ Assert . False ( modinfoVariantFile . TryGetModinfo ( out _ ) ) ;
77+ }
78+
79+ private void CreateScenario1_MainModinfoOnly ( )
6180 {
6281 CreateScenario ( 1 , ( ) =>
6382 {
@@ -73,7 +92,7 @@ private void CreateScenario_MainModinfoOnly()
7392 } ) ;
7493 }
7594
76- private void CreateScenario_MainModinfoOnly_WithCaseInsensitiveName ( )
95+ private void CreateScenario2_MainModinfoOnly_WithCaseInsensitiveName ( )
7796 {
7897 CreateScenario ( 2 , ( ) =>
7998 {
@@ -89,7 +108,7 @@ private void CreateScenario_MainModinfoOnly_WithCaseInsensitiveName()
89108 } ) ;
90109 }
91110
92- private void CreateScenario_WithNoValidModinfoFiles ( )
111+ private void CreateScenario3_WithNoValidModinfoFiles ( )
93112 {
94113 CreateScenario ( 3 , ( ) =>
95114 {
@@ -101,7 +120,7 @@ private void CreateScenario_WithNoValidModinfoFiles()
101120 } ) ;
102121 }
103122
104- private void CreateScenario_WithMainModinfoAndVariant ( )
123+ private void CreateScenario4_WithMainModinfoAndVariant ( )
105124 {
106125 CreateScenario ( 4 , ( ) =>
107126 {
@@ -127,7 +146,31 @@ private void CreateScenario_WithMainModinfoAndVariant()
127146 } ) ;
128147 }
129148
130- private void CreateScenario_WithMainModinfoAndVariantAndInvalidFiles ( )
149+ private void CreateScenario5_WithOnlyVariants ( )
150+ {
151+ CreateScenario ( 5 , ( ) =>
152+ {
153+ const string path = "scenario5" ;
154+ const string variant1FileName = "1-modinfo.json" ;
155+ const string variant2FileName = "2-modinfo.json" ;
156+ var filePath1 = _fileSystem . Path . Combine ( path , variant1FileName ) ;
157+ var filePath2 = _fileSystem . Path . Combine ( path , variant2FileName ) ;
158+
159+ const string data1 = @"{
160+ ""name"": ""Addon-1""
161+ }" ;
162+
163+ const string data2 = @"{
164+ ""name"": ""Addon-2""
165+ }" ;
166+
167+ _fileSystem . AddFile ( filePath1 , new MockFileData ( data1 ) ) ;
168+ _fileSystem . AddFile ( filePath2 , new MockFileData ( data2 ) ) ;
169+ return path ;
170+ } ) ;
171+ }
172+
173+ private void CreateScenario6_CreateWithMainModinfoAndVariantAndOtherFiles ( )
131174 {
132175 CreateScenario ( 6 , ( ) =>
133176 {
@@ -156,26 +199,65 @@ private void CreateScenario_WithMainModinfoAndVariantAndInvalidFiles()
156199 } ) ;
157200 }
158201
159- private void CreateScenario_WithOnlyVariants ( )
202+ private void CreateScenario7_WithInvalidMainModinfo ( )
160203 {
161- CreateScenario ( 5 , ( ) =>
204+ CreateScenario ( 7 , ( ) =>
162205 {
163- const string path = "scenario5" ;
164- const string variant1FileName = "1-modinfo.json" ;
165- const string variant2FileName = "2-modinfo.json" ;
166- var filePath1 = _fileSystem . Path . Combine ( path , variant1FileName ) ;
167- var filePath2 = _fileSystem . Path . Combine ( path , variant2FileName ) ;
206+ const string path = "scenario7" ;
207+ const string mainFileName = "modinfo.json" ;
208+ var mainFilePath = _fileSystem . Path . Combine ( path , mainFileName ) ;
168209
169- const string data1 = @"{
170- ""name"": ""Addon-1""
210+ const string mainFileData = "\0 " ;
211+
212+ _fileSystem . AddFile ( mainFilePath , new MockFileData ( mainFileData ) ) ;
213+
214+ return path ;
215+ } ) ;
216+ }
217+
218+ private void CreateScenario8_WithMainModinfoAndInvalidVariant ( )
219+ {
220+ CreateScenario ( 8 , ( ) =>
221+ {
222+ const string path = "scenario8" ;
223+ const string mainFileName = "modinfo.json" ;
224+ const string variantFileName = "variant-modinfo.json" ;
225+ var mainFilePath = _fileSystem . Path . Combine ( path , mainFileName ) ;
226+ var variantFilePath = _fileSystem . Path . Combine ( path , variantFileName ) ;
227+
228+ const string mainFileData = @"{
229+ ""name"": ""testmod"",
230+ ""version"": ""1.0.0""
171231}" ;
172232
173- const string data2 = @"{
174- ""name"": ""Addon-2""
233+ const string variantFileData = "\0 " ;
234+
235+ _fileSystem . AddFile ( mainFilePath , new MockFileData ( mainFileData ) ) ;
236+ _fileSystem . AddFile ( variantFilePath , new MockFileData ( variantFileData ) ) ;
237+
238+ return path ;
239+ } ) ;
240+ }
241+
242+ private void CreateScenario9_WithInvalidMainModinfoAndValidVariant ( )
243+ {
244+ CreateScenario ( 9 , ( ) =>
245+ {
246+ const string path = "scenario9" ;
247+ const string mainFileName = "modinfo.json" ;
248+ const string variantFileName = "variant-modinfo.json" ;
249+ var mainFilePath = _fileSystem . Path . Combine ( path , mainFileName ) ;
250+ var variantFilePath = _fileSystem . Path . Combine ( path , variantFileName ) ;
251+
252+ const string mainFileData = "\0 " ;
253+
254+ const string variantFileData = @"{
255+ ""name"": ""Addon""
175256}" ;
176257
177- _fileSystem . AddFile ( filePath1 , new MockFileData ( data1 ) ) ;
178- _fileSystem . AddFile ( filePath2 , new MockFileData ( data2 ) ) ;
258+ _fileSystem . AddFile ( mainFilePath , new MockFileData ( mainFileData ) ) ;
259+ _fileSystem . AddFile ( variantFilePath , new MockFileData ( variantFileData ) ) ;
260+
179261 return path ;
180262 } ) ;
181263 }
0 commit comments