From ad7443ebd3909e94e3b1410c72d5818f4b8fb53a Mon Sep 17 00:00:00 2001 From: hujianwei Date: Fri, 4 Nov 2022 05:26:16 +0000 Subject: [PATCH] Check in new test related files * tests/basic_damage.png: * tests/damage_test.c: * tests/damage_test_1.dump: * tests/damage_test_2.dump: * tests/run_tests.sh: New files. --- tests/basic_damage.png | Bin 0 -> 18260 bytes tests/damage_test.c | 247 +++++++++++++++++++++++++++++++++++++++ tests/damage_test_1.dump | Bin 0 -> 35720 bytes tests/damage_test_2.dump | Bin 0 -> 35720 bytes tests/run_tests.sh | 47 ++++++++ 5 files changed, 294 insertions(+) create mode 100644 tests/basic_damage.png create mode 100644 tests/damage_test.c create mode 100644 tests/damage_test_1.dump create mode 100644 tests/damage_test_2.dump create mode 100755 tests/run_tests.sh diff --git a/tests/basic_damage.png b/tests/basic_damage.png new file mode 100644 index 0000000000000000000000000000000000000000..e67d4820a01063e59125f0fa9b6e6a1856283500 GIT binary patch literal 18260 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 literal 0 HcmV?d00001 diff --git a/tests/damage_test.c b/tests/damage_test.c new file mode 100644 index 0000000..742c2cc --- /dev/null +++ b/tests/damage_test.c @@ -0,0 +1,247 @@ +/* Tests for the Wayland compositor running on the X server. + +Copyright (C) 2022 to various contributors. + +This file is part of 12to11. + +12to11 is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation, either version 3 of the License, or (at your +option) any later version. + +12to11 is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with 12to11. If not, see . */ + +#include "test_harness.h" + +enum test_kind + { + MAP_WINDOW_KIND, + BASIC_TEST_CARD_IMAGE_KIND, + BASIC_DAMAGE_KIND, + }; + +static const char *test_names[] = + { + "map_window", + "basic_test_card_image", + "basic_damage" + }; + +#define LAST_TEST BASIC_DAMAGE_KIND + +/* The display. */ +static struct test_display *display; + +/* Test interfaces. */ +static struct test_interface test_interfaces[] = + { + /* No interfaces yet. */ + }; + +/* The test surface window. */ +static Window test_surface_window; + +/* The test surface and Wayland surface. */ +static struct test_surface *test_surface; +static struct wl_surface *wayland_surface; + + + +/* Forward declarations. */ +static void submit_frame_callback (struct wl_surface *, enum test_kind); +static void submit_surface_damage (struct wl_surface *, int, int, int, int); + + + +static void +verify_single_step (enum test_kind kind) +{ + switch (kind) + { + case BASIC_TEST_CARD_IMAGE_KIND: + verify_image_data (display, test_surface_window, + "damage_test_1.dump"); + break; + + case BASIC_DAMAGE_KIND: + verify_image_data (display, test_surface_window, + "damage_test_2.dump"); + break; + + default: + break; + } + + if (kind == LAST_TEST) + test_complete (); +} + +static void +test_single_step (enum test_kind kind) +{ + struct wl_buffer *buffer; + + test_log ("running test step: %s", test_names[kind]); + + switch (kind) + { + case MAP_WINDOW_KIND: + buffer = load_png_image (display, "blue.png"); + + if (!buffer) + report_test_failure ("failed to load blue.png"); + + wl_surface_attach (wayland_surface, buffer, 0, 0); + submit_surface_damage (wayland_surface, 0, 0, + INT_MAX, INT_MAX); + wl_surface_commit (wayland_surface); + wl_buffer_destroy (buffer); + break; + + case BASIC_TEST_CARD_IMAGE_KIND: + buffer = load_png_image (display, "basic_test_card.png"); + + if (!buffer) + report_test_failure ("failed to load basic_test_card.png"); + + wl_surface_attach (wayland_surface, buffer, 0, 0); + submit_frame_callback (wayland_surface, kind); + submit_surface_damage (wayland_surface, 0, 0, + INT_MAX, INT_MAX); + wl_surface_commit (wayland_surface); + wl_buffer_destroy (buffer); + break; + + case BASIC_DAMAGE_KIND: + buffer = load_png_image (display, "basic_damage.png"); + + if (!buffer) + report_test_failure ("failed to load basic_damage.png"); + + wl_surface_attach (wayland_surface, buffer, 0, 0); + submit_frame_callback (wayland_surface, kind); + submit_surface_damage (wayland_surface, 49, 26, 57, 48); + wl_surface_commit (wayland_surface); + wl_buffer_destroy (buffer); + break; + } +} + +static void +test_next_step (enum test_kind kind) +{ + switch (kind) + { + case BASIC_TEST_CARD_IMAGE_KIND: + test_single_step (BASIC_DAMAGE_KIND); + break; + + default: + break; + } +} + + + +static void +handle_test_surface_mapped (void *data, struct test_surface *surface, + uint32_t xid, const char *display_string) +{ + /* Sleep for 1 second to ensure that the window is exposed and + redirected. */ + sleep (1); + + /* Start the test. */ + test_surface_window = xid; + + /* Run the test again. */ + test_single_step (BASIC_TEST_CARD_IMAGE_KIND); +} + +static const struct test_surface_listener test_surface_listener = + { + handle_test_surface_mapped, + }; + + + +static void +handle_wl_callback_done (void *data, struct wl_callback *callback, + uint32_t callback_data) +{ + enum test_kind kind; + + /* kind is not a pointer. It is an enum test_kind stuffed into a + pointer. */ + kind = (intptr_t) data; + + wl_callback_destroy (callback); + verify_single_step (kind); + + /* Now run the next test in this sequence. */ + test_next_step (kind); +} + +static const struct wl_callback_listener wl_callback_listener = + { + handle_wl_callback_done, + }; + + + +static void +submit_frame_callback (struct wl_surface *surface, enum test_kind kind) +{ + struct wl_callback *callback; + + callback = wl_surface_frame (surface); + wl_callback_add_listener (callback, &wl_callback_listener, + (void *) (intptr_t) kind); +} + +static void +submit_surface_damage (struct wl_surface *surface, int x, int y, int width, + int height) +{ + test_log ("damaging surface by %d, %d, %d, %d", x, y, width, + height); + + wl_surface_damage (surface, x, y, width, height); +} + +static void +run_test (void) +{ + if (!make_test_surface (display, &wayland_surface, + &test_surface)) + report_test_failure ("failed to create test surface"); + + test_surface_add_listener (test_surface, &test_surface_listener, + NULL); + test_single_step (MAP_WINDOW_KIND); + + while (true) + { + if (wl_display_dispatch (display->display) == -1) + die ("wl_display_dispatch"); + } +} + +int +main (void) +{ + test_init (); + display = open_test_display (test_interfaces, + ARRAYELTS (test_interfaces)); + + if (!display) + report_test_failure ("failed to open display"); + + run_test (); +} diff --git a/tests/damage_test_1.dump b/tests/damage_test_1.dump new file mode 100644 index 0000000000000000000000000000000000000000..17aa3d15cf0d70df7898289025dc8b1c4cb05131 GIT binary patch literal 35720 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 AQ2+n{ literal 0 HcmV?d00001 diff --git a/tests/damage_test_2.dump b/tests/damage_test_2.dump new file mode 100644 index 0000000000000000000000000000000000000000..f7b9c2114afc663367656eaeb82d9ff8e3e841a7 GIT binary patch literal 35720 zcmeHPYit}>72ciouI*hvQqtOvTgUeLk!S6Y#N;7RNmYr@4_jTsnbI&*D-g9PWolborwLO(e&87KILYIUED52O|K;M8^0N0aG%xqxe zreI7kjOYEEU>Hx_-1}vMVS=Iieu$!8EWS#^!$*=cImDUl=Z9TgchLCw+n&$Z*u1iD zPtSMQ#ytyS=LEy>`$8BD-I!i^fXl(2a{v4;}%MVgM|1l3A z!%8<4Y=Z z(d&w98O9Iw8i$5nQW)m*I~;ph)>Sk(__F8x)O#;*%I81o@aA$`X>{~w6}-jbPiSQ1 zwT5Dv>=R?u@t>{K`s!M;?!25*>$8-;zLQ$MKScRIPf`2t);oIW^~AjlgCYDx@1-Ln zKV@5VJND@9yNZt zaIZHm&3vs-;g_3P>CEN9hw;oETp^D&$=T-7H=s_nFx0-}E=Na?GETR7Y*8%!n0@Og zpOKaE>cGG=YH!t;m-gD@73V4NYy`u$H`Y<%AACkn zJ+juh*4lM>sh?$HPj3J12FiS+-x=3(gYY?X@t)8&&w9SInF@d1MA;|DD&%RoLCbnD z?C*cLVqTnoZk(k${1|$H7d|NII68W)K0oYCQQ@DPsqM{4QLZ$Xwrkt*Ny^;A*o<4w zwbos|%Fb=aCdj(=U6lS{p3l>j3QOyYeWCfBxsFb#xzg91{V$jIyL zOY?l*eZbMD6py^l?aIB>)Mp{~()6{35{4YhxaUj1uTAv>EB(RV2_9|NioJKWMIHa% zLb=1MJhE_2?$9bK{N2u}g7WFPIM%ATC*EF1xDVVqhpmUj5b~ES`HJ$zfq}=Jxyv!l z^Xjb3WTsTCf-`Q}vIl5j;3>t{a1V*{$V4fu4?h;2UJ>-FkP#2$$C_}LX>rMPqpVXw1pUrMQ|ELpcLrR=^@b)B|H zP(Hu87IH7uI>xcIzTC^t+9p)~rJl8&*-ZIAZd5UA=I&m{ul($)*KB=$slu>uW|PV( z@+Ucl8}Zf+Txm9`09U*F7;855%S& zrOnQrJ4bVKbF^pAp1RkMYas)&q9O?o8@B{Q+sN=A_!4|fvR6HQkOi4h_@*>}f??T1 zW@l$3#m=-hu*4jVkSP;w5SNPVdSv$>3%#ha)MD!RbL!NohW5;`>%<<5IqM;5F33>; zVz5-dsCJihs<#jNhb6=xLH5nvyLZ#f%nY44ae_{tK27J(pQj5KE~pRc=))Lzz*}n# zm=kk{B}p!1aK9qEUUPnCZc3i8_CUN*Z7ow%QwkH{6P9od@Pv$Nb3lhMB+0_{+^@*4 zSDlj?n|3^mEo$Kh`$rK^LIz}2vs)M(B{_=`L+oLaEzpO3@Z`ypVQz;&ypUOKj}5x7 zN_sCg3=vECoqyBQ)9QQ+1WFxDI6pCmgadR666Z+QE;bDPa`t`u_SJz(eV1S^2@B{} zi=^vt4fiXu>!N&SX!`zI>ql-TtpmPsvB}RLYvqrU{x)uxJcf8iBJH6#qp-(?rZaaF zxj!KVU{2|LgpSpo=R}3!o`D?wXkEASndSP-)m`-9Se|a^D!*ro`Mx#SN-s}(zxS5( zh@!8W8S$)3nxpRc#f=~8br9y3bb_vaB=Lin`xV)BQ7$t${Tjm?mz418$)xC(?hHM> zwu7E$EGIK*hqoCpM0_v#AY%TyDFO^Jx0H84SHHZ*jf1X3jsg%JrMhE(&104(hI)Kg zUsn0%XM4);f;9t%QZ9(x+s{t0LrsbZL+Btq2k^@owXNMHbmg`pyWTK{pX>9-@WJr{ zJ-xc4VvfgGb*7U=m7=Glkj5*3Knh5 zrRm$lt@O%dH|<#J{SAcHPc6pygZMy?yUTi>pLs+_h#_=w>!#~cY@^5ACG_I9BD*fi zV+N;RW9W`+P(OHeCw-W0@8+!+!$(&ZXg}W%IBVVVo)G+1k9%xvH>77WhzA>{2r+~% zQj97+yU}ZPm$;tWitM__W;{^Q))?xTrjvQD>$Kp1D28tTdT(pm$y-cc*KIA|T|$48@Q#a{2X%Z$)G$SiA#^hJgzhGpJZOWsRAkpH zWbvS<&ksZJ9pL@%nKhjbzlq`ZM%&eyY0AVos$&}53&=Tf{+WE$+G;VzAH1t%UeoYd zh&dw0P&yN#yGiC+&<1g-$gWqcnFl?6ei&*$d~{Xm_YAns#PFM(^B?B8WMxY^hs1LM zV5Tv|b&sv=Q28d}C3Akiwpxtw2k)Gj{P@n+mrQJ;Zu?9OolHHUyGbSw+8{0!+4Txp zJm~2&F?64Y*z0cZEyw>RhS%jSb=KWq%+m&rHIY9&Z08$p44t@?bBmk#S;C5Jnzr+q zd(ZM#x^JY-qmR~4EynmG<@QydtwoKQDbLVPH=&bWhc2PJNqWp(f`{9R?0SVP9`y8S z4E5QB@({-|k8v#dDI?4|L?Fo|j6k71Hq#2>>X$B#dT$+NcjW0*Yijz5NoRg>?Y z;)A1!%mMSznN(cto-(GjZ>{sdUm5_;(V+-&Z#mn zWJ>Qn>3OC1pCoab-(7-_+luVE_}v^cG=0CcX1_iuXLPR-?>ovcHN5=Bu!l)Ghp7+tLHJYh zKNS`hS3jI;^&`&li&sr7qiAEUAiw#Q^p@raANMP=>*7Ae3{BrJtvO5|^2Z=PS+6Z1 zyVh?+Yw0V^ZR3_;Xd4gDbMRa)N-QA@GNs>7)WXahPcSqs;@?I*iI}I6Jr>tOMilX_ z)-=ITTOwQu|3T~nU&8x2c+U#&%fY|!K^=V<0}ptk@Ht7#OC3XLeT$(FSo1m++4ZK6 fU0B&fN0$u}4C8-4m>8m+Q2Z=lZ>32Qa|`?rAqXnE literal 0 HcmV?d00001 diff --git a/tests/run_tests.sh b/tests/run_tests.sh new file mode 100755 index 0000000..ea6e770 --- /dev/null +++ b/tests/run_tests.sh @@ -0,0 +1,47 @@ +# Tests for the Wayland compositor running on top of an X serer. + +# Copyright (C) 2022 to various contributors. + +# This file is part of 12to11. + +# 12to11 is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. + +# 12to11 is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. + +# You should have received a copy of the GNU General Public License +# along with 12to11. If not, see . + +pushd "$(dirname $0)" +declare -a standard_tests=( simple_test damage_test ) + +make -C . "${standard_tests[@]}" + +# Run tandard tests, meaning those that should be run with a +# GLOBAL_SCALE of 1 and an OUTPUT_SCALE of 1. + +export GLOBAL_SCALE=1 +export OUTPUT_SCALE=1 +exec 3< <(stdbuf -oL ../12to11 -printsocket) +read -u 3 WAYLAND_DISPLAY +export WAYLAND_DISPLAY + +echo "Compositor started at ${WAYLAND_DISPLAY}" + +for test_executable in "${standard_tests[@]}" +do + echo "Running test ${test_executable}" + + if ./${test_executable}; then + echo "${test_executable} completed successfully" + else + echo "${test_executable} failed; see its output for more details" + fi +done + +popd