public void EnsureBasicFunctionsWork() { using (var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(Resources.SisulizerSmallDemo))) { var options = new CommonExportOptions { SisulizerProjectFileName = "" }; var sisulizerFile = new SisulizerFile(memoryStream, options); Assert.That(sisulizerFile.Languages.Count(), Is.EqualTo(4)); // native, en, pl, cs var languagesStats = sisulizerFile.Languages.ToDictionary(x => x.Language, x => new { x.NativeStringCount, x.NativeWordCount, x.CountByStatus }); var nativeStats = languagesStats["native"]; Assert.That(nativeStats, Is.Not.Null); Assert.That(nativeStats.NativeStringCount, Is.EqualTo(11)); Assert.That(nativeStats.NativeWordCount, Is.EqualTo(17)); var nativeStringCountByStatus = nativeStats.CountByStatus.ToDictionary(x => x.Item1, x => x.Item2); Assert.That(nativeStringCountByStatus[LangStatus.Completed].StringCount, Is.EqualTo(11)); Assert.That(nativeStringCountByStatus[LangStatus.Completed].WordCount, Is.EqualTo(17)); Assert.That(nativeStringCountByStatus[LangStatus.Completed].InvalidStringCount, Is.EqualTo(0)); Assert.That(nativeStringCountByStatus[LangStatus.Completed].InvalidWordCount, Is.EqualTo(0)); var enStats = languagesStats["en"]; Assert.That(enStats, Is.Not.Null); Assert.That(enStats.NativeStringCount, Is.EqualTo(2)); var enStringCountByStatus = enStats.CountByStatus.ToDictionary(x => x.Item1, x => x.Item2); Assert.That(enStringCountByStatus[LangStatus.AutoTranslated].StringCount, Is.EqualTo(1)); Assert.That(enStringCountByStatus[LangStatus.AutoTranslated].WordCount, Is.EqualTo(3)); Assert.That(enStringCountByStatus[LangStatus.AutoTranslated].InvalidStringCount, Is.EqualTo(1)); Assert.That(enStringCountByStatus[LangStatus.AutoTranslated].InvalidWordCount, Is.EqualTo(5)); Assert.That(sisulizerFile.Projects.Count(), Is.EqualTo(1)); Assert.That(sisulizerFile.Projects.FirstOrDefault()?.Languages.Count(), Is.EqualTo(4)); // native, en, pl, cs Assert.That(sisulizerFile.Projects.FirstOrDefault()?.Name, Is.EqualTo("Magic.dll")); } }
public void Execute(ISisulizerFile sisulizerFile, CommonExportOptions exportOptions) { if (exportOptions is OracleExportOptions oracleExportOptions) { using (var oracleConnection = new OracleConnection(oracleExportOptions.ConnectionString)) { var dbCommand = oracleConnection.CreateCommand(); dbCommand.CommandText = $"insert into {oracleExportOptions.TableName} (source, product, version, build, createdon, languagecode, statistictype, nottranslated, bestguess, bestguessinvalid, autotranslated, autotranslatedinvalid, translated, translatedinvalid, forreview, forreviewinvalid, complete, completeinvalid, total)" + $"values (:source, :product, :version, :build, :createdon, :languagecode, :statistictype, :nottranslated, :bestguess, :bestguessinvalid, :autotranslated, :autotranslatedinvalid, :translated, :translatedinvalid, :forreview, :forreviewinvalid, :complete, :completeinvalid, :total)"; var createdOn = DateTime.Now; foreach (var languageStats in sisulizerFile.Languages) { foreach (var statType in new[] { StatType.Strings, StatType.Words }) { this.CreateParameter(dbCommand, "source", OracleDbType.Varchar2).Value = Path.GetFileNameWithoutExtension(sisulizerFile.FileName); this.CreateParameter(dbCommand, "product", OracleDbType.Varchar2).Value = oracleExportOptions.Product; this.CreateParameter(dbCommand, "version", OracleDbType.Varchar2).Value = oracleExportOptions.Version; this.CreateParameter(dbCommand, "build", OracleDbType.Int32).Value = oracleExportOptions.Build; this.CreateParameter(dbCommand, "createdon", OracleDbType.Date).Value = createdOn; this.CreateParameter(dbCommand, "languagecode", OracleDbType.Varchar2).Value = languageStats.Language; this.CreateParameter(dbCommand, "statistictype", OracleDbType.Varchar2).Value = this.GetStatisticType(statType); this.CreateParameter(dbCommand, "nottranslated", OracleDbType.Varchar2).Value = this.GetNotTranslated(languageStats, statType); this.CreateParameter(dbCommand, "bestguess", OracleDbType.Varchar2).Value = this.GetStatValue(languageStats, LangStatus.BestGuess, statType, true); this.CreateParameter(dbCommand, "bestguessinvalid", OracleDbType.Varchar2).Value = this.GetStatValue(languageStats, LangStatus.BestGuess, statType, false); this.CreateParameter(dbCommand, "autotranslated", OracleDbType.Varchar2).Value = this.GetStatValue(languageStats, LangStatus.AutoTranslated, statType, true); this.CreateParameter(dbCommand, "autotranslatedinvalid", OracleDbType.Varchar2).Value = this.GetStatValue(languageStats, LangStatus.AutoTranslated, statType, false); this.CreateParameter(dbCommand, "translated", OracleDbType.Varchar2).Value = this.GetStatValue(languageStats, LangStatus.Translated, statType, true); this.CreateParameter(dbCommand, "translatedinvalid", OracleDbType.Varchar2).Value = this.GetStatValue(languageStats, LangStatus.Translated, statType, false); this.CreateParameter(dbCommand, "forreview", OracleDbType.Varchar2).Value = this.GetStatValue(languageStats, LangStatus.ForReview, statType, true); this.CreateParameter(dbCommand, "forreviewinvalid", OracleDbType.Varchar2).Value = this.GetStatValue(languageStats, LangStatus.ForReview, statType, false); this.CreateParameter(dbCommand, "complete", OracleDbType.Varchar2).Value = this.GetStatValue(languageStats, LangStatus.Completed, statType, true); this.CreateParameter(dbCommand, "completeinvalid", OracleDbType.Varchar2).Value = this.GetStatValue(languageStats, LangStatus.Completed, statType, false); this.CreateParameter(dbCommand, "total", OracleDbType.Varchar2).Value = this.GetNativeCount(languageStats, statType); var result = dbCommand.ExecuteNonQuery(); } } } } }