mirror of
https://github.com/golang/go
synced 2024-11-18 09:04:49 -07:00
0da89b3964
Fixes #2759. R=golang-dev, rsc CC=golang-dev https://golang.org/cl/5570053
77 lines
1.7 KiB
Go
77 lines
1.7 KiB
Go
// 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)
|
|
}
|
|
}
|