AtlatestRepositorysigil-wm
1
/* SPDX-License-Identifier: BSD-3-Clause */2
#define listen socket_listen3
#include <sys/socket.h>4
#undef listen5
#include "../src/c/host.c"6
#include <assert.h>8
int main(void) {9
struct server s={0};10
wl_list_init(&s.views); wl_list_init(&s.pixels); wl_list_init(&s.outputs);11
s.scene=wlr_scene_create(); assert(s.scene);12
s.normal=wlr_scene_tree_create(&s.scene->tree); assert(s.normal);13
s.cursor=wlr_cursor_create(); assert(s.cursor);14
s.cursor->x=40; s.cursor->y=40;15
bridge.event_fd=eventfd(0,EFD_NONBLOCK|EFD_CLOEXEC); assert(bridge.event_fd>=0);16
struct view view={.id=1,.mapped=true,.tree=wlr_scene_tree_create(s.normal)};17
struct pixels border={.id=2,.scene=wlr_scene_buffer_create(s.normal,NULL)};18
assert(view.tree && border.scene);19
wl_list_insert(&s.views,&view.link); wl_list_insert(&s.pixels,&border.link);20
wlr_scene_node_set_position(&view.tree->node,100,100);21
wlr_scene_node_set_position(&border.scene->node,99,99);22
int64_t payload[]={1,272,40000,40000,2,1,-2};23
struct wm_message event;24
assert(scene_move_start(&s,10,payload,7)); /* release overtook copied admission */25
assert(!s.scene_move.active && pop(&bridge.events,&event));26
assert(event.word[0]==38 && event.word[4]==10 && event.word[5]==1);27
assert(event.word[2]==0 && event.word[3]==0);28
s.intercepted_buttons[0].held=true; s.intercepted_buttons[0].code=272;29
s.intercepted_buttons[0].device=9;30
assert(scene_move_start(&s,11,payload,7));31
s.cursor->x=80; s.cursor->y=60; scene_move_update(&s);32
assert(view.tree->node.x==140 && view.tree->node.y==120);33
assert(border.scene->node.x==139 && border.scene->node.y==119);34
assert(view.tree->node.link.next==&border.scene->node.link); /* no restack */35
scene_move_position(&s,1,&view.tree->node,100,100);36
scene_move_position(&s,-2,&border.scene->node,99,99);37
assert(view.tree->node.x==140 && border.scene->node.x==139);38
int64_t stale[]={1,1,0,200,1,100,100,64,64,1,0,0,0,0};39
scene_move_plan(&s,stale); assert(s.scene_move.retained && s.scene_move.active);40
struct input release={.kind=31,.code=272,.device=8};41
scene_move_button(&s,&release); assert(s.scene_move.active);42
release.device=9; scene_move_button(&s,&release); assert(!s.scene_move.active);43
assert(pop(&bridge.events,&event));44
assert(event.word[0]==38 && event.word[1]==1 && event.word[2]==40 && event.word[3]==20 && event.word[4]==11 && event.word[5]==0);45
scene_move_plan(&s,stale); assert(s.scene_move.retained);46
stale[5]=140; stale[6]=120; scene_move_plan(&s,stale); assert(!s.scene_move.retained);47
int64_t duplicate[]={1,272,40000,40000,2,1,1};48
assert(!scene_move_start(&s,12,duplicate,7));49
int64_t missing_owner[]={1,272,40000,40000,1,-2};50
assert(!scene_move_start(&s,12,missing_owner,6));51
payload[2]=INT64_MAX; assert(!scene_move_start(&s,12,payload,7)); payload[2]=80000; payload[3]=60000;52
int64_t retired[]={1,272,80000,60000,2,1,-999};53
assert(scene_move_start(&s,99,retired,7));54
assert(pop(&bridge.events,&event) && event.word[4]==99 && event.word[5]==1);55
assert(!s.scene_move.active);56
assert(scene_move_start(&s,12,payload,7));57
stale[5]=0; stale[6]=0; stale[11]=1;58
scene_move_plan(&s,stale); assert(!s.scene_move.active && !s.scene_move.retained);59
scene_move_position(&s,1,&view.tree->node,0,0); assert(view.tree->node.x==0);60
assert(scene_move_start(&s,13,payload,7));61
s.lock_state=1; assert(!scene_move_motion(&s,0,90,60,0,0)); assert(!s.scene_move.active);62
s.lock_state=0; assert(scene_move_start(&s,14,payload,7));63
view.mapped=false; assert(!scene_move_motion(&s,0,90,60,0,0)); assert(!s.scene_move.active);64
close(bridge.event_fd); wlr_cursor_destroy(s.cursor); wlr_scene_node_destroy(&s.scene->tree.node);65
puts("SCENE_MOVE=PASS admission stale-start retired-resource grouped-geometry stable-order stale-plans release lock unmap");66
return 0;67
}