fltk/test/unittests.h
2022-11-30 22:40:52 +01:00

88 lines
2.5 KiB
C++

//
// Unit tests for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2022 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
#ifndef UNITTESTS_H
#define UNITTESTS_H 1
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
// WINDOW/WIDGET SIZES
#define MAINWIN_W 700 // main window w()
#define MAINWIN_H 400 // main window h()
#define BROWSER_X 10 // browser x()
#define BROWSER_Y 25 // browser y()
#define BROWSER_W 150 // browser w()
#define BROWSER_H MAINWIN_H-35 // browser h()
#define TESTAREA_X (BROWSER_W + 20) // test area x()
#define TESTAREA_Y 25 // test area y()
#define TESTAREA_W (MAINWIN_W - BROWSER_W - 30) // test area w()
#define TESTAREA_H BROWSER_H // test area h()
typedef void (*UnitTestCallback)(const char*, class Fl_Group*);
extern class MainWindow *mainwin;
extern class Fl_Hold_Browser *browser;
enum {
kTestAbout = 0,
kTestPoints,
kTestFastShapes,
kTestCircles,
kTestComplexShapes,
kTestText,
kTestSymbol,
kTestImages,
kTestViewport,
kTestScrollbarsize,
kTestSchemes,
kTestSimpleTerminal
};
// This class helps to automatically register a new test with the unittest app.
// Please see the examples on how this is used.
class UnitTest {
public:
UnitTest(int index, const char *label, Fl_Widget* (*create)());
~UnitTest();
const char *label();
void create();
void show();
void hide();
static int numTest() { return nTest; }
static UnitTest *test(int i) { return fTest[i]; }
private:
char *fLabel;
Fl_Widget *(*fCreate)();
Fl_Widget *fWidget;
static void add(int index, UnitTest *t);
static int nTest;
static UnitTest *fTest[];
};
// The main window needs an additional drawing feature in order to support
// the viewport alignment test.
class MainWindow : public Fl_Double_Window {
public:
MainWindow(int w, int h, const char *l=0L);
void drawAlignmentIndicators();
void draw();
void testAlignment(int v);
int fTestAlignment;
};
#endif