#!tools/lou_checkyaml

# A collection of tests related to whether or not it is needed to
# define characters and braille cells (in character definition rules)
# in order to be able to use them in other rules.

# A cell in a multi-cell character definition does not need to be defined in its own character definition.
# It works as long as there is a display rule to display the cell in the output...
table: |
  display x 2
  sign a 1
  sign b 1-2
# ... or as long as the cell does not end up in output.
table: |
  sign x 3
  sign a 1
  sign b 1-2
  noback pass2 @2 @3
  nofor pass2 @3 @2
flags: {testmode: bothDirections}
tests:
  - - b
    - ax
# If a cell ends up in the output and can not be displayed, it results in an error.
# FIXME: use the expectedError flag (https://github.com/liblouis/liblouis/issues/875)
# table: |
#   sign a 1
#   sign b 1-2
# flags: {testmode: forward}
# tests:
#   - - b
#     - "a "

# A braille cell used in a begcapsword rule does not need to be previously defined in a character definition rule.
# It works as long as there is a display rule to display the cell in the output...
table: |
  display x 2
  uplow Aa 1
  begcapsword 2
# ... or as long as the cell does not end up in output.
table: |
  sign x 3
  uplow Aa 1
  begcapsword 2
  noback pass2 @2 @3
  nofor pass2 @3 @2
flags: {testmode: bothDirections}
tests:
  - - AA
    - xaa
# If a cell ends up in the output and can not be displayed, it results in an error.
# FIXME: use the expectedError flag (https://github.com/liblouis/liblouis/issues/875)
# table: |
#   uplow Aa 1
#   begcapsword 2
# flags: {testmode: forward}
# tests:
#   - - AA
#     - " aa"

# Characters or braille cells used in a context rule do not need to be previously defined in character definition rules.
table: |
  display x 1
  noback context "a" @1
  nofor context @1 "a"
flags: {testmode: bothDirections}
tests:
  - - a
    - x

# A character used in a class or swap name does not need to be previously defined in a character definition rule.
table: |
  sign a 1
  sign b 2
  sign c 3
  class foo a
  swapcd bar b 3
  noback context %foo @3
  noback context %bar %bar
flags: {testmode: forward}
tests:
  - - a
    - c
  - - b
    - c

# A character that is assigned to a class does not need to be previously defined in a character definition rule.
table: |
  display x 1
  class foo a
  noback context %foo @1
flags: {testmode: forward}
tests:
  - - a
    - x

# Characters in a hyphenation pattern do not need to be previously defined in character definition rules.
table: |
  letter a 1
  letter b 2
  include issue-332_hyph.dic # a1b
flags: {testmode: hyphenate}
tests:
  - - aaabbb
    - aaa-bbb

# Characters or braille cells used in a always rule do not need to be previously defined in character definition rules.
# It works as long as there is a display rule to display the cell in the output...
table: |
  display x 2
  always a 2-2
# ... or as long as the cell does not end up in output.
table: |
  sign x 3
  always a 2-2
  noback pass2 @2 @3
  nofor pass2 @3 @2
flags: {testmode: bothDirections}
tests:
  - - a
    - xx
# If a cell ends up in the output and can not be displayed, it results in an error.
# FIXME: use the expectedError flag (https://github.com/liblouis/liblouis/issues/875)
# table: |
#   always a 2
# flags: {testmode: forward}
# tests:
#   - - a
#     - " "
