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);
        }
Exemple #2
0
        public void IsValidBibleReferenceValidBookValidChapterValidVerse()
        {
            var reference = new BibleReference {
                Book = BibleBook.Exodus, Chapter = 40, Verse = 38
            };

            Assert.IsTrue(BibleDetails.IsValidBibleReference(reference));
        }
Exemple #3
0
        public void IsValidBibleReferenceInvalidBook()
        {
            var reference = new BibleReference {
                Book = (BibleBook)(-1)
            };

            Assert.IsFalse(BibleDetails.IsValidBibleReference(reference));
        }
Exemple #4
0
        public void IsValidBibleReferenceValidBookInvalidChapterTooLarge()
        {
            var reference = new BibleReference {
                Book = BibleBook.Exodus, Chapter = 41
            };

            Assert.IsFalse(BibleDetails.IsValidBibleReference(reference));
        }
Exemple #5
0
        public void IsValidBibleReferenceValidBook()
        {
            var reference = new BibleReference {
                Book = BibleBook.Exodus
            };

            Assert.IsTrue(BibleDetails.IsValidBibleReference(reference));
        }
Exemple #6
0
        public void IsValidBibleReferenceValidBookValidChapterInvalidVerseTooSmall()
        {
            var reference = new BibleReference {
                Book = BibleBook.Exodus, Chapter = 40, Verse = 0
            };

            Assert.IsFalse(BibleDetails.IsValidBibleReference(reference));
        }
Exemple #7
0
        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));
        }
Exemple #8
0
        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));
        }
Exemple #9
0
        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));
        }
Exemple #10
0
        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);
        }