[Fact(DisplayName = "RunDetectsGeoJsonSeqsinglefile")] public void RunDetectsGeoJsonSeqsinglefile() {     var jsonSeq = "{\"type\":\"Feature\"}\n{\"type\":\"Feature\"}\n";     var input = Path.Combine(tempDir, "in.geojsonseq");     File.WriteAllText(input, jsonSeq);     var outFolder = Path.Combine(tempDir, "outSeq");     var tempFolder = Path.Combine(tempDir, "tmpSeq");     var fake = new FakeConverter();     var factory = new FakeFactory("GeoJsonSeq", fake);     var result = ConversionService.Run(input, outFolder, tempFolder, factory);     Assert.True(result.IsSuccess);     Assert.True(fake.Invoked);     Assert.Equal("GeoJsonSeq", fake.LastOption); } [Fact(DisplayName = "RunPrefersKmzforouterkmz")] public void RunPrefersKmzforouterkmz() {     var kmz = Path.Combine(tempDir, "data.kmz");     using (var zip = ZipFile.Open(kmz, ZipArchiveMode.Create))     {         var entry = zip.CreateEntry("doc.kml");         using var w = new StreamWriter(entry.Open());         w.Write("");     }        var outFolder = Path.Combine(tempDir, "outKmz");     var tempFolder = Path.Combine(tempDir, "tmpKmz");     var fake = new FakeConverter();     var factory = new FakeFactory("Kmz", fake);     var result = ConversionService.Run(kmz, outFolder, tempFolder, factory);     Assert.True(result.IsSuccess);     Assert.True(fake.Invoked);     Assert.Equal("Kmz", fake.LastOption); } [Fact(DisplayName = "RunDetectsGdbinzipwithgdbfolder")] public void RunDetectsGdbinzipwithgdbfolder() {     var zipPath = Path.Combine(tempDir, "fgdb.zip");     using (var zip = ZipFile.Open(zipPath, ZipArchiveMode.Create))     {         var entry = zip.CreateEntry("my.gdb/a.gdbtable");         using var w = new StreamWriter(entry.Open());         w.Write("x");     }     var outFolder = Path.Combine(tempDir, "outGdb");     var tempFolder = Path.Combine(tempDir, "tmpGdb");     var fake = new FakeConverter();     var factory = new FakeFactory("Gdb", fake);     var result = ConversionService.Run(zipPath, outFolder, tempFolder, factory);     Assert.True(result.IsSuccess);     Assert.True(fake.Invoked);     Assert.Equal("Gdb", fake.LastOption); } [Fact(DisplayName = "RunFriendlyFailureOnNoExtension")] public void RunFriendlyFailureOnNoExtension() {     var input = Path.Combine(tempDir, "file"); // no extension     File.WriteAllText(input, "dummy");     var outFolder = Path.Combine(tempDir, "outNoExt");     var tempFolder = Path.Combine(tempDir, "tmpNoExt");     var result = ConversionService.Run(input, outFolder, tempFolder, factory: new FakeFactory("Anything", new FakeConverter()));     Assert.False(result.IsSuccess);     Assert.Contains("missing extension", result.ErrorMessage, StringComparison.OrdinalIgnoreCase);