1 /* Public domain */
2 /*
3 * Test the various bindings provided by the AG_Scrollbar(3) widget using
4 * arbitrary values and ranges.
5 */
6
7 #include "agartest.h"
8
9 int vInt = 500;
10 unsigned vUint = 0;
11 Sint8 v8 = 50;
12 Uint32 v32 = 32;
13 #ifdef AG_HAVE_64BIT
14 Uint64 v64 = 64;
15 #endif
16 float vFlt = 1.0;
17 double vDbl = 0.0;
18 #ifdef AG_HAVE_LONG_DOUBLE
19 long double vLDbl = 1.0;
20 #endif
21
22 static int
TestGUI(void * obj,AG_Window * win)23 TestGUI(void *obj, AG_Window *win)
24 {
25 AG_Scrollbar *sb;
26 AG_Label *lbl;
27 Uint flags = AG_SCROLLBAR_HFILL|AG_SCROLLBAR_NOAUTOHIDE;
28
29 lbl = AG_LabelNewPolled(win, AG_LABEL_HFILL, "Int binding: %d", &vInt);
30 AG_LabelSizeHint(lbl, 0, "XXXXXXXXXXXXXXXXXXXX");
31 sb = AG_ScrollbarNew(win, AG_SCROLLBAR_HORIZ, flags);
32 AG_BindInt(sb, "value", &vInt);
33 AG_SetInt(sb, "min", -10000);
34 AG_SetInt(sb, "max", 10000);
35 AG_SetInt(sb, "inc", 1000);
36
37 AG_LabelNewPolled(win, AG_LABEL_HFILL, "Uint binding: %d (vis=1000)", &vUint);
38 sb = AG_ScrollbarNew(win, AG_SCROLLBAR_HORIZ, flags);
39 AG_BindUint(sb, "value", &vUint);
40 AG_SetUint(sb, "min", 0);
41 AG_SetUint(sb, "max", 10000);
42 AG_SetUint(sb, "inc", 1000);
43 AG_SetUint(sb, "visible", 1000);
44
45 AG_LabelNewPolled(win, AG_LABEL_HFILL, "8-bit binding: %[s8] (vis=50)", &v8);
46 sb = AG_ScrollbarNew(win, AG_SCROLLBAR_HORIZ, flags);
47 AG_BindSint8(sb, "value", &v8);
48 AG_SetSint8(sb, "visible", 50);
49
50 AG_LabelNewPolled(win, AG_LABEL_HFILL, "32-bit binding: %[u32] (vis=10)", &v32);
51 sb = AG_ScrollbarNew(win, AG_SCROLLBAR_HORIZ, flags);
52 AG_BindUint32(sb, "value", &v32);
53 AG_SetUint32(sb, "min", 0);
54 AG_SetUint32(sb, "max", 100);
55 AG_SetUint32(sb, "visible", 10);
56
57 #ifdef AG_HAVE_64BIT
58 AG_LabelNewPolled(win, AG_LABEL_HFILL, "64-bit binding: %[u64] (vis=10)", &v64);
59 sb = AG_ScrollbarNew(win, AG_SCROLLBAR_HORIZ, flags);
60 AG_BindUint64(sb, "value", &v64);
61 AG_SetUint64(sb, "min", 0ULL);
62 AG_SetUint64(sb, "max", 100ULL);
63 AG_SetUint64(sb, "visible", 10ULL);
64 #endif
65 AG_LabelNewPolled(win, AG_LABEL_HFILL, "Float binding: %f", &vFlt);
66 sb = AG_ScrollbarNew(win, AG_SCROLLBAR_HORIZ, flags);
67 AG_BindFloat(sb, "value", &vFlt);
68 AG_SetFloat(sb, "min", 0.0f);
69 AG_SetFloat(sb, "max", 1.0f);
70 AG_SetFloat(sb, "inc", 0.01f);
71
72 AG_LabelNewPolled(win, AG_LABEL_HFILL, "Double binding: %lf", &vDbl);
73 sb = AG_ScrollbarNew(win, AG_SCROLLBAR_HORIZ, flags);
74 AG_BindDouble(sb, "value", &vDbl);
75 AG_SetDouble(sb, "min", -100.0);
76 AG_SetDouble(sb, "max", +100.0);
77 AG_SetDouble(sb, "inc", 1.0);
78
79 #ifdef AG_HAVE_LONG_DOUBLE
80 AG_LabelNewPolled(win, AG_LABEL_HFILL, "Long Double binding: %llf", &vLDbl);
81 sb = AG_ScrollbarNew(win, AG_SCROLLBAR_HORIZ, flags);
82 AG_BindLongDouble(sb, "value", &vLDbl);
83 #endif
84 return (0);
85 }
86
87 const AG_TestCase scrollbarTest = {
88 "scrollbar",
89 N_("Test the AG_Scrollbar(3) widget"),
90 "1.5.0",
91 0,
92 sizeof(AG_TestInstance),
93 NULL, /* init */
94 NULL, /* destroy */
95 NULL, /* test */
96 TestGUI,
97 NULL /* bench */
98 };
99