public static ValidationResult Validate(object value) { var s = value as string; if (s is null) { return(new ValidationResult("Invalid object type")); } if (s.Length == 0) { return(ValidationResult.Success); } try { var referenceRanges = Parser.Parse(s); var invalidReferences = new List <string>(); foreach (var range in referenceRanges) { if (!BibleDetails.IsValidBibleReferenceRange(range)) { invalidReferences.Add(range.ToFriendlyString()); } } if (invalidReferences.Count > 0) { var errorMessage = "Invalid Bible references:\n" + string.Join(", ", invalidReferences); return(new ValidationResult(errorMessage)); } } catch (InvalidOperationException e) { return(new ValidationResult("Unable to parse bible reference string. Details: " + e.Message)); } return(ValidationResult.Success); }
public void IsValidBibleReferenceValidBookValidChapterValidVerse() { var reference = new BibleReference { Book = BibleBook.Exodus, Chapter = 40, Verse = 38 }; Assert.IsTrue(BibleDetails.IsValidBibleReference(reference)); }
public void IsValidBibleReferenceInvalidBook() { var reference = new BibleReference { Book = (BibleBook)(-1) }; Assert.IsFalse(BibleDetails.IsValidBibleReference(reference)); }
public void IsValidBibleReferenceValidBookInvalidChapterTooLarge() { var reference = new BibleReference { Book = BibleBook.Exodus, Chapter = 41 }; Assert.IsFalse(BibleDetails.IsValidBibleReference(reference)); }
public void IsValidBibleReferenceValidBook() { var reference = new BibleReference { Book = BibleBook.Exodus }; Assert.IsTrue(BibleDetails.IsValidBibleReference(reference)); }
public void IsValidBibleReferenceValidBookValidChapterInvalidVerseTooSmall() { var reference = new BibleReference { Book = BibleBook.Exodus, Chapter = 40, Verse = 0 }; Assert.IsFalse(BibleDetails.IsValidBibleReference(reference)); }
public void IsValidBibleReferenceRangeInvalidReferenceWithNoEndReference() { var refA = new BibleReference { Book = BibleBook.Exodus, Chapter = 40, Verse = 0 }; var range = new BibleReferenceRange { First = refA }; Assert.IsFalse(BibleDetails.IsValidBibleReferenceRange(range)); }
public void IsValidBibleReferenceRangeValidReferenceToInvalidReference() { var refA = new BibleReference { Book = BibleBook.Exodus, Chapter = 40, Verse = 1 }; var refB = new BibleReference { Book = BibleBook.Exodus, Chapter = 40, Verse = 39 }; var range = new BibleReferenceRange { First = refA, Last = refB }; Assert.IsFalse(BibleDetails.IsValidBibleReferenceRange(range)); }
public void IsValidBibleReferenceRangeValidReferenceToEarlierValidReference() { var refA = new BibleReference { Book = BibleBook.Deuteronomy }; var refB = new BibleReference { Book = BibleBook.Genesis }; var range = new BibleReferenceRange { First = refA, Last = refB }; Assert.IsFalse(BibleDetails.IsValidBibleReferenceRange(range)); }
public static BibleReferenceRange From(BibleReferenceParser.Data.BibleReferenceRange referenceRange) { var startReference = referenceRange.First; var endReference = referenceRange.Last == null ? referenceRange.First : referenceRange.Last; var model = new BibleReferenceRange(); model.StartBook = (int)startReference.Book; model.StartChapter = startReference.Chapter.GetValueOrDefault(1); model.StartVerse = startReference.Verse.GetValueOrDefault(1); model.EndBook = (int)endReference.Book; model.EndChapter = endReference.Chapter.GetValueOrDefault(BibleDetails.GetLastChapterForBook(endReference.Book)); model.EndVerse = endReference.Verse.GetValueOrDefault(BibleDetails.GetLastVerseForBookChapter(endReference.Book, model.EndChapter)); return(model); }