| 1 | # Pages copied between sections |
| 2 | |
| 3 | `candidate/copies.one` is the destination section |
| 4 | `pages_copy_into_another_section_with_their_content_and_fresh_identities` in |
| 5 | `crates/notebook/tests/copy.rs` builds: a section created in Rust into which |
| 6 | `Section::import_page` copied one page from each of eight earlier rows (text |
| 7 | with an attachment and its icon, a table, an inserted picture, a page-level |
| 8 | ink drawing, note tags, bullets and numbering, equations, paragraph |
| 9 | formatting) and the `table-edit/nested` pages whose indent levels the model |
| 10 | can express (nested tables, cell subtrees, mixed languages; four outdent |
| 11 | pages need outline groups and refuse), each as a page creation and a save |
| 12 | queued through the replica |
| 13 | and published to the file; the last copy (paragraph formatting) was then deleted permanently |
| 14 | through `Section::delete_pages` (`expected-count.txt` is the page count |
| 15 | left). Every object carries a fresh identity (`Page::copy`), paragraph |
| 16 | styles become quick-style objects the writer creates from the copied |
| 17 | definitions (OneNote exports their font, size and colour through |
| 18 | `QuickStyleDef`, not on the runs), and payloads travelled inside the queued |
| 19 | intents. |
| 20 | |
| 21 | `cold/` is a fresh OneNote 2010 read with a screenshot per page |
| 22 | (`read/page-NNN.png`). `tools/test_page_copy.py` checks the content oracle |
| 23 | and the page set without a VM. Regenerate with `NOTEBOOK_COPY_EXPORT` set to |
| 24 | a new directory while running the test, then cold-open with |
| 25 | `tools/native_runner.py OUTPUT COLD --expected-pages 9 --collect-notebook |
| 26 | --screenshots`. |