123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #include <EEPROM.h>
- #include <SPI.h>
- #include <GD2.h>
- #include "apitest_assets.h"
- static int y = 0;
- static int null()
- {
- return 0;
- }
- static int inflate()
- {
- GD.cmd_inflate(0);
- GD.copy(compressed, sizeof(compressed));
- GD.finish();
- return 0;
- }
- static int setfont()
- {
- uint32_t base = 76000;
- GD.cmd_inflate(base);
- GD.copy(compressed, sizeof(compressed));
- GD.BitmapHandle(12);
- GD.BitmapSource(base + 148);
- GD.BitmapLayout(L4, 8, 17);
- GD.BitmapSize(NEAREST, BORDER, BORDER, 16, 17);
- GD.cmd_setfont(12, base);
- GD.cmd_text(200, y, 12, 0, "abcdefghijklmnopqrstuvwxyz");
- GD.finish();
- return 0;
- }
- /* atan2(): check for hangs in atan2() */
- static int atan2()
- {
- int16_t tricky[6] = {-32768, -32767, -1, 0, 1, 32767};
- byte i, j;
- for (i = 0; i < 6; i++)
- for (j = 0; j < 6; j++)
- GD.atan2(tricky[i], tricky[j]);
- return 0;
- }
- static int randrange()
- {
- const size_t N = 21;
- uint16_t slots[N];
- memset(slots, 0, sizeof(slots));
- for (int i = 0; i < N * 100; i++)
- slots[GD.random(N)]++;
- GD.Begin(POINTS);
- uint32_t total = 0;
- for (int i = 0; i < N; i++) {
- GD.PointSize(slots[i]);
- GD.Vertex2f(16 * 200 + i * (16 * 280UL) / N, 16 * (y + 7));
- if (slots[i] < 20)
- return 1;
- if (slots[i] > 180)
- return 1;
- total += slots[i];
- }
- return (total == (N * 100)) ? 0 : 1;
- }
- #define DOTEST(NAME) \
- do { \
- GD.cmd_text(110, y, 20, OPT_RIGHTX, #NAME); \
- if (NAME()) \
- GD.cmd_text(125, y, 21, 0, "FAIL"); \
- else \
- GD.cmd_text(125, y, 20, 0, "pass"); \
- y += 14; \
- } while (0)
- void setup()
- {
- Serial.begin(115200); // JCB
- GD.begin(0);
- GD.cmd_memset(0, 0x40000UL, 0);
- GD.Clear();
- DOTEST(null);
- DOTEST(inflate);
- DOTEST(setfont);
- DOTEST(atan2);
- DOTEST(randrange);
- GD.swap();
- }
- void loop()
- {
- }
|