Hi Greg,
In your test, on like 19, you turn off auto normalization. This means
SWORD won't mess with the values you set for the components of a verse.
If you setText("Gen.1.1"); setChapter(999); setVerse(9999); and print,
you should get "Genesis 999:9999". If you want normalization, then you
need to remove the line in your test which says key->setAutoNormalize(0);
There is a good encapsulation of how I expect normalization to work in
the test suite. The specific test is:
http://crosswire.org/svn/sword/trunk/tests/versekeytest.cpp
And the expected output is:
http://crosswire.org/svn/sword/trunk/tests/testsuite/versekeytest.good
(the labels in that test still use the old terminology of 'headings',
but this is really 'intros')
On 03/22/2013 02:02 AM, Greg Hellings wrote:
Test code: https://gist.github.com/greg-hellings/5218094
Output with your current patch, Troy, is $ g++ `pkg-config --cflags
sword` `pkg-config --libs sword` test.cpp -o test && ./test
intro: 0
bk (1): 1
ch (1): 1
vs (1): 1
-----------------
intro: 0
bk (1): 0
ch (1): 0
vs (1): 0
-----------------
intro: 1
bk (0): 0
ch (0): 0
vs (0): 0
-----------------
The value in parenthsis represents what I thought the value "should"
be. If I comment out line 19, I get this result $ g++ `pkg-config
--cflags sword` `pkg-config --libs sword` test.cpp -o test && ./test
intro: 0
bk (1): 1
ch (1): 1
vs (1): 1
-----------------
intro: 0
bk (1): 1
ch (1): 1
vs (1): 1
-----------------
intro: 1
bk (0): 0
ch (0): 0
vs (0): 0
-----------------
which matches the expected results. So Xiphos is getting around
calling setIntros(1) by instead disabling auto-normalizing. It's odd
to me that you can set a key to a value in the intros while setIntros
is false. That doesn't seem like normalizing to me, that seems more
like bounds checking, but that's not necessarily a bug in the API,
possibly it's a bug in my understanding of intended behavior.
Troy's fix along with shuffling the location of setTestament (a change
I made earlier to Xiphos' Subversion) fixes the known bugs I've seen
in Xiphos regarding chapters not rendering and Genesis 1:1 causing a
SegFault.
--Greg
On Thu, Mar 21, 2013 at 6:51 PM, Greg Hellings
<[email protected] <mailto:[email protected]>> wrote:
On Thu, Mar 21, 2013 at 6:26 PM, Troy A. Griffitts
<[email protected] <mailto:[email protected]>> wrote:
Thanks Karl,
Yes, each snippet was helpful. Nic's was a quick test which
caused the bug and was easy to use for testing. Greg's snippet
wasn't as helpful as all his comments and stack traces leading
up to his patch. He is preventing book from getting to 0 which
does alleviate the problem but also stops a book from becoming
an intro. Hope that explains.
If the conditional in my code is changed to
if (book > (intros?0:1) ) {
Then my code corrects the problem that -- was moving a VerseKey
from Genesis 1:1 to [Testament 1 Intro] when intros is false.
While not a SegFault producing bug, this is still a bug. Similar
checks should be made through the same run of code to ensure
moving to verse 0 and chapter 0 are not possible when intros is
false. Both your fix and an adapted form of mine should be
introduced. Additionally, the issue with OSISFootnotes should
probably be fixed.
I will write up a simple test case for that, if it helps, once I
get back to my development machine.
--Greg
Troy
Karl Kleinpaste <[email protected]
<mailto:[email protected]>> wrote:
You didn't also need this snippet from Greg a couple days
ago? --- src/keys/versekey.cpp (revision 2792) +++
src/keys/versekey.cpp (working copy) @@ -1347,7 +1347,9 @@
} if (verse < (intros?0:1)) { if (--chapter <
(intros?0:1)) { - --book; + if (book > 1) { + --book; + }
chapter += (getChapterMax() + (intros?1:0)); } verse +=
(getVerseMax() + (intros?1:0));
------------------------------------------------------------------------
sword-devel mailing list: [email protected]
<mailto:[email protected]>
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above
page
--
Sent from my Android phone with K-9 Mail. Please excuse my
brevity.
_______________________________________________
sword-devel mailing list: [email protected]
<mailto:[email protected]>
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list: [email protected]
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list: [email protected]
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page