private static ReleaseTestDataPoint GenerateValidRandomizedTestDataPointWithModName(String modName) { var random = new Random(); List <Dependency> randomizedDependencies = new List <Dependency>(); for (int i = 0; i < random.Next(1, 6); i++) { randomizedDependencies.Add(DependencyTestData.GenerateValidRandomizedDependency()); } String releaseFileNameString = ReleaseFileNameTestData.GenerateValidRandomizedReleaseFileNameStringWithModName(modName); Int32 underscoreIndex = releaseFileNameString.LastIndexOf("_"); String modVersionString = releaseFileNameString.Substring(underscoreIndex + 1, releaseFileNameString.LastIndexOf(".zip") - (underscoreIndex + 1)); return(CreateTestDataPointFromProperties( ReleasedAt: ReleaseTestData.GenerateValidRandomizedReleasedAt(), Sha1String: ReleaseTestData.GenerateValidRandomizedSha1String(), ReleaseDownloadUrl: ReleaseDownloadUrl.For(ReleaseDownloadUrlTestData.GenerateValidRandomizedReleaseDownloadUrlStringWithModName(modName)), ReleaseFileName: ReleaseFileName.For(releaseFileNameString), ModVersion: ModVersion.For(modVersionString), FactorioVersion: FactorioVersionTestData.GenerateValidRandomizedFactorioVersion(), Dependencies: randomizedDependencies )); }
public void ModConstructor_WhenReleasesContainsReleasFileNameWithNonMatchingModName_ThrowsArgumentException() { ReleaseDownloadUrl releaseDownloadUrl = ReleaseDownloadUrl.For($"/download/NotAMatch/{ReleaseDownloadUrlTestData.GenerateValidRandomizedReleaseDownloadUrlToken()}"); Release testRelease = new Release( ReleasedAt: ReleaseTestData.TestModAlphaReleaseDate, Sha1String: ReleaseTestData.TestModAlphaReleaseSha1String, ReleaseDownloadUrl: releaseDownloadUrl, ReleaseFileName: ReleaseFileNameTestData.TestModAlphaReleaseFileName, ModVersion: ModVersionTestData.TestModAlphaReleaseVersion, FactorioVersion: FactorioVersionTestData.ZeroPointSeventeen, Dependencies: DependencyTestData.TestModAlphaReleaseDependencies ); var exception = Assert.Throws <ArgumentException>(() => new Mod( Name: ModTestData.TestModTestDataPoint.Name, Titles: ModTitleTestData.TestModTitles, Releases: new List <Release> { testRelease, ReleaseTestData.TestModBetaRelease })); Assert.Equal($"The mod name in the release download URL \"{releaseDownloadUrl}\" does not match the specified mod name \"{ModTestData.TestModTestDataPoint.Name}\". (Parameter 'Releases')", exception.Message); }