diff options
Diffstat (limited to 'test/functional/ui/multibyte_spec.lua')
| -rw-r--r-- | test/functional/ui/multibyte_spec.lua | 122 | 
1 files changed, 122 insertions, 0 deletions
diff --git a/test/functional/ui/multibyte_spec.lua b/test/functional/ui/multibyte_spec.lua new file mode 100644 index 0000000000..278480ec4f --- /dev/null +++ b/test/functional/ui/multibyte_spec.lua @@ -0,0 +1,122 @@ +local helpers = require('test.functional.helpers')(after_each) +local Screen = require('test.functional.ui.screen') +local clear = helpers.clear +local feed = helpers.feed +local feed_command = helpers.feed_command +local insert = helpers.insert +local funcs = helpers.funcs + +describe("multibyte rendering", function() +  local screen +  before_each(function() +    clear() +    screen = Screen.new(60, 6) +    screen:attach({rgb=true}) +    screen:set_default_attr_ids({ +      [1] = {bold = true, foreground = Screen.colors.Blue1}, +      [2] = {background = Screen.colors.WebGray}, +      [3] = {background = Screen.colors.LightMagenta}, +      [4] = {bold = true}, +    }) +  end) + +  after_each(function() +    screen:detach() +  end) + +  it("works with composed char at start of line", function() +    insert([[ +      ̊ +      x]]) +    feed("gg") +     -- verify the modifier infact is alone +    feed_command("ascii") +    screen:expect([[ +      ^ ̊                                                           | +      x                                                           | +      {1:~                                                           }| +      {1:~                                                           }| +      {1:~                                                           }| +      < ̊> 778, Hex 030a, Octal 1412                               | +    ]]) + +    -- a char inserted before will spontaneously merge with it +    feed("ia<esc>") +    feed_command("ascii") +    screen:expect([[ +      ^å                                                           | +      x                                                           | +      {1:~                                                           }| +      {1:~                                                           }| +      {1:~                                                           }| +      <a>  97,  Hex 61,  Octal 141 < ̊> 778, Hex 030a, Octal 1412  | +    ]]) +  end) + +  it('works with doublewidth char at end of line', function() +    feed('58a <esc>a馬<esc>') +    screen:expect([[ +                                                                ^馬| +      {1:~                                                           }| +      {1:~                                                           }| +      {1:~                                                           }| +      {1:~                                                           }| +                                                                  | +    ]]) + +    feed('i <esc>') +    screen:expect([[ +                                                                ^ {1:>}| +      馬                                                          | +      {1:~                                                           }| +      {1:~                                                           }| +      {1:~                                                           }| +                                                                  | +    ]]) + +    feed('l') +    screen:expect([[ +                                                                 {1:>}| +      ^馬                                                          | +      {1:~                                                           }| +      {1:~                                                           }| +      {1:~                                                           }| +                                                                  | +    ]]) +  end) + +  it('clears left half of double-width char when right half is overdrawn', function() +    feed('o-馬<esc>ggiab ') +    screen:expect([[ +      ab ^                                                         | +      -馬                                                         | +      {1:~                                                           }| +      {1:~                                                           }| +      {1:~                                                           }| +      {4:-- INSERT --}                                                | +    ]]) + +    -- check double-with char is temporarily hidden when overlapped +    funcs.complete(4, {'xx', 'yy'}) +    screen:expect([[ +      ab xx^                                                       | +      - {2: xx             }                                          | +      {1:~ }{3: yy             }{1:                                          }| +      {1:~                                                           }| +      {1:~                                                           }| +      {4:-- INSERT --}                                                | +    ]]) + +    -- check it is properly restored +    feed('z') +    screen:expect([[ +      ab xxz^                                                      | +      -馬                                                         | +      {1:~                                                           }| +      {1:~                                                           }| +      {1:~                                                           }| +      {4:-- INSERT --}                                                | +    ]]) +  end) +end) +  | 
