2024-05-17 18:30:33 +08:00
|
|
|
// Copyright 2022 GoEdge goedge.cdn@gmail.com. All rights reserved.
|
2022-01-08 11:45:14 +08:00
|
|
|
|
|
|
|
|
package re_test
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"regexp"
|
|
|
|
|
"testing"
|
2024-07-27 15:42:50 +08:00
|
|
|
|
|
|
|
|
"github.com/TeaOSLab/EdgeNode/internal/utils/re"
|
|
|
|
|
"github.com/iwind/TeaGo/assert"
|
2022-01-08 11:45:14 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestNewRuneTree(t *testing.T) {
|
|
|
|
|
var a = assert.NewAssertion(t)
|
|
|
|
|
|
|
|
|
|
var tree = re.NewRuneTree([]string{"abc", "abd", "def", "GHI", "中国", "@"})
|
|
|
|
|
a.IsTrue(tree.Lookup("ABC", true))
|
|
|
|
|
a.IsTrue(tree.Lookup("ABC1", true))
|
|
|
|
|
a.IsTrue(tree.Lookup("1ABC", true))
|
|
|
|
|
a.IsTrue(tree.Lookup("def", true))
|
|
|
|
|
a.IsTrue(tree.Lookup("ghI", true))
|
|
|
|
|
a.IsFalse(tree.Lookup("d ef", true))
|
|
|
|
|
a.IsFalse(tree.Lookup("de", true))
|
|
|
|
|
a.IsFalse(tree.Lookup("de f", true))
|
|
|
|
|
a.IsTrue(tree.Lookup("我是中国人", true))
|
|
|
|
|
a.IsTrue(tree.Lookup("iwind.liu@gmail.com", true))
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-24 16:44:28 +08:00
|
|
|
func TestNewRuneTree2(t *testing.T) {
|
|
|
|
|
var tree = re.NewRuneTree([]string{"abc", "abd", "def", "GHI", "中国", "@"})
|
|
|
|
|
tree.Lookup("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36", true)
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-08 11:45:14 +08:00
|
|
|
func BenchmarkRuneMap_Lookup(b *testing.B) {
|
|
|
|
|
var tree = re.NewRuneTree([]string{"abc", "abd", "def", "ghi", "中国"})
|
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
|
|
tree.Lookup("我来自中国", true)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func BenchmarkRuneMap_Lookup2_NOT_FOUND(b *testing.B) {
|
|
|
|
|
var tree = re.NewRuneTree([]string{"abc", "abd", "cde", "GHI"})
|
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
|
|
tree.Lookup("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36", true)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func BenchmarkRune_Regexp_FOUND(b *testing.B) {
|
|
|
|
|
var reg = regexp.MustCompile("(?i)abc|abd|cde|GHI")
|
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
|
|
reg.MatchString("HELLO WORLD ABC 123 456 abc HELLO WORLD HELLO WORLD ABC 123 456 abc HELLO WORLD HELLO WORLD ABC 123 456 abc HELLO WORLD")
|
|
|
|
|
}
|
|
|
|
|
}
|