mirror of
https://github.com/netbirdio/netbird.git
synced 2026-05-19 23:29:56 +00:00
76 lines
1.5 KiB
Go
76 lines
1.5 KiB
Go
package server
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestCoalesceRects(t *testing.T) {
|
|
cases := []struct {
|
|
name string
|
|
in [][4]int
|
|
want [][4]int
|
|
}{
|
|
{
|
|
name: "empty",
|
|
in: nil,
|
|
want: nil,
|
|
},
|
|
{
|
|
name: "single",
|
|
in: [][4]int{{0, 0, 64, 64}},
|
|
want: [][4]int{{0, 0, 64, 64}},
|
|
},
|
|
{
|
|
name: "horizontal_run",
|
|
in: [][4]int{{0, 0, 64, 64}, {64, 0, 64, 64}, {128, 0, 64, 64}},
|
|
want: [][4]int{{0, 0, 192, 64}},
|
|
},
|
|
{
|
|
name: "vertical_run",
|
|
in: [][4]int{{0, 0, 64, 64}, {0, 64, 64, 64}, {0, 128, 64, 64}},
|
|
want: [][4]int{{0, 0, 64, 192}},
|
|
},
|
|
{
|
|
name: "block_2x2",
|
|
in: [][4]int{
|
|
{0, 0, 64, 64}, {64, 0, 64, 64},
|
|
{0, 64, 64, 64}, {64, 64, 64, 64},
|
|
},
|
|
want: [][4]int{{0, 0, 128, 128}},
|
|
},
|
|
{
|
|
name: "no_merge_gap",
|
|
in: [][4]int{{0, 0, 64, 64}, {192, 0, 64, 64}},
|
|
want: [][4]int{{0, 0, 64, 64}, {192, 0, 64, 64}},
|
|
},
|
|
{
|
|
name: "two_disjoint_columns",
|
|
in: [][4]int{
|
|
{0, 0, 64, 64}, {192, 0, 64, 64},
|
|
{0, 64, 64, 64}, {192, 64, 64, 64},
|
|
},
|
|
want: [][4]int{{0, 0, 64, 128}, {192, 0, 64, 128}},
|
|
},
|
|
{
|
|
name: "misaligned_widths_no_vertical_merge",
|
|
in: [][4]int{
|
|
{0, 0, 128, 64},
|
|
{0, 64, 64, 64},
|
|
},
|
|
want: [][4]int{{0, 0, 128, 64}, {0, 64, 64, 64}},
|
|
},
|
|
}
|
|
for _, tc := range cases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
got := coalesceRects(tc.in)
|
|
if len(got) == 0 && len(tc.want) == 0 {
|
|
return
|
|
}
|
|
if !reflect.DeepEqual(got, tc.want) {
|
|
t.Fatalf("got %v want %v", got, tc.want)
|
|
}
|
|
})
|
|
}
|
|
}
|