mirror of
https://github.com/golang/go
synced 2024-11-14 14:10:29 -07:00
f985638b94
The new gotest ignores Test functions outside *_test.go files (the old shell script allowed them), so replace one clumsy hack with another. The root problem is that the package makefiles only know how to run cgo for source files in the package proper, not for test files. Making it work for test files is probably more trouble than it's worth. R=bradfitz CC=golang-dev https://golang.org/cl/4452060
73 lines
1.5 KiB
Go
73 lines
1.5 KiB
Go
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)
|
|
}
|
|
}
|