#include <stdlib.h>
#include <stdio.h>

#include <prefs.h>


enum {
    MOUSE_ROTATE=0, MOUSE_ZOOM, MOUSE_CLIP, MOUSE_NONE, PLANES_ON,
    PLANES_OFF, UNDEFINED
};


#include "testprefs.h"


int main(int argc, char **argv)
{
    int numi,numo,i;

    initPrefs(prefs);

    /* read in the prefs from ".prefs-prj3" */
    if (!(numi=readPrefs(".prefs-prj3"))) {
	prefError("reading .prefs-prj3");
    } else {
	printf("%d preferences read from .prefs-prj3\n",numi);
    }

    for (i=0; prefs[i].name; i++) {
	defaultPref(i);
    }

    /* Check to see if "LeftMouseButton" is set to "None". prefcmp returns
       the same values as strcmp. */
    if (!prefCmpValue("LeftMouseButton","None")) {
	printf("LeftMouseButton is None (prefCmpValue).\n");
    } else {
	printf("LeftMouseButton is [%s]. (prefCmpValue)\n",
	       getPrefValue("LeftMouseButton"));
    }

    /* Check to see if "LeftMouseButton" is set to "None". prefcmp returns
       the same values as strcmp. */
    if (!prefCmpMapping("LeftMouseButton",MOUSE_NONE)) {
	printf("LeftMouseButton is None (prefCmpMapping).\n");
    } else {
	printf("LeftMouseButton is [%s]. (prefCmpMapping)\n",
	       getPrefValue("LeftMouseButton"));
    }

    if (setPref("LeftMouseButton","Rotate", MOUSE_ROTATE)) {
	printf("LeftMouseButton successfully set to [%s]\n",
	       getPrefValue("LeftMouseButton"));
    } else {
	prefError("LeftMouseButton");
    }

    if (setPref("ShiftLeftMouseButton","Zoom", MOUSE_ZOOM)) {
	printf("ShiftLeftMouseButton successfully added.\n");
    } else {
	prefError("ShiftLeftMouseButton");
    }

    if (setPref("LeftMouseButton","blah", -1)) {
	printf("This is impossible since 'blah' is not a valid value.\n");
    } else {
	prefError("LeftMouseButton");
    }

    if (setPref("blah", "Rotate", MOUSE_ROTATE)) {
	printf("This is impossible since 'blah' is not a valid name.\n");
    } else {
	prefError("blah");
    }

    printPrefs();

    if (!(numo=writePrefs())) {
	prefError("writing .prefs-prj3");
	exit(1);
    }

    printf("Originally read in %d prefs and just wrote out %d prefs.\n",
	   numi,numo);

    exit(0);
}
