Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.0 KiB
100 lines
2.0 KiB
// Copyright 2020 The Gitea Authors. All rights reserved. |
|
// Copyright 2015 Kenneth Shaw |
|
// Use of this source code is governed by a MIT-style |
|
// license that can be found in the LICENSE file. |
|
|
|
package emoji |
|
|
|
import ( |
|
"reflect" |
|
"testing" |
|
|
|
"github.com/stretchr/testify/assert" |
|
) |
|
|
|
func TestDumpInfo(t *testing.T) { |
|
t.Logf("codes: %d", len(codeMap)) |
|
t.Logf("aliases: %d", len(aliasMap)) |
|
} |
|
|
|
func TestLookup(t *testing.T) { |
|
a := FromCode("\U0001f37a") |
|
b := FromCode("🍺") |
|
c := FromAlias(":beer:") |
|
d := FromAlias("beer") |
|
|
|
if !reflect.DeepEqual(a, b) { |
|
t.Errorf("a and b should equal") |
|
} |
|
if !reflect.DeepEqual(b, c) { |
|
t.Errorf("b and c should equal") |
|
} |
|
if !reflect.DeepEqual(c, d) { |
|
t.Errorf("c and d should equal") |
|
} |
|
if !reflect.DeepEqual(a, d) { |
|
t.Errorf("a and d should equal") |
|
} |
|
|
|
m := FromCode("\U0001f44d") |
|
n := FromAlias(":thumbsup:") |
|
o := FromAlias("+1") |
|
|
|
if !reflect.DeepEqual(m, n) { |
|
t.Errorf("m and n should equal") |
|
} |
|
if !reflect.DeepEqual(n, o) { |
|
t.Errorf("n and o should equal") |
|
} |
|
if !reflect.DeepEqual(m, o) { |
|
t.Errorf("m and o should equal") |
|
} |
|
} |
|
|
|
func TestReplacers(t *testing.T) { |
|
tests := []struct { |
|
f func(string) string |
|
v, exp string |
|
}{ |
|
{ReplaceCodes, ":thumbsup: +1 for \U0001f37a! 🍺 \U0001f44d", ":thumbsup: +1 for :beer:! :beer: :+1:"}, |
|
{ReplaceAliases, ":thumbsup: +1 :+1: :beer:", "\U0001f44d +1 \U0001f44d \U0001f37a"}, |
|
} |
|
|
|
for i, x := range tests { |
|
s := x.f(x.v) |
|
if s != x.exp { |
|
t.Errorf("test %d `%s` expected `%s`, got: `%s`", i, x.v, x.exp, s) |
|
} |
|
} |
|
} |
|
|
|
func TestFindEmojiSubmatchIndex(t *testing.T) { |
|
type testcase struct { |
|
teststring string |
|
expected []int |
|
} |
|
|
|
testcases := []testcase{ |
|
{ |
|
"\U0001f44d", |
|
[]int{0, len("\U0001f44d")}, |
|
}, |
|
{ |
|
"\U0001f44d +1 \U0001f44d \U0001f37a", |
|
[]int{0, 4}, |
|
}, |
|
{ |
|
" \U0001f44d", |
|
[]int{1, 1 + len("\U0001f44d")}, |
|
}, |
|
{ |
|
string([]byte{'\u0001'}) + "\U0001f44d", |
|
[]int{1, 1 + len("\U0001f44d")}, |
|
}, |
|
} |
|
|
|
for _, kase := range testcases { |
|
actual := FindEmojiSubmatchIndex(kase.teststring) |
|
assert.Equal(t, kase.expected, actual) |
|
} |
|
}
|
|
|