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; }
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 _)); }
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; } }
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); }
[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); }