test/xi2: fix protocol-xiqueryversion test
The old code was broken and allowed setting client version >= XIVersion, this was fixed in the previous patch, but updating the value for XIVersion broke the tests, so fix the tests too. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
		
							parent
							
								
									500e844a24
								
							
						
					
					
						commit
						b6e5c4669e
					
				|  | @ -44,8 +44,8 @@ | ||||||
| #include "extinit.h"            /* for XInputExtensionInit */ | #include "extinit.h"            /* for XInputExtensionInit */ | ||||||
| #include "scrnintstr.h" | #include "scrnintstr.h" | ||||||
| #include "xiqueryversion.h" | #include "xiqueryversion.h" | ||||||
| 
 |  | ||||||
| #include "protocol-common.h" | #include "protocol-common.h" | ||||||
|  | #include "exglobals.h" | ||||||
| 
 | 
 | ||||||
| extern XExtensionVersion XIVersion; | extern XExtensionVersion XIVersion; | ||||||
| 
 | 
 | ||||||
|  | @ -54,8 +54,8 @@ struct test_data { | ||||||
|     int minor_client; |     int minor_client; | ||||||
|     int major_server; |     int major_server; | ||||||
|     int minor_server; |     int minor_server; | ||||||
|     int major_cached; |     int major_expected; | ||||||
|     int minor_cached; |     int minor_expected; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static void | static void | ||||||
|  | @ -93,13 +93,8 @@ reply_XIQueryVersion_multiple(ClientPtr client, int len, char *data, void *closu | ||||||
|     reply_check_defaults(rep, len, XIQueryVersion); |     reply_check_defaults(rep, len, XIQueryVersion); | ||||||
|     assert(rep->length == 0); |     assert(rep->length == 0); | ||||||
| 
 | 
 | ||||||
|     if (versions->major_cached == -1) { |     assert(versions->major_expected == rep->major_version); | ||||||
|         versions->major_cached = rep->major_version; |     assert(versions->minor_expected == rep->minor_version); | ||||||
|         versions->minor_cached = rep->minor_version; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     assert(versions->major_cached == rep->major_version); |  | ||||||
|     assert(versions->minor_cached == rep->minor_version); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  | @ -199,6 +194,7 @@ test_XIQueryVersion_multiple(void) | ||||||
| { | { | ||||||
|     xXIQueryVersionReq request; |     xXIQueryVersionReq request; | ||||||
|     ClientRec client; |     ClientRec client; | ||||||
|  |     XIClientPtr pXIClient; | ||||||
|     struct test_data versions; |     struct test_data versions; | ||||||
|     int rc; |     int rc; | ||||||
| 
 | 
 | ||||||
|  | @ -213,28 +209,26 @@ test_XIQueryVersion_multiple(void) | ||||||
|     userdata = (void *) &versions; |     userdata = (void *) &versions; | ||||||
| 
 | 
 | ||||||
|     /* run 1 */ |     /* run 1 */ | ||||||
|     versions.major_cached = -1; |  | ||||||
|     versions.minor_cached = -1; |  | ||||||
| 
 | 
 | ||||||
|     /* client is lower than server, noncached */ |     /* client is lower than server, nonexpected */ | ||||||
|     request.major_version = 2; |     versions.major_expected = request.major_version = 2; | ||||||
|     request.minor_version = 1; |     versions.minor_expected = request.minor_version = 1; | ||||||
|     rc = ProcXIQueryVersion(&client); |     rc = ProcXIQueryVersion(&client); | ||||||
|     assert(rc == Success); |     assert(rc == Success); | ||||||
| 
 | 
 | ||||||
|     /* client is higher than server, cached */ |     /* client is higher than server, no change */ | ||||||
|     request.major_version = 2; |     request.major_version = 2; | ||||||
|     request.minor_version = 3; |     request.minor_version = 3; | ||||||
|     rc = ProcXIQueryVersion(&client); |     rc = ProcXIQueryVersion(&client); | ||||||
|     assert(rc == Success); |     assert(rc == Success); | ||||||
| 
 | 
 | ||||||
|     /* client is equal, cached */ |     /* client tries to set higher version, stays same */ | ||||||
|     request.major_version = 2; |     request.major_version = 2; | ||||||
|     request.minor_version = 2; |     request.minor_version = 2; | ||||||
|     rc = ProcXIQueryVersion(&client); |     rc = ProcXIQueryVersion(&client); | ||||||
|     assert(rc == Success); |     assert(rc == Success); | ||||||
| 
 | 
 | ||||||
|     /* client is low than cached */ |     /* client tries to set lower version, no change */ | ||||||
|     request.major_version = 2; |     request.major_version = 2; | ||||||
|     request.minor_version = 0; |     request.minor_version = 0; | ||||||
|     rc = ProcXIQueryVersion(&client); |     rc = ProcXIQueryVersion(&client); | ||||||
|  | @ -243,20 +237,24 @@ test_XIQueryVersion_multiple(void) | ||||||
|     /* run 2 */ |     /* run 2 */ | ||||||
|     client = init_client(request.length, &request); |     client = init_client(request.length, &request); | ||||||
|     XIVersion.major_version = 2; |     XIVersion.major_version = 2; | ||||||
|     XIVersion.minor_version = 2; |     XIVersion.minor_version = 3; | ||||||
|     versions.major_cached = -1; |  | ||||||
|     versions.minor_cached = -1; |  | ||||||
| 
 | 
 | ||||||
|     request.major_version = 2; |     versions.major_expected = request.major_version = 2; | ||||||
|     request.minor_version = 2; |     versions.minor_expected = request.minor_version = 2; | ||||||
|     rc = ProcXIQueryVersion(&client); |     rc = ProcXIQueryVersion(&client); | ||||||
|     assert(rc == Success); |     assert(rc == Success); | ||||||
| 
 | 
 | ||||||
|  |     /* client bumps version from 2.2 to 2.3 */ | ||||||
|     request.major_version = 2; |     request.major_version = 2; | ||||||
|     request.minor_version = 3; |     versions.minor_expected = request.minor_version = 3; | ||||||
|     rc = ProcXIQueryVersion(&client); |     rc = ProcXIQueryVersion(&client); | ||||||
|     assert(rc == Success); |     assert(rc == Success); | ||||||
| 
 | 
 | ||||||
|  |     /* real version is changed, too! */ | ||||||
|  |     pXIClient = dixLookupPrivate(&client.devPrivates, XIClientPrivateKey); | ||||||
|  |     assert(pXIClient->minor_version == 3); | ||||||
|  | 
 | ||||||
|  |     /* client tries to set lower version, no change */ | ||||||
|     request.major_version = 2; |     request.major_version = 2; | ||||||
|     request.minor_version = 1; |     request.minor_version = 1; | ||||||
|     rc = ProcXIQueryVersion(&client); |     rc = ProcXIQueryVersion(&client); | ||||||
|  | @ -265,20 +263,22 @@ test_XIQueryVersion_multiple(void) | ||||||
|     /* run 3 */ |     /* run 3 */ | ||||||
|     client = init_client(request.length, &request); |     client = init_client(request.length, &request); | ||||||
|     XIVersion.major_version = 2; |     XIVersion.major_version = 2; | ||||||
|     XIVersion.minor_version = 2; |     XIVersion.minor_version = 3; | ||||||
|     versions.major_cached = -1; |  | ||||||
|     versions.minor_cached = -1; |  | ||||||
| 
 | 
 | ||||||
|     request.major_version = 2; |     versions.major_expected = request.major_version = 2; | ||||||
|     request.minor_version = 3; |     versions.minor_expected = request.minor_version = 3; | ||||||
|     rc = ProcXIQueryVersion(&client); |     rc = ProcXIQueryVersion(&client); | ||||||
|     assert(rc == Success); |     assert(rc == Success); | ||||||
| 
 | 
 | ||||||
|     request.major_version = 2; |     request.major_version = 2; | ||||||
|     request.minor_version = 2; |     versions.minor_expected = request.minor_version = 2; | ||||||
|     rc = ProcXIQueryVersion(&client); |     rc = ProcXIQueryVersion(&client); | ||||||
|     assert(rc == Success); |     assert(rc == Success); | ||||||
| 
 | 
 | ||||||
|  |     /* but real client version must not be lowered */ | ||||||
|  |     pXIClient = dixLookupPrivate(&client.devPrivates, XIClientPrivateKey); | ||||||
|  |     assert(pXIClient->minor_version == 3); | ||||||
|  | 
 | ||||||
|     request.major_version = 2; |     request.major_version = 2; | ||||||
|     request.minor_version = 1; |     request.minor_version = 1; | ||||||
|     rc = ProcXIQueryVersion(&client); |     rc = ProcXIQueryVersion(&client); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue