summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/Makefile12
-rw-r--r--test/demo.menu2
-rw-r--r--test/mcast_launcher.cxx164
-rw-r--r--test/mcast_rx.cxx160
-rw-r--r--test/mcast_tx.cxx144
5 files changed, 2 insertions, 480 deletions
diff --git a/test/Makefile b/test/Makefile
index 2692ef1da..2dc3145ea 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -48,7 +48,6 @@ CPPFILES =\
cursor.cxx \
curve.cxx \
demo.cxx \
- dnd-test.cxx \
doublebuffer.cxx \
editor.cxx \
fast_slow.cxx \
@@ -94,10 +93,7 @@ CPPFILES =\
tile.cxx \
tiled_image.cxx \
valuators.cxx \
- utf8.cxx \
- mcast_launcher.cxx \
- mcast_tx.cxx \
- mcast_rx.cxx
+ utf8.cxx
ALL = \
unittests$(EXEEXT) \
@@ -117,7 +113,6 @@ ALL = \
cursor$(EXEEXT) \
curve$(EXEEXT) \
demo$(EXEEXT) \
- dnd-test$(EXEEXT) \
doublebuffer$(EXEEXT) \
editor$(EXEEXT) \
fast_slow$(EXEEXT) \
@@ -158,10 +153,7 @@ ALL = \
tile$(EXEEXT) \
tiled_image$(EXEEXT) \
valuators$(EXEEXT) \
- utf8$(EXEEXT) \
- mcast_launcher$(EXEEXT) \
- mcast_tx$(EXEEXT) \
- mcast_rx$(EXEEXT)
+ utf8$(EXEEXT)
GLALL = \
diff --git a/test/demo.menu b/test/demo.menu
index f0b1e2628..32f6d08c4 100644
--- a/test/demo.menu
+++ b/test/demo.menu
@@ -50,8 +50,6 @@
@u:keyboard:keyboard
@u:fast && slow widgets:fast_slow
@u:inactive:inactive
-# @u:Drag Drop:dnd-test
-# @u:add_fd():mcast_launcher
@main:Fluid\n(UI design tool):../fluid/fluid valuators.fl
diff --git a/test/mcast_launcher.cxx b/test/mcast_launcher.cxx
deleted file mode 100644
index f2601262e..000000000
--- a/test/mcast_launcher.cxx
+++ /dev/null
@@ -1,164 +0,0 @@
-/* This is just a simple wrapper app that launches two independent processes then exits...
- * I use it because the fltk test/demo program launches one process per button, and I wanted
- * to launch several in my multicast/Fl::add_fd() test harness.
- *
- * This code also shows how to find the "home" directory for any executable in a cross-platform
- * way, which can be handy for finding resources or help files.
- */
-#ifdef WIN32
-#include <windows.h> /* GetModuleFileName */
-#endif /* WIN32 */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#ifdef __APPLE__ /* assume this is OSX */
-#include <sys/param.h>
-#include <mach-o/dyld.h> /* _NSGetExecutablePath : must add -framework CoreFoundation to link line */
-#include <string.h>
-# ifndef PATH_MAX
-# define PATH_MAX MAXPATHLEN
-# endif
-#endif /* APPLE */
-
-#ifndef PATH_MAX
-# define PATH_MAX 2048
-#endif
-/*******************************************************************************************/
-static int get_app_path (char *pname, size_t pathsize)
-{
- long result;
-
-#if defined (WIN32)
- result = GetModuleFileName(NULL, pname, pathsize);
- if (result > 0) {
- /* fix up the dir slashes... */
- int len = strlen(pname);
- int idx;
- for (idx = 0; idx < len; idx++) {
- if (pname[idx] == '\\') pname[idx] = '/';
- }
- if ((access(pname, 0) == 0)) {
- return 0; /* file exists, return OK */
- }
- /*else name doesn't seem to exist, return FAIL (falls through) */
- }
-
-#elif defined (SOLARIS) // we used to set this for our all our Sun builds - I wonder what Sun set...?
- char *p = getexecname();
- if (p) {
- /* According to the Sun manpages, getexecname will "normally" return an */
- /* absolute path - BUT might not... AND that IF it is not, pre-pending */
- /* getcwd() will "usually" be the correct thing... Urgh! */
-
- /* check pathname is absolute (begins with a / ) */
- if (p[0] == '/') { /* assume this means we have an absolute path */
- strncpy(pname, p, pathsize);
- if ((access(pname, 0) == 0))
- return 0; /* file exists, return OK */
- } else { /* if not, prepend getcwd() then check if file exists */
- getcwd(pname, pathsize);
- result = strlen(pname);
- strncat(pname, "/", (pathsize - result));
- result ++;
- strncat(pname, p, (pathsize - result));
-
- if ((access(pname, 0) == 0))
- return 0; /* file exists, return OK */
- /*else name doesn't seem to exist, return FAIL (falls through) */
- }
- }
-
-#elif defined (__APPLE__) /* assume this is OSX */
-/* extern int _NSGetExecutablePath(char *buf, unsigned long *bufsize);
-
- _NSGetExecutablePath copies the path of the executable
- into the buffer and returns 0 if the path was successfully
- copied in the provided buffer. If the buffer is not large
- enough, -1 is returned and the expected buffer size is
- copied in *bufsize. Note that _NSGetExecutablePath will
- return "a path" to the executable not a "real path" to the
- executable. That is the path may be a symbolic link and
- not the real file. And with deep directories the total
- bufsize needed could be more than MAXPATHLEN.
-*/
- int status = -1;
- char *given_path = (char *)malloc(MAXPATHLEN * 2);
- if (!given_path) return status;
-
- pathsize = MAXPATHLEN * 2;
- result = _NSGetExecutablePath(given_path, (uint32_t *)&pathsize);
- if (result == 0) { /* OK, we got something - now try and resolve the real path... */
- if (realpath(given_path, pname) != NULL) {
- if ((access(pname, 0) == 0)) {
- status = 0; /* file exists, return OK */
- }
- }
- }
- free (given_path);
- return status;
-
-#else // just assume this is linux for now - not valid - what about BSD's etc...?
- /* Oddly, the readlink(2) man page says no NULL is appended. */
- /* So you have to do it yourself, based on the return value: */
- pathsize --; /* Preserve a space to add the trailing NULL */
- result = readlink("/proc/self/exe", pname, pathsize);
-
- if (result > 0) {
- pname[result] = 0; /* add a terminating NULL */
-
- if ((access(pname, 0) == 0)) {
- return 0; /* file exists, return OK */
- }
- /*else name doesn't seem to exist, return FAIL (falls through) */
- }
-#endif /* LINUX (assumed!) */
-
- return -1; /* Path Lookup Failed */
-} // get_app_path
-
-/*******************************************************************************************/
-static void app_launch(const char *cmd)
-{
-#ifdef WIN32
- // Under win32 you can't just use "system" and background the process to easily launch
- // another executable - so we use spawn instead...
- _spawnl(_P_NOWAIT, cmd, cmd, NULL);
-#else
- // On other systems, just use system to launch the executable
- char buf[PATH_MAX];
- snprintf(buf, PATH_MAX, "%s &", cmd);
- system(buf);
-#endif
-} // app_launch
-
-/*******************************************************************************************/
-int main(int argc, char *argv[])
-{
- char launcher_path[PATH_MAX];
- char exe_path[PATH_MAX];
- // Find where the launcher app lives - we assume the test executables are in the same location
- int fail = get_app_path (launcher_path, PATH_MAX);
- if (fail) // couldn't get a valid path...
- return -1;
-
- // not all supported platfoms provide a dirname function - do a simplified version here
- strncpy(exe_path, launcher_path, PATH_MAX);
- // find the last dir sep (note that get_app_path uses '/' on win32 also)
- char *dirp = strrchr(exe_path, '/');
- dirp ++; // first char after the dir slash
- *dirp = 0; // terminate the path, removing the executables basename
-
- strncat(exe_path, "mcast_tx", PATH_MAX);
- app_launch(exe_path); // launch the sender
-
- *dirp = 0; // terminate the path - again
- strncat(exe_path, "mcast_rx", PATH_MAX);
- app_launch(exe_path); // launch the receiver
-
- return 0;
-}
-
-/* end of file */
diff --git a/test/mcast_rx.cxx b/test/mcast_rx.cxx
deleted file mode 100644
index d346d845a..000000000
--- a/test/mcast_rx.cxx
+++ /dev/null
@@ -1,160 +0,0 @@
-/* Test multicast operation and Fl::add_fd functionality */
-/* This file is the multicast Receiver - there can be multiple instances
- * of this running during the test. A minimum of one is good...! */
-
-#ifdef WIN32
-# include <windows.h>
-# include <winsock2.h>
-# include <ws2tcpip.h>
-# define CLOSESKT closesocket
-#else
-# include <sys/socket.h>
-# include <netinet/in.h>
-# include <arpa/inet.h>
-# include <netdb.h>
-# define CLOSESKT close
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-
-#include <FL/Fl.H>
-#include <FL/Fl_Double_Window.H>
-#include <FL/Fl_Browser.H>
-#include <FL/Fl_Button.H>
-#include <FL/Fl_Round_Button.H>
-
-// define an arbitrary multicast address with organisation-local scope
-static char madrs[] = "239.192.34.56";
-#define SERVER_PORT 5678
-#define MAX_MSG 100
-
-static Fl_Double_Window *rx_win;
-static Fl_Browser *rx_brws;
-static Fl_Button *exit_bt;
-static Fl_Round_Button *wait_bt;
-
-/*******************************************************************************************/
-static void cb_exit_bt(Fl_Button*, void*) {
- rx_win->hide();
-}
-
-/*******************************************************************************************/
-static void led_flash(void*) {
- static int led = 0;
- led = led ^ 1;
- wait_bt->value(led);
- Fl::repeat_timeout(0.4, led_flash);
-}
-
-/*******************************************************************************************/
-static void skt_cb(int skt, void*) {
- struct sockaddr_in cliAddr;
- char msg[MAX_MSG];
- socklen_t cliLen = sizeof (cliAddr);
- int n = recvfrom (skt, msg, MAX_MSG, 0, (struct sockaddr *)&cliAddr, &cliLen);
- if (n < 0) return;
- rx_brws->add(msg);
- int last = rx_brws->size();
- rx_brws->bottomline(last);
-}
-
-/*******************************************************************************************/
-int main (int argc, char *argv[])
-{
- // First, create the socket layer
- int skt, res;
- struct ip_mreq mreq;
- struct sockaddr_in servAddr;
- struct in_addr mcastAddr;
- struct hostent *h;
-
-#ifdef WIN32
- // On win32, make sure the winsock layer is started
- WSADATA WSAData;
- WSAStartup (MAKEWORD (1, 1), &WSAData);
-#endif
-
- /* set mcast address to listen to */
- h = gethostbyname(madrs);
- if (h == NULL) {
- exit (-1);
- }
-
- memcpy(&mcastAddr, h->h_addr_list[0], h->h_length);
-
- /* create the socket */
- skt = socket (AF_INET, SOCK_DGRAM, 0);
- if (skt < 0) {
- fprintf (stderr, "cannot create socket\n");
- exit (-1);
- }
-
- /* set socket to allow re-use of local address before bind() - this should allow us to have
- * multiple receiver instances all running at once. */
- int bReUse = 1;
- setsockopt(skt, SOL_SOCKET, SO_REUSEADDR, (char *)&bReUse, sizeof(bReUse));
-
- // Populate the servAddr struct
- servAddr.sin_family = AF_INET;
- servAddr.sin_addr.s_addr = htonl (INADDR_ANY);
- servAddr.sin_port = htons (SERVER_PORT);
-
- /* bind port */
- if (bind (skt, (struct sockaddr *) &servAddr, sizeof (servAddr)) < 0) {
- fprintf(stderr, "cannot bind port %d \n", SERVER_PORT);
- exit (-1);
- }
-
- /* join multicast group */
- mreq.imr_multiaddr.s_addr = mcastAddr.s_addr;
- mreq.imr_interface.s_addr = htonl (INADDR_ANY);
-
- res = setsockopt(skt, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&mreq, sizeof(mreq));
- if (res != 0) {
- fprintf(stderr, "cannot join multicast group '%s'", inet_ntoa(mcastAddr));
- exit (-1);
- }
-
- // Now create the fltk display window
- rx_win = new Fl_Double_Window(600, 100, 447, 338, "Receiver");
- rx_win->begin();
-
- // A browser to display the rx'd text in
- rx_brws = new Fl_Browser(10, 10, 285, 310);
- rx_brws->when(FL_WHEN_NEVER);
-
- // quit button
- exit_bt = new Fl_Button(360, 290, 64, 30, "Quit");
- exit_bt->box(FL_THIN_UP_BOX);
- exit_bt->callback((Fl_Callback*)cb_exit_bt);
-
- // flashing red "waiting" led...
- wait_bt = new Fl_Round_Button(320, 20, 69, 30, "Waiting");
- wait_bt->selection_color(FL_RED);
- wait_bt->when(FL_WHEN_NEVER);
- wait_bt->clear_visible_focus();
-
- rx_win->end();
-
- // display the Rx window
- rx_win->show(argc, argv);
-
- // Start the "waiting led" flashing
- Fl::add_timeout(0.4, led_flash);
-
- // Add the socket to the add_fd check list
- Fl::add_fd(skt, skt_cb);
-
- // run the fltk core
- res = Fl::run();
-
- /* close socket and exit */
- CLOSESKT(skt);
- return res;
-}
-
-/* End of File */
diff --git a/test/mcast_tx.cxx b/test/mcast_tx.cxx
deleted file mode 100644
index 11bd5a7eb..000000000
--- a/test/mcast_tx.cxx
+++ /dev/null
@@ -1,144 +0,0 @@
-/* Test multicast operation and Fl::add_fd functionality */
-/* This file is the multicast Transmitter - there should be one instance
- * of this running during the test. */
-
-#ifdef WIN32
-# include <winsock2.h>
-# include <ws2tcpip.h>
-# define CLOSESKT closesocket
-#else
-# include <sys/socket.h>
-# include <netinet/in.h>
-# include <arpa/inet.h>
-# include <netdb.h>
-# define CLOSESKT close
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-
-#include <FL/Fl.H>
-#include <FL/Fl_Double_Window.H>
-#include <FL/Fl_Button.H>
-#include <FL/Fl_Round_Button.H>
-
-// define an arbitrary multicast address with organisation-local scope
-static char madrs[] = "239.192.34.56";
-#define SERVER_PORT 5678
-
-static Fl_Double_Window *tx_win;
-static Fl_Button *send_bt;
-static Fl_Button *exit_bt;
-static Fl_Round_Button *ready_bt;
-
-static int skt;
-static struct sockaddr_in servAddr;
-
-/*******************************************************************************************/
-static void cb_exit_bt(Fl_Button*, void*) {
- tx_win->hide();
-}
-
-/*******************************************************************************************/
-static void led_flash(void*) {
- static int led = 0;
- led = led ^ 1;
- ready_bt->value(led);
- Fl::repeat_timeout(0.4, led_flash);
-}
-
-/*******************************************************************************************/
-static void send_cb(Fl_Button*, void*) { /* send some data */
- static int msg_idx = 0;
- char msg[128];
- for (int i = 0; i < 3; i++)
- {
- sprintf(msg, "Message text %d", msg_idx);
- msg_idx++;
- sendto(skt, msg, strlen(msg) + 1, 0, (struct sockaddr *)&servAddr, sizeof(servAddr));
- } /* end for */
-}
-
-/*******************************************************************************************/
-int main (int argc, char *argv[])
-{
- // First prepare the socket layer code
- struct sockaddr_in cliAddr;
- struct hostent *h;
-
-#ifdef WIN32
- // On win32, make sure the winsock layer is started
- WSADATA WSAData;
- WSAStartup (MAKEWORD (1, 1), &WSAData);
-#endif
-
- h = gethostbyname(madrs);
- if (h == NULL) {
- exit (-1);
- }
-
- // Populate the servAddr struct with the requested values
- servAddr.sin_family = h->h_addrtype;
- memcpy ((char *) &servAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length);
- servAddr.sin_port = htons (SERVER_PORT);
-
- /* create the socket */
- skt = socket (AF_INET, SOCK_DGRAM, 0);
- if (skt < 0) {
- fprintf(stderr, "cannot open socket\n");
- exit (-1);
- }
-
- /* bind port number */
- cliAddr.sin_family = AF_INET;
- cliAddr.sin_addr.s_addr = htonl(INADDR_ANY); // assume default eth_if is fine
- cliAddr.sin_port = htons (0);
- if (bind(skt, (struct sockaddr *)&cliAddr, sizeof(cliAddr)) < 0) {
- fprintf(stderr, "cannot bind port %d \n", SERVER_PORT);
- exit (-1);
- }
-
- /* set the IP TTL to 1, so our multicast datagrams can not get off the local network */
- char ttl = 1;
- setsockopt (skt, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl));
-
- // Now create the fltk window
- tx_win = new Fl_Double_Window(100, 100, 447, 338, "Sender");
- tx_win->begin();
-
- // msg send button
- send_bt = new Fl_Button(100, 100, 100, 50, "SEND");
- send_bt->box(FL_THIN_UP_BOX);
- send_bt->callback((Fl_Callback*)send_cb);
-
- // quit button
- exit_bt = new Fl_Button(360, 290, 64, 30, "Quit");
- exit_bt->box(FL_THIN_UP_BOX);
- exit_bt->callback((Fl_Callback*)cb_exit_bt);
-
- // flashing green "ready" led...
- ready_bt = new Fl_Round_Button(320, 20, 69, 30, "Ready");
- ready_bt->selection_color(FL_GREEN);
- ready_bt->when(FL_WHEN_NEVER);
- ready_bt->clear_visible_focus();
-
- tx_win->end();
-
- // display the Tx window
- tx_win->show(argc, argv);
-
- // Start the "ready led" flashing
- Fl::add_timeout(0.4, led_flash);
-
- // run the fltk core
- int res = Fl::run();
-
- /* close socket and exit */
- CLOSESKT(skt);
- return res;
-}
-
-/* End of File */