store(&NAME) '019 - multiple deadkeys'
c Description: Tests deadkey scenarios
c 1. One deadkey in context                   dk(1) + '1'
c 2. One char and one deadkey in context      'a' dk(2) + '2'
c 3. One deadkey and one char in context      dk(3) 'a' + '3'
c 4. Two deadkeys in a row in context         dk(4a) dk(4b) + '4'
c 5. One char and two deadkeys in context     'a' dk(5a) dk(5b) + '5'
c 6. One char and two deadkeys and one char in context     'a' dk(6a) dk(6b) 'b' + '6'
c 7. Two deadkeys and one char in context     dk(7a) dk(7b) 'a' + '7'
c 8. Three deadkeys in context                dk(8a) dk(8b) dk(8c) + '8'
c 9. Replacing deadkeys in context via rule   [9][x][x]
c keys: [K_1][K_X][K_2][K_X][K_3][K_X][K_4][K_X][K_5][K_X][K_6][K_X][K_7][K_X][K_8][K_X][K_9][K_X][K_X]
c expected: 1=OK 2=OK 3=OK 4=OK 5=OK 6=OK 7=OK 8=OK 9=OK
c context:

store(&VERSION) '9.0'

begin unicode > use(main)

group(main) using keys

+ '1' > dk(1)
dk(1) + 'x' > '1=OK '

+ '2' > 'a' dk(2)
'a' dk(2) + 'x' > '2=OK '

+ '3' > dk(3) 'a'
dk(3) 'a' + 'x' > '3=OK '

+ '4' > dk(4a) dk(4b)
dk(4a) dk(4b) + 'x' > '4=OK '

+ '5' > 'a' dk(5a) dk(5b)
'a' dk(5a) dk(5b) + 'x' > '5=OK '

+ '6' > 'a' dk(6a) dk(6b) 'b'
'a' dk(6a) dk(6b) 'b' + 'x' > '6=OK '

+ '7' > dk(7a) dk(7b) 'a'
dk(7a) dk(7b) 'a' + 'x' > '7=OK '
dk(7a) 'a' + 'x' > '7=Fail1 '
dk(7b) 'a' + 'x' > '7=Fail2 '

+ '8' > dk(8a) dk(8b) dk(8c)
dk(8a) dk(8b) dk(8c) + 'x' > '8=OK '
dk(8a) + 'x' > '8=Fail1 '
dk(8b) + 'x' > '8=Fail2 '
dk(8c) + 'x' > '8=Fail3 '
dk(8a) dk(8b) + 'x' > '8=Fail4 '
dk(8a) dk(8c) + 'x' > '8=Fail5 '
dk(8b) dk(8c) + 'x' > '8=Fail6 '

c [K_9] [K_X] [K_X] -> test that

+ '9' > '{' dk(9a) dk(9b) '}' dk(9c) dk(9d)

dk(9b) '}' dk(9c) dk(9d) + 'x' > dk(9e) '}' dk(9f) dk(9g)
'{' dk(9a) dk(9e) '}' dk(9f) dk(9g) + 'x' > '9=OK'
