mirror of
https://gitlab.com/walljm/dynamicbible.git
synced 2025-07-23 07:19:50 -04:00
Bible reference merging logic.
This commit is contained in:
parent
aaa7ec151b
commit
573b9dc29d
@ -32,9 +32,7 @@ describe('Reference', () => {
|
||||
});
|
||||
|
||||
it('Should parse the reference: 2 Samuel 5:5-6:5', () => {
|
||||
expect(new BibleReference('II sam 5:5-6:5').toString()).toBe(
|
||||
'2 Samuel 5:5 - 6:5'
|
||||
);
|
||||
expect(new BibleReference('II sam 5:5-6:5').toString()).toBe('2 Samuel 5:5 - 6:5');
|
||||
});
|
||||
|
||||
const booknames = [
|
||||
@ -268,22 +266,14 @@ describe('Reference', () => {
|
||||
expect(book.name).toBe(bk.actual);
|
||||
|
||||
for (let i = 1; i < book.lastChapter; i++) {
|
||||
expect(
|
||||
new BibleReference(
|
||||
bk.abbr + ' ' + i + ':3-' + (i + 1) + ':6'
|
||||
).toString()
|
||||
).toBe(bk.actual + ' ' + i + ':3 - ' + (i + 1) + ':6');
|
||||
expect(new BibleReference(bk.abbr + ' ' + i + ':3-' + (i + 1) + ':6').toString()).toBe(
|
||||
bk.actual + ' ' + i + ':3 - ' + (i + 1) + ':6'
|
||||
);
|
||||
}
|
||||
|
||||
expect(new BibleReference(bk.abbr + ' 1:4-2:5').toString()).toBe(
|
||||
bk.actual + ' 1:4 - 2:5'
|
||||
);
|
||||
expect(new BibleReference(bk.abbr + ' 1:1 - 5').toString()).toBe(
|
||||
bk.actual + ' 1:1 - 5'
|
||||
);
|
||||
expect(new BibleReference(bk.abbr + ' 1:4 - 5').toString()).toBe(
|
||||
bk.actual + ' 1:4 - 5'
|
||||
);
|
||||
expect(new BibleReference(bk.abbr + ' 1:4-2:5').toString()).toBe(bk.actual + ' 1:4 - 2:5');
|
||||
expect(new BibleReference(bk.abbr + ' 1:1 - 5').toString()).toBe(bk.actual + ' 1:1 - 5');
|
||||
expect(new BibleReference(bk.abbr + ' 1:4 - 5').toString()).toBe(bk.actual + ' 1:4 - 5');
|
||||
});
|
||||
}
|
||||
|
||||
@ -297,31 +287,70 @@ describe('Reference', () => {
|
||||
});
|
||||
|
||||
describe('Reference Overlap Detection', () => {
|
||||
// it('Different books dont overlap', () => {
|
||||
// const leftRf = new BibleReference('Gen 1:1-5');
|
||||
// const rightRef = new BibleReference('Exodus 1:3-7');
|
||||
//
|
||||
// expect(BibleReference.overlap(leftRf, rightRef)).toBe(Overlap.None);
|
||||
// });
|
||||
//
|
||||
// it('Different chapters dont overlap', () => {
|
||||
// const leftRef = new BibleReference('Gen 1:1-5');
|
||||
// const rightRef = new BibleReference('Gen 2:1-5');
|
||||
//
|
||||
// expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.None);
|
||||
// });
|
||||
//
|
||||
// it('Detects Left intersects the front of Right', () => {
|
||||
// const leftRef = new BibleReference('Gen 1:1-5');
|
||||
// const rightRef = new BibleReference('Gen 1:4-5');
|
||||
//
|
||||
// expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Intersect);
|
||||
// });
|
||||
it('Different books dont overlap', () => {
|
||||
const leftRef = new BibleReference('Gen 1:1-5');
|
||||
const rightRef = new BibleReference('Exodus 1:3-7');
|
||||
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.None);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toBeNull();
|
||||
});
|
||||
|
||||
it('Different chapters dont overlap', () => {
|
||||
const leftRef = new BibleReference('Gen 1:1-5');
|
||||
const rightRef = new BibleReference('Gen 2:1-5');
|
||||
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.None);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toBeNull();
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
||||
});
|
||||
|
||||
it('Detects Left intersects the front of Right', () => {
|
||||
const leftRef = new BibleReference('Gen 1:1-5');
|
||||
const rightRef = new BibleReference('Gen 1:4-6');
|
||||
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Intersect);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(new BibleReference('Gen 1:1-6'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).toBeNull();
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
||||
});
|
||||
|
||||
it('Detects Right intersects the front of left', () => {
|
||||
const leftRef = new BibleReference('Gen 1:7-10');
|
||||
const rightRef = new BibleReference('Gen 1:5-8');
|
||||
const rightRef = new BibleReference('Gen 1:1-8');
|
||||
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Intersect);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).toBeNull();
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
it('Detects Left embedded in Right', () => {
|
||||
const leftRef = new BibleReference('Gen 1:2-8');
|
||||
const rightRef = new BibleReference('Gen 1:1-10');
|
||||
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Subset);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
||||
});
|
||||
|
||||
it('Detects Both are Equal', () => {
|
||||
const leftRef = new BibleReference('Gen 1:1-10');
|
||||
const rightRef = new BibleReference('Gen 1:1-10');
|
||||
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Subset);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
});
|
||||
|
||||
it('Detects Right embedded in Left', () => {
|
||||
const leftRef = new BibleReference('Gen 1:1-10');
|
||||
const rightRef = new BibleReference('Gen 1:2-8');
|
||||
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Subset);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
||||
});
|
||||
});
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user