public void KathismasMigration_CS_RU_DoubleMigration() { var typicon = new TypiconVersion(); string folderPath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\PsalterMigration\1"); var manager = new KathismasMigrationManager(BookStorageFactory.Create().Psalter); manager.MigrateKathismas(new PsalterRuReader(folderPath, "cs-ru"), typicon); manager.MigrateKathismas(new PsalterCsReader(folderPath, "cs-cs"), typicon, true); //вычисляем количество Ссылок на Псалмы в кафизме int count = 0; typicon.Kathismas.ForEach(c => { c.SlavaElements.ForEach(d => { count += d.PsalmLinks.Count; }); }); Assert.AreEqual(8, count); //Проверяем наличие двух языков у наименования Номера кафизм Assert.AreEqual(2, typicon.Kathismas[0].NumberName.Languages.Count()); }
public void KathismasMigration_CS_RU_17() { string folderPath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\PsalterMigration\2"); var typicon = new TypiconVersion(); var manager = new KathismasMigrationManager(BookStorageFactory.Create().Psalter); manager.MigrateKathismas(new PsalterRuReader(folderPath, "cs-ru"), typicon); var psalmLink = typicon.Kathismas[0].SlavaElements[0].PsalmLinks[0]; Assert.AreEqual(1, psalmLink.StartStihos); Assert.AreEqual(72, psalmLink.EndStihos); psalmLink = typicon.Kathismas[0].SlavaElements[1].PsalmLinks[0]; Assert.AreEqual(73, psalmLink.StartStihos); Assert.AreEqual(131, psalmLink.EndStihos); psalmLink = typicon.Kathismas[0].SlavaElements[2].PsalmLinks[0]; Assert.AreEqual(132, psalmLink.StartStihos); Assert.AreEqual(176, psalmLink.EndStihos); }
public void RuleSerializerRoot_Additional() { var unitOfWork = new RuleSerializerRoot(BookStorageFactory.Create()); var factoryContainer = unitOfWork.Container <RuleExecutable, ICalcStructureElement>(); Assert.IsNotNull(factoryContainer); Assert.Pass(factoryContainer.ToString()); }
public void RuleSerializerRoot_If() { var unitOfWork = new RuleSerializerRoot(BookStorageFactory.Create()); var factoryContainer = unitOfWork.Container <If>(); Assert.IsNotNull(factoryContainer); Assert.Pass(factoryContainer.ToString()); }
public void ModifyReplacedDay_Xml() { string xmlString = @"<modifyreplacedday daymove=""0"" kind=""menology""/>"; var serializer = new RuleSerializerRoot(BookStorageFactory.Create()); var element = serializer.Container <ModifyReplacedDay>() .Deserialize(xmlString); Assert.AreEqual(KindOfReplacedDay.Menology, element.Kind); }
public void KathismasMigration_CS_RU_Full() { string folderPath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\PsalterMigration"); var typicon = new TypiconVersion(); var manager = new KathismasMigrationManager(BookStorageFactory.Create().Psalter); manager.MigrateKathismas(new PsalterRuReader(folderPath, "cs-ru"), typicon); Assert.AreEqual(20, typicon.Kathismas.Count); }
public void Rules_Expressions_Int_WrongNumber() { string xmlString = "<int>--13-06</int>"; var unitOfWork = new RuleSerializerRoot(BookStorageFactory.Create()); var element = unitOfWork.Container <Int>() .Deserialize(new XmlDescriptor() { Description = xmlString }); Assert.IsFalse(element.IsValid); }
public void Rules_Expressions_Int_RightNumber() { string xmlString = "<int>-15</int>"; var unitOfWork = new RuleSerializerRoot(BookStorageFactory.Create()); var element = unitOfWork.Container <Int>() .Deserialize(new XmlDescriptor() { Description = xmlString }); Assert.IsNotNull(element); Assert.AreEqual(-15, element.ValueCalculated); }
public void KanonasRule_FromDB() { EFUnitOfWork _unitOfWork = new EFUnitOfWork(); //BookStorage.Instance = BookStorageFactory.Create(); GetTypiconEntityResponse resp = new TypiconEntityService(_unitOfWork).GetTypiconEntity(1); TypiconEntity typiconEntity = resp.TypiconEntity; ServiceSequenceHandler handler = new ServiceSequenceHandler() { Settings = new RuleHandlerSettings() { Language = LanguageSettingsFactory.Create("cs-ru") } }; string folderPath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData"); FileReader reader = new FileReader(folderPath); string xml = reader.Read("KanonasRuleTest.xml"); DateTime date = new DateTime(2017, 11, 11); MenologyRule rule = typiconEntity.GetMenologyRule(date); rule.RuleDefinition = xml; handler.Settings.Rule = rule; handler.Settings.DayWorships = rule.DayWorships; handler.Settings.Date = date; var bookStorage = BookStorageFactory.Create(); OktoikhDay oktoikhDay = bookStorage.Oktoikh.Get(date); handler.Settings.OktoikhDay = oktoikhDay; //rule.GetRule(TestRuleSerializer.Root).Interpret(handler); handler.ClearResult(); KanonasRule kanonasRule = rule.GetRule <KanonasRule>(TestRuleSerializer.Root); kanonasRule.Interpret(handler); Assert.AreEqual(4, kanonasRule.Kanones.Count()); //Assert.IsNotNull(kanonasRule.Sedalen); }
public void YmnosStructureRule_FromRealDB() { EFUnitOfWork _unitOfWork = new EFUnitOfWork(); //BookStorage.Instance = BookStorageFactory.Create(); GetTypiconEntityResponse resp = new TypiconEntityService(_unitOfWork).GetTypiconEntity(1); TypiconEntity typiconEntity = resp.TypiconEntity; ServiceSequenceHandler handler = new ServiceSequenceHandler() { Settings = new RuleHandlerSettings() { Language = LanguageSettingsFactory.Create("cs-ru") } }; string folderPath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData"); FileReader reader = new FileReader(folderPath); string xml = reader.Read("YmnosStructureRuleTest.xml"); //Дата --11-09 exists - true DateTime date = new DateTime(2017, 11, 09); MenologyRule rule = typiconEntity.GetMenologyRule(date); rule.RuleDefinition = xml; handler.Settings.Rule = rule; handler.Settings.DayWorships = rule.DayWorships; handler.Settings.Date = date; var bookStorage = BookStorageFactory.Create(); OktoikhDay oktoikhDay = bookStorage.Oktoikh.Get(date); handler.Settings.OktoikhDay = oktoikhDay; rule.GetRule(TestRuleSerializer.Root).Interpret(handler); var model = handler.GetResult(); //SedalenRuleViewModel model = rule.GetRule<SedalenRule>(TestRuleSerializer.Root).CreateViewModel(handler) as SedalenRuleViewModel; Assert.AreEqual(3, rule.GetRule <SedalenRule>(TestRuleSerializer.Root).Structure.YmnosStructureCount); Assert.Pass(rule.GetRule <SedalenRule>(TestRuleSerializer.Root).Structure.YmnosStructureCount.ToString()); }
public void KathismasMigration_CS_RU_SaveChanges() { string folderPath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\PsalterMigration\1"); var typicon = GetTypiconVersion(); var unitOfWork = UnitOfWorkFactory.Create(); var manager = new KathismasMigrationManager(BookStorageFactory.Create(unitOfWork).Psalter); manager.MigrateKathismas(new PsalterRuReader(folderPath, "cs-ru"), typicon); unitOfWork.Repository <User>().Add(typicon.Typicon.Owner); unitOfWork.SaveChanges(); Assert.AreEqual(1, typicon.Kathismas.Count); }
public void KathismasMigration_CS_RU_CheckFirstPsalmLinks() { var typicon = new TypiconVersion(); string folderPath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\PsalterMigration\1"); var manager = new KathismasMigrationManager(BookStorageFactory.Create().Psalter); manager.MigrateKathismas(new PsalterRuReader(folderPath, "cs-ru"), typicon); //вычисляем количество Ссылок на Псалмы в кафизме int count = 0; typicon.Kathismas.ForEach(c => { c.SlavaElements.ForEach(d => { count += d.PsalmLinks.Count; }); }); Assert.AreEqual(8, count); }
public void TextHolder_Creature() { #region xml string xmlString = @"<rule> <deacon> <p> <item language=""cs-ru"">Миром Господу помолимся.</item> </p> </deacon> <choir> <p> <item language=""cs-ru"">Господи, помилуй.</item> </p> </choir> <deacon> <p> <item language=""cs-ru"">Пресвятую, Пречистую, Преблагословенную, Славную Владычицу Нашу Богородицу, и Приснодеву Марию со всеми святыми помянувши сами себя, и друг друга, и весь живот наш Христу Богу предадим.</item> </p> </deacon> <choir> <p> <item language=""cs-ru"">Тебе Господи.</item> </p> </choir> <priest> <p> <item language=""cs-ru"">Яко подобает Тебе всякая слава, честь и поклонение, Отцу, и Сыну, и Святому Духу, всегда, ныне и присно, и во веки веков.</item> </p> </priest> <choir> <p> <item language=""cs-ru"">Аминь.</item> </p> </choir> <lector> <p> <item language=""cs-cs"">Положи́, Го́споди, хране́ние усто́м мои́м, и дверь огражде́ния о устна́х мои́х.</item> </p> </lector> </rule>"; #endregion var unitOfWork = new RuleSerializerRoot(BookStorageFactory.Create()); var element = unitOfWork.Container <ExecContainer>() .Deserialize(new XmlDescriptor() { Description = xmlString }); //3 int choirCount = element.ChildElements.Where(c => (c is TextHolder) && (c as TextHolder).Kind == TextHolderKind.Choir).Count(); //2 int deaconCount = element.ChildElements.Where(c => (c is TextHolder) && (c as TextHolder).Kind == TextHolderKind.Deacon).Count(); //1 int priestCount = element.ChildElements.Where(c => (c is TextHolder) && (c as TextHolder).Kind == TextHolderKind.Priest).Count(); //1 int lectorCount = element.ChildElements.Where(c => (c is TextHolder) && (c as TextHolder).Kind == TextHolderKind.Lector).Count(); Assert.AreEqual(choirCount, 3); Assert.AreEqual(deaconCount, 2); Assert.AreEqual(priestCount, 1); Assert.AreEqual(lectorCount, 1); Assert.IsTrue(element.IsValid); Assert.Pass("Ok"); }
public static T Deserialize <T>(string description) where T : RuleElement { var serializer = new RuleSerializerRoot(BookStorageFactory.Create()); return(serializer.Container <T>().Deserialize(description)); }