Laurenz 57ca9628c1 Better space coalescing logic 🌧
This creates a smaller state machine helper type for softness coalescing, which does not own the resulting nodes. While this creates a bit more duplication in stack and par builder, it makes it a lot easier to integrate additional logic into the paragraph builder.

Furthermore:
- Line breaks are now "hard", that is, not coalesced with each other.
- Text nodes with equal style are now merged allowing for example `f{}i` to form a ligature.
2021-03-27 21:52:39 +01:00
..
2021-03-27 21:52:39 +01:00
2021-02-18 15:19:29 +01:00
2021-03-27 21:52:39 +01:00
2021-03-19 17:57:31 +01:00
2021-03-24 21:48:25 +01:00

Tests

Directory structure

Top level directory structure:

  • typ: Input files.
  • res: Resource files used by tests.
  • ref: Reference images which the output is compared with to determine whether a test passed or failed.
  • png: PNG files produced by tests.
  • pdf: PDF files produced by tests.

Running the tests

Running the integration tests (the tests in this directory).

cargo test --test typeset

Running all tests whose names contain the word filter.

cargo test --test typeset filter

To make the integration tests go faster they don't generate PDFs by default. Pass the --pdf flag to generate those. Mind that PDFs are not tested automatically at the moment, so you should always check the output manually when making changes.

cargo test --test typeset -- --pdf

Creating new tests

To keep things small, please optimize reference images before committing them. When you use the approve buttom from the Test Helper (see the tools folder) this happens automatically if you have oxipng installed.

# One image
oxipng -o max path/to/image.png

# All images
oxipng -r -o max tests/ref