60 lines
1.3 KiB
C
60 lines
1.3 KiB
C
#include "test.h"
|
|
#include <limits.h>
|
|
|
|
void
|
|
popup_layout(struct ct *t)
|
|
{
|
|
Caret caret;
|
|
int x, y;
|
|
|
|
memset(&caret, 0, sizeof caret);
|
|
popupposition(&caret, 40, 50, 800, 600, 100, 60, &x, &y);
|
|
CT_EQ_INT(t, 50, x);
|
|
CT_EQ_INT(t, 60, y);
|
|
caret.valid = 1;
|
|
caret.x = 70;
|
|
caret.y = 80;
|
|
caret.h = 20;
|
|
popupposition(&caret, 40, 50, 800, 600, 100, 60, &x, &y);
|
|
CT_EQ_INT(t, 70, x);
|
|
CT_EQ_INT(t, 100, y);
|
|
caret.x = 790;
|
|
caret.y = 590;
|
|
popupposition(&caret, 0, 0, 800, 600, 100, 60, &x, &y);
|
|
CT_EQ_INT(t, 700, x);
|
|
CT_EQ_INT(t, 530, y);
|
|
|
|
/* Neither side fits: choose above, then clamp to the screen. */
|
|
caret.x = 20;
|
|
caret.y = 30;
|
|
caret.h = 20;
|
|
popupposition(&caret, 0, 0, 80, 80, 100, 100, &x, &y);
|
|
CT_EQ_INT(t, 0, x);
|
|
CT_EQ_INT(t, 0, y);
|
|
|
|
caret.x = 70;
|
|
caret.y = 80;
|
|
caret.h = 0;
|
|
popupposition(&caret, 0, 0, 800, 600, 100, 60, &x, &y);
|
|
CT_EQ_INT(t, 70, x);
|
|
CT_EQ_INT(t, 80, y);
|
|
caret.h = -20;
|
|
popupposition(&caret, 0, 0, 800, 600, 100, 60, &x, &y);
|
|
CT_EQ_INT(t, 70, x);
|
|
CT_EQ_INT(t, 80, y);
|
|
|
|
caret.x = INT_MIN;
|
|
caret.y = INT_MAX;
|
|
caret.h = INT_MAX;
|
|
popupposition(&caret, 0, 0, 800, 600, 100, 60, &x, &y);
|
|
CT_EQ_INT(t, 0, x);
|
|
CT_EQ_INT(t, 540, y);
|
|
caret.x = INT_MAX;
|
|
caret.y = INT_MIN;
|
|
caret.h = INT_MIN;
|
|
popupposition(&caret, 0, 0, INT_MAX, INT_MAX,
|
|
INT_MAX, INT_MAX, &x, &y);
|
|
CT_EQ_INT(t, 0, x);
|
|
CT_EQ_INT(t, 0, y);
|
|
}
|