Example #1
0
        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());
        }
Example #2
0
        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);
        }
Example #3
0
        public void RuleSerializerRoot_Additional()
        {
            var unitOfWork = new RuleSerializerRoot(BookStorageFactory.Create());

            var factoryContainer = unitOfWork.Container <RuleExecutable, ICalcStructureElement>();

            Assert.IsNotNull(factoryContainer);
            Assert.Pass(factoryContainer.ToString());
        }
Example #4
0
        public void RuleSerializerRoot_If()
        {
            var unitOfWork = new RuleSerializerRoot(BookStorageFactory.Create());

            var factoryContainer = unitOfWork.Container <If>();

            Assert.IsNotNull(factoryContainer);
            Assert.Pass(factoryContainer.ToString());
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
        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());
        }
Example #11
0
        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);
        }
Example #12
0
        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);
        }
Example #13
0
        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));
        }