summaryrefslogtreecommitdiff
path: root/mac/.config/mpv/script-modules/utf8/test/charclass_compiletime.lua
diff options
context:
space:
mode:
Diffstat (limited to 'mac/.config/mpv/script-modules/utf8/test/charclass_compiletime.lua')
-rw-r--r--mac/.config/mpv/script-modules/utf8/test/charclass_compiletime.lua165
1 files changed, 165 insertions, 0 deletions
diff --git a/mac/.config/mpv/script-modules/utf8/test/charclass_compiletime.lua b/mac/.config/mpv/script-modules/utf8/test/charclass_compiletime.lua
new file mode 100644
index 0000000..05d762d
--- /dev/null
+++ b/mac/.config/mpv/script-modules/utf8/test/charclass_compiletime.lua
@@ -0,0 +1,165 @@
+local utf8 = require "init"
+utf8.config = {
+ debug = nil,
+-- debug = utf8:require("util").debug,
+}
+utf8:init()
+
+local ctx = utf8:require("context.compiletime"):new()
+
+local equals = require 'test.util'.equals
+local assert = require 'test.util'.assert
+local assert_equals = require 'test.util'.assert_equals
+local parse = utf8.regex.compiletime.charclass.parse
+
+assert_equals({parse("aabb", "a", 1, ctx)}, {{codes = {utf8.byte("a")}}, 1})
+assert_equals({parse("aabb", "a", 2, ctx)}, {{codes = {utf8.byte("a")}}, 1})
+assert_equals({parse("aabb", "b", 3, ctx)}, {{codes = {utf8.byte("b")}}, 1})
+assert_equals({parse("aabb", "b", 4, ctx)}, {{codes = {utf8.byte("b")}}, 1})
+
+assert_equals({parse("aa%ab", "%", 3, ctx)}, {{classes = {'alpha'}}, 2})
+assert_equals({parse("aac%Ab", "%", 4, ctx)}, {{not_classes = {'alpha'}}, 2})
+assert_equals({parse("aa.b", ".", 3, ctx)}, {{inverted = true}, 1})
+
+assert_equals({parse("aa[c]b", "[", 3, ctx)}, {
+ {codes = {utf8.byte("c")}, ranges = nil, classes = nil, not_classes = nil},
+ utf8.raw.len("[c]")
+})
+
+assert_equals({parse("aa[%A]b", "[", 3, ctx)}, {
+ {codes = nil, ranges = nil, classes = nil, not_classes = {'alpha'}},
+ utf8.raw.len("[%A]")
+})
+
+assert_equals({parse("[^%p%d%s%c]+", "[", 1, ctx)}, {
+ {codes = nil, ranges = nil, classes = {'punct', 'digit', 'space', 'cntrl'}, not_classes = nil, inverted = true},
+ utf8.raw.len("[^%p%d%s%c]")
+})
+
+assert_equals({parse("aa[[c]]b", "[", 3, ctx)}, {
+ {codes = {utf8.byte("["), utf8.byte("c")}, ranges = nil, classes = nil, not_classes = nil},
+ utf8.raw.len("[[c]")
+})
+
+assert_equals({parse("aa[%a[c]]b", "[", 3, ctx)}, {
+ {codes = {utf8.byte("["), utf8.byte("c")}, ranges = nil, classes = {'alpha'}, not_classes = nil},
+ utf8.raw.len("[%a[c]")
+})
+
+assert_equals({parse("aac-db", "c", 3, ctx)}, {
+ {codes = {utf8.byte("c")}},
+ utf8.raw.len("c")
+})
+
+assert_equals({parse("aa[c-d]b", "[", 3, ctx)}, {
+ {codes = nil, ranges = {{utf8.byte("c"),utf8.byte("d")}}, classes = nil, not_classes = nil},
+ utf8.raw.len("[c-d]")
+})
+assert_equals(ctx.internal, false)
+
+assert_equals({parse("aa[c-]]b", "[", 3, ctx)}, {
+ {codes = {utf8.byte("-"), utf8.byte("c")}, ranges = nil, classes = nil, not_classes = nil},
+ utf8.raw.len("[c-]")
+})
+assert_equals(ctx.internal, false)
+
+assert_equals({parse("aad-", "d", 3, ctx)}, {
+ {codes = {utf8.byte("d")}},
+ utf8.raw.len("d")
+})
+assert_equals(ctx.internal, false)
+
+ctx.internal = false
+assert_equals({parse(".", ".", 1, ctx)}, {
+ {inverted = true},
+ utf8.raw.len(".")
+})
+
+assert_equals({parse("[.]", "[", 1, ctx)}, {
+ {codes = {utf8.byte(".")}},
+ utf8.raw.len("[.]")
+})
+
+assert_equals({parse("%?", "%", 1, ctx)}, {
+ {codes = {utf8.byte("?")}},
+ utf8.raw.len("%?")
+})
+
+assert_equals({parse("[]]", "[", 1, ctx)}, {
+ {codes = {utf8.byte("]")}},
+ utf8.raw.len("[]]")
+})
+
+assert_equals({parse("[^]]", "[", 1, ctx)}, {
+ {codes = {utf8.byte("]")}, inverted = true},
+ utf8.raw.len("[^]]")
+})
+
+--[[--
+multibyte chars
+--]]--
+
+assert_equals({parse("ббюю", "б", #"" + 1, ctx)}, {{codes = {utf8.byte("б")}}, utf8.raw.len("б")})
+assert_equals({parse("ббюю", "б", #"б" + 1, ctx)}, {{codes = {utf8.byte("б")}}, utf8.raw.len("б")})
+assert_equals({parse("ббюю", "ю", #"бб" + 1, ctx)}, {{codes = {utf8.byte("ю")}}, utf8.raw.len("ю")})
+assert_equals({parse("ббюю", "ю", #"ббю" + 1, ctx)}, {{codes = {utf8.byte("ю")}}, utf8.raw.len("ю")})
+
+assert_equals({parse("бб%aю", "%", #"бб" + 1, ctx)}, {{classes = {'alpha'}}, 2})
+assert_equals({parse("ббц%Aю", "%", #"ббц" + 1, ctx)}, {{not_classes = {'alpha'}}, 2})
+assert_equals({parse("бб.ю", ".", #"бб" + 1, ctx)}, {{inverted = true}, 1})
+
+assert_equals({parse("бб[ц]ю", "[", #"бб" + 1, ctx)}, {
+ {codes = {utf8.byte("ц")}, ranges = nil, classes = nil, not_classes = nil},
+ utf8.raw.len("[ц]")
+})
+
+assert_equals({parse("бб[%A]ю", "[", #"бб" + 1, ctx)}, {
+ {codes = nil, ranges = nil, classes = nil, not_classes = {'alpha'}},
+ utf8.raw.len("[%A]")
+})
+
+assert_equals({parse("бб[[ц]]ю", "[", #"бб" + 1, ctx)}, {
+ {codes = {utf8.byte("["), utf8.byte("ц")}, ranges = nil, classes = nil, not_classes = nil},
+ utf8.raw.len("[[ц]")
+})
+
+assert_equals({parse("бб[%a[ц]]ю", "[", #"бб" + 1, ctx)}, {
+ {codes = {utf8.byte("["), utf8.byte("ц")}, ranges = nil, classes = {'alpha'}, not_classes = nil},
+ utf8.raw.len("[%a[ц]")
+})
+
+ctx.internal = true
+assert_equals({parse("ббц-ыю", "ц", #"бб" + 1, ctx)}, {
+ {ranges = {{utf8.byte("ц"),utf8.byte("ы")}}},
+ utf8.raw.len("ц-ы")
+})
+
+ctx.internal = false
+assert_equals({parse("бб[ц-ы]ю", "[", #"бб" + 1, ctx)}, {
+ {codes = nil, ranges = {{utf8.byte("ц"),utf8.byte("ы")}}, classes = nil, not_classes = nil},
+ utf8.raw.len("[ц-ы]")
+})
+
+assert_equals({parse("бб[ц-]]ю", "[", #"бб" + 1, ctx)}, {
+ {codes = {utf8.byte("-"), utf8.byte("ц")}, ranges = nil, classes = nil, not_classes = nil},
+ utf8.raw.len("[ц-]")
+})
+
+assert_equals({parse("ббы-", "ы", #"бб" + 1, ctx)}, {
+ {codes = {utf8.byte("ы")}},
+ utf8.raw.len("ы")
+})
+
+ctx.internal = true
+assert_equals({parse("ббы-цю", "ы", #"бб" + 1, ctx)}, {
+ {ranges = {{utf8.byte("ы"),utf8.byte("ц")}}},
+ utf8.raw.len("ы-ц")
+})
+
+ctx.internal = false
+assert_equals({parse("бб[ы]ю", "[", #"бб" + 1, ctx)}, {
+ {codes = {utf8.byte("ы")}, ranges = nil, classes = nil, not_classes = nil},
+ utf8.raw.len("[ы]")
+})
+
+print "OK"