matchergroup_simple_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package strmatcher_test
  2. import (
  3. "reflect"
  4. "testing"
  5. "github.com/v2fly/v2ray-core/v4/common"
  6. . "github.com/v2fly/v2ray-core/v4/common/strmatcher"
  7. )
  8. func TestSimpleMatcherGroup(t *testing.T) {
  9. patterns := []struct {
  10. pattern string
  11. mType Type
  12. }{
  13. {
  14. pattern: "v2fly.org",
  15. mType: Domain,
  16. },
  17. {
  18. pattern: "v2fly.org",
  19. mType: Full,
  20. },
  21. {
  22. pattern: "v2fly.org",
  23. mType: Regex,
  24. },
  25. }
  26. cases := []struct {
  27. input string
  28. output []uint32
  29. }{
  30. {
  31. input: "www.v2fly.org",
  32. output: []uint32{0, 2},
  33. },
  34. {
  35. input: "v2fly.org",
  36. output: []uint32{0, 1, 2},
  37. },
  38. {
  39. input: "www.v3fly.org",
  40. output: []uint32{},
  41. },
  42. {
  43. input: "2fly.org",
  44. output: []uint32{},
  45. },
  46. {
  47. input: "xv2fly.org",
  48. output: []uint32{2},
  49. },
  50. {
  51. input: "v2flyxorg",
  52. output: []uint32{2},
  53. },
  54. }
  55. matcherGroup := &SimpleMatcherGroup{}
  56. for id, entry := range patterns {
  57. matcher, err := entry.mType.New(entry.pattern)
  58. common.Must(err)
  59. common.Must(AddMatcherToGroup(matcherGroup, matcher, uint32(id)))
  60. }
  61. for _, test := range cases {
  62. if r := matcherGroup.Match(test.input); !reflect.DeepEqual(r, test.output) {
  63. t.Error("unexpected output: ", r, " for test case ", test)
  64. }
  65. }
  66. }