# This test case illustrates a bug with the syllable opcode
# (https://github.com/liblouis/liblouis/issues/354). A single instance
# of a word where a syllable rule is triggered is translated
# correctly. Two words is a row are also fine. However the third
# instance of the very same word is not correctly translated. If you
# check with lou_trace you'll notice that the syllable rule is not
# even used. Funnily enough the fourth instance is translated
# correctly again.

table: [tables/unicode-without-blank.dis, tables/de-g2.ctb]
tests:
  - # translating the word once works fine
    - abhörauftrag
    - ⠁⠃⠓⠪⠗⠂⠡⠞⠛
  - # translating the word twice works also fine
    - abhörauftrag abhörauftrag
    - ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛
  - # translating the word the third time results in an wrong translation
    - abhörauftrag abhörauftrag abhörauftrag
    - ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛

  - # the fourth translation is correct again
    # (but the third is of course still wrong)
    - abhörauftrag abhörauftrag abhörauftrag abhörauftrag
    - ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛

  - # the fifth translation is wrong again
    - abhörauftrag abhörauftrag abhörauftrag abhörauftrag abhörauftrag
    - ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛

  - # ... and the sixth is correct
    - abhörauftrag abhörauftrag abhörauftrag abhörauftrag abhörauftrag abhörauftrag
    - ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛ ⠁⠃⠓⠪⠗⠂⠡⠞⠛

  - # Now let's see if the bug is also exposed when using no umlauts.
    # No. Apparently this bug is only triggered for umlauts
    - lehrauftrag
    - ⠇⠶⠗⠂⠡⠞⠛
  -
    - lehrauftrag lehrauftrag
    - ⠇⠶⠗⠂⠡⠞⠛ ⠇⠶⠗⠂⠡⠞⠛
  -
    - lehrauftrag lehrauftrag lehrauftrag
    - ⠇⠶⠗⠂⠡⠞⠛ ⠇⠶⠗⠂⠡⠞⠛ ⠇⠶⠗⠂⠡⠞⠛
  -
    - lehrauftrag lehrauftrag lehrauftrag lehrauftrag
    - ⠇⠶⠗⠂⠡⠞⠛ ⠇⠶⠗⠂⠡⠞⠛ ⠇⠶⠗⠂⠡⠞⠛ ⠇⠶⠗⠂⠡⠞⠛

  - # let's also test some consequtive syllables
    - aufbauschreibangebotsemester
    - ⠂⠡⠃⠡⠱⠃⠖⠯⠃⠕⠞⠎⠷⠑⠾⠻
  -
    - aufbauschreibangebotsemester aufbauschreibangebotsemester
    - ⠂⠡⠃⠡⠱⠃⠖⠯⠃⠕⠞⠎⠷⠑⠾⠻ ⠂⠡⠃⠡⠱⠃⠖⠯⠃⠕⠞⠎⠷⠑⠾⠻
  -
    - aufbauschreibangebotsemester aufbauschreibangebotsemester aufbauschreibangebotsemester
    - ⠂⠡⠃⠡⠱⠃⠖⠯⠃⠕⠞⠎⠷⠑⠾⠻ ⠂⠡⠃⠡⠱⠃⠖⠯⠃⠕⠞⠎⠷⠑⠾⠻ ⠂⠡⠃⠡⠱⠃⠖⠯⠃⠕⠞⠎⠷⠑⠾⠻
