| // Copyright 2010 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package cgotest | |
| /* | |
| #include <stdio.h> | |
| typedef unsigned char Uint8; | |
| typedef unsigned short Uint16; | |
| typedef enum { | |
| MOD1 = 0x0000, | |
| MODX = 0x8000 | |
| } SDLMod; | |
| typedef enum { | |
| A = 1, | |
| B = 322, | |
| SDLK_LAST | |
| } SDLKey; | |
| typedef struct SDL_keysym { | |
| Uint8 scancode; | |
| SDLKey sym; | |
| SDLMod mod; | |
| Uint16 unicode; | |
| } SDL_keysym; | |
| typedef struct SDL_KeyboardEvent { | |
| Uint8 typ; | |
| Uint8 which; | |
| Uint8 state; | |
| SDL_keysym keysym; | |
| } SDL_KeyboardEvent; | |
| void makeEvent(SDL_KeyboardEvent *event) { | |
| unsigned char *p; | |
| int i; | |
| p = (unsigned char*)event; | |
| for (i=0; i<sizeof *event; i++) { | |
| p[i] = i; | |
| } | |
| } | |
| int same(SDL_KeyboardEvent* e, Uint8 typ, Uint8 which, Uint8 state, Uint8 scan, SDLKey sym, SDLMod mod, Uint16 uni) { | |
| return e->typ == typ && e->which == which && e->state == state && e->keysym.scancode == scan && e->keysym.sym == sym && e->keysym.mod == mod && e->keysym.unicode == uni; | |
| } | |
| void cTest(SDL_KeyboardEvent *event) { | |
| printf("C: %#x %#x %#x %#x %#x %#x %#x\n", event->typ, event->which, event->state, | |
| event->keysym.scancode, event->keysym.sym, event->keysym.mod, event->keysym.unicode); | |
| fflush(stdout); | |
| } | |
| */ | |
| import "C" | |
| import ( | |
| "testing" | |
| ) | |
| func testAlign(t *testing.T) { | |
| var evt C.SDL_KeyboardEvent | |
| C.makeEvent(&evt) | |
| if C.same(&evt, evt.typ, evt.which, evt.state, evt.keysym.scancode, evt.keysym.sym, evt.keysym.mod, evt.keysym.unicode) == 0 { | |
| t.Error("*** bad alignment") | |
| C.cTest(&evt) | |
| t.Errorf("Go: %#x %#x %#x %#x %#x %#x %#x\n", | |
| evt.typ, evt.which, evt.state, evt.keysym.scancode, | |
| evt.keysym.sym, evt.keysym.mod, evt.keysym.unicode) | |
| t.Error(evt) | |
| } | |
| } |