public void Add(PhraseCustomization pc)
            {
                switch (pc.Type)
                {
                case PhraseCustomization.CustomizationType.AdditionAfter:
                case PhraseCustomization.CustomizationType.InsertionBefore:
                    if (AdditionsAndInsertions.Any(a => a.ModifiedPhrase == pc.ModifiedPhrase || a.Type == pc.Type))
                    {
                        m_isResolved = false;
                    }
                    AdditionsAndInsertions.Add(pc);
                    break;

                case PhraseCustomization.CustomizationType.Deletion:
                    Deletions.Add(pc);
                    if (Deletions.Count > 1)
                    {
                        m_isResolved = false;
                    }
                    break;

                case PhraseCustomization.CustomizationType.Modification:
                    if (Modification != null)
                    {
                        throw new InvalidOperationException("Only one modified version of a question/phrase is permitted. Question/phrase '" + pc.OriginalPhrase +
                                                            "' has already been modified as '" + Modification.ModifiedPhrase + "'. Value of subsequent modification attempt was: '" +
                                                            pc.ModifiedPhrase + "'.");
                    }
                    Modification = pc;
                    break;
                }
            }
 internal CustomQuestionKey(PhraseCustomization pc)
 {
     Text = pc.OriginalPhrase;
     ScriptureReference = pc.Reference;
     StartRef           = pc.ScrStartReference;
     EndRef             = pc.ScrEndReference;
 }
Exemplo n.º 3
0
        public void Key_CustomizationBasedOnAddedQuestionWithoutEnglishVersion_KeyAssignedToNewGuidWithPrefix(PhraseCustomization.CustomizationType type)
        {
            var pc = new PhraseCustomization($"Is this the {GetAdjectiveForBaseQuestion(type)} question?",
                                             new Question("TST 8:9", 100008009, 100008009, null, "Tal vez"), type);

            Assert.IsTrue(pc.ImmutableKey.StartsWith(Question.kGuidPrefix));
            Assert.IsTrue(Guid.TryParse(pc.ImmutableKey.Substring(Question.kGuidPrefix.Length), out _));
        }
Exemplo n.º 4
0
        public void Key_CustomizationBasedOnAddedQuestionWithEnglishVersion_KeyBasedOnEnglishQuestion(PhraseCustomization.CustomizationType type)
        {
            var pc = new PhraseCustomization($"Is this the {GetAdjectiveForBaseQuestion(type)} question?",
                                             new Question("TST 8:9", 100008009, 100008009, "Is this a user-added question?", "Yes"), type);

            Assert.AreEqual("Is this a user-added question?", pc.ImmutableKey);
            Assert.IsNull(pc.ImmutableKey_PublicForSerializationOnly);
        }
 private void SetExcludedAndModified(Question question)
 {
     question.IsExcluded = Deletions.SingleOrDefault() != null;
     Deletions.Clear();
     if (ModifiedPhrase != null)
     {
         question.ModifiedPhrase = ModifiedPhrase;
         Modification            = null;
     }
 }
Exemplo n.º 6
0
        public void Key_CustomizationBasedOnModifiedTranslatablePhrase_ValueIsBasedOnOriginalTpQuestion()
        {
            var tp = new TranslatablePhrase(new Question("TST 6:1-2", 100006001, 100006002, "Is this the original?", "Yes"), 1, 2, 3);

            tp.ModifiedPhrase = "This is the modified version of it";
            var pc = new PhraseCustomization(tp);

            Assert.AreEqual("Is this the original?", pc.ImmutableKey);
            Assert.AreEqual(pc.ImmutableKey, pc.ImmutableKey_PublicForSerializationOnly);
        }
Exemplo n.º 7
0
        [TestCase(PhraseCustomization.CustomizationType.InsertionBefore, "")]         // FWIW: In real life, it can't be an empty string.
        public void Key_CustomizationBasedOnAddedQuestionWithExplicitKey_KeyBasedOnExplicitKey(
            PhraseCustomization.CustomizationType type, string questionInEnglish)
        {
            var explicitKey = Question.kGuidPrefix + Guid.NewGuid();
            var pc          = new PhraseCustomization($"Is this the {GetAdjectiveForBaseQuestion(type)} question?",
                                                      new Question("TST 8:9", 100008009, 100008009, questionInEnglish, "Tal vez", explicitKey), type);

            Assert.AreEqual(explicitKey, pc.ImmutableKey);
            pc.ModifiedPhrase = "Changed it!";
            Assert.AreEqual(explicitKey, pc.ImmutableKey);
            Assert.AreEqual(pc.ImmutableKey, pc.ImmutableKey_PublicForSerializationOnly);
        }