# This test case illustrates a bug with the before opcode. When we
# have more than 19 class definitions a before rule is triggered that
# should not match. In the following scenario the `begmidword lande`
# rule should only trigger when 'lande' is before a 'u'. If one class
# definition is removed as in the second test then the correct rules
# are triggered.

table: |
  include tables/unicode.dis
  include tables/de-chardefs6.cti
  class foo zz
  class a a
  class b b
  class c c
  class d d
  class e e
  class er er
  class f f
  class h h
  class g g
  class i i
  class j j
  class k k
  class l l
  class m m
  class n n
  class r r
  class s s
  class t t
  class u u
  begmidword an 235
  always en 14
  before u begmidword lande 123-235-145-15

tests:
  # the only rules that should match here are the begmidword an and
  # the always en rule. The rule `before u begmidword lande` shouldn't
  # match but for some reason it does
  - [landend, ⠇⠖⠙⠉⠙, {xfail: true}]

# if we remove one of the class definitions then the correct rules
# match
table: |
  include tables/unicode.dis
  include tables/de-chardefs6.cti
  class a a
  class b b
  class c c
  class d d
  class e e
  class er er
  class f f
  class h h
  class g g
  class i i
  class j j
  class k k
  class l l
  class m m
  class n n
  class r r
  class s s
  class t t
  class u u
  begmidword an 235
  always en 14
  before u begmidword lande 123-235-145-15

tests:
  - [landend, ⠇⠖⠙⠉⠙]

# it looks like it doesn't matter which class definition we remove
# match, as long as we remove one
table: |
  include tables/unicode.dis
  include tables/de-chardefs6.cti
  class foo zz
  class b b
  class c c
  class d d
  class e e
  class er er
  class f f
  class h h
  class g g
  class i i
  class j j
  class k k
  class l l
  class m m
  class n n
  class r r
  class s s
  class t t
  class u u
  begmidword an 235
  always en 14
  before u begmidword lande 123-235-145-15

tests:
  - [landend, ⠇⠖⠙⠉⠙]

# same story with a different word. What should match are the rules
# `always en`, `begmidword be` and `syllable stärk`. The rule
# `before u begmidword stärke` should not match at all. Again this
# seems to depend on the number of classes defined
table: |
  include tables/unicode.dis
  include tables/de-chardefs6.cti
  class foo zz
  class a a
  class b b
  class c c
  class d d
  class e e
  class er er
  class f f
  class h h
  class g g
  class i i
  class j j
  class k k
  class l l
  class m m
  class n n
  class r r
  class s s
  class t t
  class u u
  always en 14
  begmidword be 23
  syllable stärk 23456-345-1235-13
  before u begmidword stärke 23456-345-1235-13-15
  
tests:
  - [bestärkend, ⠆⠾⠜⠗⠅⠉⠙, {xfail: true}]

# If we remove a class then the translation is correct
table: |
  include tables/unicode.dis
  include tables/de-chardefs6.cti
  class a a
  class b b
  class c c
  class d d
  class e e
  class er er
  class f f
  class h h
  class g g
  class i i
  class j j
  class k k
  class l l
  class m m
  class n n
  class r r
  class s s
  class t t
  class u u
  always en 14
  begmidword be 23
  syllable stärk 23456-345-1235-13
  before u begmidword stärke 23456-345-1235-13-15
  
tests:
  - [bestärkend, ⠆⠾⠜⠗⠅⠉⠙]
