1package ports
2
3import "testing"
4
5func TestSceneShowsWorkspaceClip(t *testing.T) {
6 s := Scene{OutputWidth: 100, OutputHeight: 100, WorkspaceClip: Rect{X: 25, Y: 25, W: 50, H: 50}, Windows: []SceneWindow{
7 {ID: 1, Rect: Rect{W: 20, H: 20}},
8 {ID: 2, Rect: Rect{X: 30, Y: 30, W: 20, H: 20}},
9 {ID: 3, Rect: Rect{W: 20, H: 20}, Popup: true, OverLayers: true},
10 }}
11 if s.Shows(1) || !s.Shows(2) || !s.Shows(3) {
12 t.Fatalf("shown: %v %v %v", s.Shows(1), s.Shows(2), s.Shows(3))
13 }
14 s.WorkspaceClip = Rect{}
15 if !s.Shows(1) {
16 t.Fatal("inherited workspace excluded surface")
17 }
18}
19
20// A tile under a panel (outside TileArea) is not drawn; a float, a
21// fullscreen window, a preview or a popup there still is. Panels covering
22// the whole output leave no tile drawn.
23func TestSceneShowsTileInset(t *testing.T) {
24 under := Rect{Y: 80, W: 50, H: 80}
25 s := Scene{OutputWidth: 100, OutputHeight: 100, TileInset: Insets{Bottom: 20}, Windows: []SceneWindow{
26 {ID: 1, Rect: Rect{W: 50, H: 80}},
27 {ID: 2, Rect: under},
28 {ID: 3, Rect: under, Floating: true},
29 {ID: 4, Rect: under, Fullscreen: true},
30 {ID: 5, Rect: under, Preview: 0.5},
31 {ID: 6, Rect: under, Popup: true},
32 }}
33 for id, want := range map[WindowID]bool{1: true, 2: false, 3: true, 4: true, 5: true, 6: true} {
34 if got := s.Shows(id); got != want {
35 t.Errorf("window %d shown %v, want %v", id, got, want)
36 }
37 }
38 s.TileInset = Insets{Right: 100, Bottom: 100}
39 if s.Shows(1) || !s.Shows(3) {
40 t.Fatalf("no room for tiles: tile %v, float %v", s.Shows(1), s.Shows(3))
41 }
42 s.TileInset = Insets{}
43 if !s.Shows(2) {
44 t.Fatal("tile with no panel not shown")
45 }
46}
47
48func TestRectContains(t *testing.T) {
49 r := Rect{X: 10, Y: 10, W: 20, H: 20}
50 for o, want := range map[Rect]bool{r: true, {X: 15, Y: 15, W: 5, H: 5}: true, {X: 9, Y: 10, W: 5, H: 5}: false, {X: 25, Y: 25, W: 6, H: 5}: false} {
51 if got := r.Contains(o); got != want {
52 t.Errorf("%+v contains %+v = %v, want %v", r, o, got, want)
53 }
54 }
55}