Revision: 72476
          http://sourceforge.net/p/brlcad/code/72476
Author:   starseeker
Date:     2019-02-19 21:52:18 +0000 (Tue, 19 Feb 2019)
Log Message:
-----------
Start wiring up libged mater unit tests

Modified Paths:
--------------
    brlcad/trunk/src/libged/mater.cxx
    brlcad/trunk/src/libged/tests/mater.c

Modified: brlcad/trunk/src/libged/mater.cxx
===================================================================
--- brlcad/trunk/src/libged/mater.cxx   2019-02-19 18:05:24 UTC (rev 72475)
+++ brlcad/trunk/src/libged/mater.cxx   2019-02-19 21:52:18 UTC (rev 72476)
@@ -1035,6 +1035,18 @@
        return GED_HELP;
     }
 
+    if (BU_STR_EQUAL(argv[1], "get")) {
+       argv[1] = argv[0];
+       argc--; argv++;
+       return _ged_mater_get(gedp, argc, argv);
+    }
+
+    if (BU_STR_EQUAL(argv[1], "set")) {
+       argv[1] = argv[0];
+       argc--; argv++;
+       return _ged_mater_set(gedp, argc, argv);
+    }
+
     if (BU_STR_EQUAL(argv[1], "import")) {
        argv[1] = argv[0];
        argc--; argv++;
@@ -1047,6 +1059,20 @@
        return _ged_mater_export(gedp, argc, argv);
     }
 
+    if (BU_STR_EQUAL(argv[1], "validate")) {
+       argv[1] = argv[0];
+       argc--; argv++;
+       return _ged_mater_validate(gedp, argc, argv);
+    }
+
+    if (BU_STR_EQUAL(argv[1], "source")) {
+       return _ged_mater_source(gedp);
+    }
+
+    if (BU_STR_EQUAL(argv[1], "clear")) {
+       return _ged_mater_clear(gedp);
+    }
+
     if (BU_STR_EQUAL(argv[1], "map")) {
        argv[1] = argv[0];
        argc--; argv++;

Modified: brlcad/trunk/src/libged/tests/mater.c
===================================================================
--- brlcad/trunk/src/libged/tests/mater.c       2019-02-19 18:05:24 UTC (rev 
72475)
+++ brlcad/trunk/src/libged/tests/mater.c       2019-02-19 21:52:18 UTC (rev 
72476)
@@ -26,13 +26,35 @@
 #include "common.h"
 
 #include <stdio.h>
+#include <string.h>
 #include <bu.h>
 #include <ged.h>
 
 int
+check_for_data(const char *filename, const char *key)
+{
+    struct bu_mapped_file *efile = bu_open_mapped_file(filename, "exported 
densities data");
+    if (!strstr((char *)efile->buf, key)) {
+       bu_log("Error: 'mater -d export' file %s does not contain all expected 
data\n", filename);
+       bu_close_mapped_file(efile);
+       return -1;
+    }
+    bu_close_mapped_file(efile);
+    if (!bu_file_delete(filename)) {
+       bu_log("Error deleting %s\n", filename);
+       return -1;
+    }
+    return 0;
+}
+
+
+
+int
 main(int ac, char *av[]) {
     struct ged *gedp;
     const char *gname = "ged_mater_test.g";
+    const char *exp_data = "ged_mater_density_export.txt";
+    char mdata[MAXPATHLEN];
     const char *mater_cmd[10] = {"mater", "-d", NULL, NULL, NULL, NULL, NULL, 
NULL, NULL, NULL};
 
     if (ac != 2) {
@@ -45,13 +67,71 @@
        return 2;
     }
 
+
     gedp = ged_open("db", gname, 0);
 
-    if (ged_mater(gedp, 2, (const char **)mater_cmd) != GED_HELP) {
-       bu_log("Basic argv doesn't return GED_HELP\n");
-       goto ged_test_fail;
+    if (BU_STR_EQUAL(av[1], "dnull")) {
+       if (ged_mater(gedp, 2, (const char **)mater_cmd) != GED_HELP) {
+           bu_log("Error: bare 'mater -d' doesn't return GED_HELP\n");
+           goto ged_test_fail;
+       }
     }
 
+    if (BU_STR_EQUAL(av[1], "dstd")) {
+
+       if (bu_file_exists(exp_data, NULL)) {
+           printf("ERROR: %s already exists, aborting\n", exp_data);
+           return 2;
+       }
+
+               (void)bu_dir(mdata, MAXPATHLEN, BU_DIR_DATA, "data", 
"NIST_DENSITIES", NULL);
+       if (!bu_file_exists(mdata, NULL)) {
+           bu_log("Error: density file %s not found.\n", mdata);
+           goto ged_test_fail;
+       }
+
+       mater_cmd[1] = "-d";
+       mater_cmd[2] = "validate";
+       mater_cmd[3] = mdata;
+       if (ged_mater(gedp, 4, (const char **)mater_cmd) != GED_OK) {
+           bu_log("Error: 'mater -d import' failed to validate %s\n", mdata);
+           goto ged_test_fail;
+       }
+
+       mater_cmd[1] = "-d";
+       mater_cmd[2] = "import";
+       mater_cmd[3] = "-v";
+       mater_cmd[4] = mdata;
+       if (ged_mater(gedp, 5, (const char **)mater_cmd) != GED_OK) {
+           bu_log("Error: 'mater -d import' failed to load %s\n", mdata);
+           goto ged_test_fail;
+       }
+
+       mater_cmd[1] = "-d";
+       mater_cmd[2] = "source";
+       mater_cmd[3] = NULL;
+       if (ged_mater(gedp, 4, (const char **)mater_cmd) != GED_OK) {
+           bu_log("Error: 'mater -d source' failed to run correctly\n");
+           goto ged_test_fail;
+       } else {
+           if (bu_strncmp(bu_vls_cstr(gedp->ged_result_str), 
gedp->ged_wdbp->dbip->dbi_filename, 
strlen(gedp->ged_wdbp->dbip->dbi_filename))) {
+               bu_log("Error: 'mater -d source' reports a location of %s 
instead of %s\n", bu_vls_cstr(gedp->ged_result_str), 
gedp->ged_wdbp->dbip->dbi_filename);
+               goto ged_test_fail;
+           }
+       }
+
+       mater_cmd[1] = "-d";
+       mater_cmd[2] = "export";
+       mater_cmd[3] = exp_data;
+       if (ged_mater(gedp, 4, (const char **)mater_cmd) != GED_OK || 
!bu_file_exists(exp_data, NULL)) {
+           bu_log("Error: 'mater -d export' failed to export to %s\n", 
exp_data);
+           goto ged_test_fail;
+       }
+       if (check_for_data(exp_data, "Xylene")) {
+           goto ged_test_fail;
+       }
+    }
+
     ged_close(gedp);
     BU_PUT(gedp, struct ged);
     bu_file_delete(gname);

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
BRL-CAD Source Commits mailing list
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to