summaryrefslogtreecommitdiff
path: root/mac/.config/mpv/script-modules/utf8/test/context_runtime.lua
blob: 9a177bf2786a4b5bc4d6ba9ddfd540664c5b8c95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
local utf8 = require("init"):init()

local context = utf8:require('context.runtime')

local equals = require('test.util').equals
local assert = require('test.util').assert
local assert_equals = require('test.util').assert_equals

local ctx_en
local ctx_ru
local function setup()
  ctx_en = context.new({str = 'asdf'})
  ctx_ru = context.new({str = 'фыва'})
end

local test_get_char = (function()
  setup()

  assert_equals('a', ctx_en:get_char())
  assert_equals('ф', ctx_ru:get_char())
end)()

local test_get_charcode = (function()
  setup()

  assert_equals(utf8.byte'a', ctx_en:get_charcode())
  assert_equals(utf8.byte'ф', ctx_ru:get_charcode())
end)()

local test_next_char = (function()
  setup()

  assert_equals(1, ctx_en.pos)
  assert_equals(1, ctx_ru.pos)

  ctx_ru:next_char()
  ctx_en:next_char()

  assert_equals(2, ctx_en.pos)
  assert_equals(2, ctx_ru.pos)

  assert_equals('s', ctx_en:get_char())
  assert_equals('ы', ctx_ru:get_char())
  assert_equals(utf8.byte's', ctx_en:get_charcode())
  assert_equals(utf8.byte'ы', ctx_ru:get_charcode())
end)()

local test_clone = (function()
  setup()

  local clone = ctx_en:clone()

  assert(getmetatable(clone) == getmetatable(ctx_en))
  assert_equals(clone, ctx_en)

  ctx_en:next_char()

  assert_equals('a', clone:get_char())
  assert_equals('s', ctx_en:get_char())

end)()

local test_last_char = (function()
  ctx_en = context.new({str = 'asdf', pos = 4})
  ctx_ru = context.new({str = 'фыва', pos = 4})

  assert_equals('f', ctx_en:get_char())
  assert_equals('а', ctx_ru:get_char())

  ctx_ru:next_char()
  ctx_en:next_char()

  assert_equals(5, ctx_en.pos)
  assert_equals(5, ctx_ru.pos)

  assert_equals("", ctx_en:get_char())
  assert_equals("", ctx_ru:get_char())
  assert_equals(nil, ctx_en:get_charcode())
  assert_equals(nil, ctx_ru:get_charcode())
end)()

print('OK')