mirror of
https://github.com/MetaCubeX/Clash.Meta.git
synced 2025-04-12 13:30:54 +00:00
82 lines
1.6 KiB
Go
82 lines
1.6 KiB
Go
package utils
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
"testing"
|
|
)
|
|
|
|
func TestMergeRanges(t *testing.T) {
|
|
t.Parallel()
|
|
for _, testRange := range []struct {
|
|
ranges IntRanges[uint16]
|
|
expected IntRanges[uint16]
|
|
}{
|
|
{
|
|
ranges: IntRanges[uint16]{
|
|
NewRange[uint16](0, 1),
|
|
NewRange[uint16](1, 2),
|
|
},
|
|
expected: IntRanges[uint16]{
|
|
NewRange[uint16](0, 2),
|
|
},
|
|
},
|
|
{
|
|
ranges: IntRanges[uint16]{
|
|
NewRange[uint16](0, 3),
|
|
NewRange[uint16](5, 7),
|
|
NewRange[uint16](8, 9),
|
|
NewRange[uint16](10, 10),
|
|
},
|
|
expected: IntRanges[uint16]{
|
|
NewRange[uint16](0, 3),
|
|
NewRange[uint16](5, 10),
|
|
},
|
|
},
|
|
{
|
|
ranges: IntRanges[uint16]{
|
|
NewRange[uint16](1, 3),
|
|
NewRange[uint16](2, 6),
|
|
NewRange[uint16](8, 10),
|
|
NewRange[uint16](15, 18),
|
|
},
|
|
expected: IntRanges[uint16]{
|
|
NewRange[uint16](1, 6),
|
|
NewRange[uint16](8, 10),
|
|
NewRange[uint16](15, 18),
|
|
},
|
|
},
|
|
{
|
|
ranges: IntRanges[uint16]{
|
|
NewRange[uint16](1, 3),
|
|
NewRange[uint16](2, 7),
|
|
NewRange[uint16](2, 6),
|
|
},
|
|
expected: IntRanges[uint16]{
|
|
NewRange[uint16](1, 7),
|
|
},
|
|
},
|
|
{
|
|
ranges: IntRanges[uint16]{
|
|
NewRange[uint16](1, 3),
|
|
NewRange[uint16](2, 6),
|
|
NewRange[uint16](2, 7),
|
|
},
|
|
expected: IntRanges[uint16]{
|
|
NewRange[uint16](1, 7),
|
|
},
|
|
},
|
|
{
|
|
ranges: IntRanges[uint16]{
|
|
NewRange[uint16](1, 3),
|
|
NewRange[uint16](2, 65535),
|
|
NewRange[uint16](2, 7),
|
|
NewRange[uint16](3, 16),
|
|
},
|
|
expected: IntRanges[uint16]{
|
|
NewRange[uint16](1, 65535),
|
|
},
|
|
},
|
|
} {
|
|
assert.Equal(t, testRange.expected, testRange.ranges.Merge())
|
|
}
|
|
}
|