<feed xmlns='http://www.w3.org/2005/Atom'>
<title>org-drill/tests/test-org-drill-item-data-roundtrip.el, branch main</title>
<subtitle>Spaced-repetition flashcards for Org Mode
</subtitle>
<id>https://git.cjennings.net/org-drill/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/org-drill/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/'/>
<updated>2026-05-28T01:47:35+00:00</updated>
<entry>
<title>refactor: thread card-state struct through the item-data round-trip</title>
<updated>2026-05-28T01:47:35+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-28T01:47:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=39d01b75ac679410821ce5e16c09ec6b7799f791'/>
<id>urn:sha1:39d01b75ac679410821ce5e16c09ec6b7799f791</id>
<content type='text'>
Second step of #147. get-item-data now returns an org-drill-card-state and store-item-data takes one, so the six recall fields move as named slots instead of a positional list. The three call sites (smart-reschedule, hypothetical-next-review-date, copy-scheduling-to-marker) read scheduler inputs through accessors and build a struct for the store, which removes the hand re-ordering between the get-shape and the store-shape.

Behavior is unchanged. The legacy LEARN_DATA read path and the virgin-item sentinel are preserved field-for-field, and store takes just the struct because its last-interval slot already holds the interval to persist. The schedulers still take positional args; they adopt the struct in the following commits.

I updated the round-trip, integration, and setup-helper tests to build and read the struct via a small list-view helper, so the existing expected-value assertions stay readable.
</content>
</entry>
<entry>
<title>test: add round-trip tests for item-data save/load</title>
<updated>2026-05-05T09:05:23+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-05T09:05:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=784c831352ec2a60bba5199503fef7d80070a315'/>
<id>urn:sha1:784c831352ec2a60bba5199503fef7d80070a315</id>
<content type='text'>
11 ERT tests covering org-drill-get-item-data and store-item-data.

The user-facing contract: rate a card → state persists across sessions.
Three branches tested: virgin item (zero-list sentinel), modern DRILL_*
properties (read all six fields, partial-set falls back to defaults),
and legacy LEARN_DATA backward compat (precedence over modern, graceful
fallthrough on malformed data).

Round-trip tests document a deliberate type quirk: rounded fields (interval,
meanq, ease) come back as floats because org-drill-round-float returns
float; counters (repeats, failures, total-repeats) stay int. Numerically
lossless and scheduler-safe.
</content>
</entry>
</feed>
