コード例 #1
0
ファイル: test.c プロジェクト: barroca/Anthill
int
main (void) {
	TestStruct* data;

	/* save */
	printf("Saving...\n");
	data = (TestStruct*)malloc(sizeof(TestStruct));
	if (data == NULL) {
		fprintf(stderr, "malloc(): %s\n", strerror(errno));
		return 1;
	}
	data->id = 500;
	data->name = "Elanthis";
	data->hp = 70;
	data->hp_max = 75;
	print_test(data);
	save_test(data);
	free(data);

	/* load */
	printf("Loading...\n");
	data = load_test();
	if (data == NULL) {
		fprintf(stderr, "load_data(): %s\n", strerror(errno));
		return 1;
	}
	print_test(data);
	free(data);

	return 0;
}
コード例 #2
0
ファイル: testrunner.c プロジェクト: Pieter-was/osv
int main(int argc, char **argv)
{
	char path[PATH_MAX];

	if (argc == 1) {
		DIR *dir = opendir(TESTDIR);
		struct dirent *d;

		if (!dir) {
			perror("failed to open testdir");
			return EXIT_FAILURE;
		}

		while ((d = readdir(dir))) {
			if (strcmp(d->d_name, ".") == 0 ||
			    strcmp(d->d_name, "..") == 0)
				continue;

			snprintf(path, PATH_MAX, "%s/%s", TESTDIR, d->d_name);
			if (!check_path(path))
				continue;

			load_test(path, d->d_name);
		}

		if (closedir(dir) < 0) {
			perror("failed to close testdir");
			return EXIT_FAILURE;
		}
	} else {
		for (int i = 1; i < argc; i++) {
			snprintf(path, PATH_MAX, "%s/%s", TESTDIR, argv[i]);
			if (!check_path(path))
				continue;

			load_test(path, argv[i]);
		}
	}

	printf("All tests complete - %d/%d failures\n", nr_failures, nr_tests);

	return 0;
}
コード例 #3
0
ファイル: main.c プロジェクト: jakobjanot/ctst
int main(int argc, char** argv) {
  ctst_ctst* ctst = ctst_alloc();
  ctst_data data;

  data = ctst_set(ctst,"The answer to your question is",0,30,42);
  printf("%*s %d (was %d)\n",30,"The answer to your question is",ctst_get(ctst,"The answer to your question is",0,30),data);
  
  data = ctst_set(ctst,"Hello, world!",0,13,57);
  printf("%*s %d (was %d)\n",13,"Hello, world!",ctst_get(ctst,"Hello, world!",0,13),data);

  data = ctst_set(ctst,"Hello, world!",0,13,62);
  printf("%*s %d (was %d)\n",13,"Hello, world!",ctst_get(ctst,"Hello, world!",0,13),data);

  data = ctst_set(ctst,"The answer to your question is",0,30,11);
  printf("%*s %d (was %d)\n",30,"The answer to your question is",ctst_get(ctst,"The answer to your question is",0,30),data);

  data = ctst_set(ctst,"There is something rotten in the kingdom of Denmark",0,51,1122);

  printf("DUMP OF THE TREE\n");
  ctst_visit_all(ctst, &printer_visitor, 0);
  printf("END DUMP OF THE TREE\n");

  printf("DUMP OF THE TREE, only H*\n");
  ctst_visit_all_from_key(ctst, &printer_visitor, 0, "**Hello", 2, 1);
  printf("END DUMP OF THE TREE\n");

  printf("DUMP OF THE TREE, only The*\n");
  ctst_visit_all_from_key(ctst, &printer_visitor, 0, "The", 0, 3);
  printf("END DUMP OF THE TREE\n");

  printf("DUMP OF THE TREE, only There*\n");
  ctst_visit_all_from_key(ctst, &printer_visitor, 0, "--There", 2, 5);
  printf("END DUMP OF THE TREE\n");

  printf("Number of entries: %d\nTotal length of keys: %d\nTotal node count: %d\nMemory usage: %d\nRatio: %f\n",
    ctst_get_size(ctst),
    ctst_get_total_key_length(ctst),
    ctst_get_node_count(ctst),
    ctst_get_memory_usage(ctst),
    ctst_get_ratio(ctst)
  );

  printf("Removing a key\n");
  data = ctst_remove(ctst,"Hello, world!",0,13);
  printf("%*s %d (was %d)\n",13,"Hello, world!",ctst_get(ctst,"Hello, world!",0,13),data);

  printf("Number of entries: %d\nTotal length of keys: %d\nTotal node count: %d\nMemory usage: %d\nRatio: %f\n",
    ctst_get_size(ctst),
    ctst_get_total_key_length(ctst),
    ctst_get_node_count(ctst),
    ctst_get_memory_usage(ctst),
    ctst_get_ratio(ctst)
  );

  printf("DUMP OF THE TREE\n");
  ctst_visit_all(ctst, &printer_visitor, 0);
  printf("END DUMP OF THE TREE\n");

  printf("LOAD TEST\n");
  
  load_test(ctst);

  printf("DUMP OF THE TREE\n");
  ctst_visit_all(ctst, &printer_visitor, 0);
  printf("END DUMP OF THE TREE\n");
  
  printf("Number of entries: %d\nTotal length of keys: %d\nTotal node count: %d\nMemory usage: %d\nRatio: %f\n",
    ctst_get_size(ctst),
    ctst_get_total_key_length(ctst),
    ctst_get_node_count(ctst),
    ctst_get_memory_usage(ctst),
    ctst_get_ratio(ctst)
  );

  ctst_free(ctst);  
  
  return 0;
}
コード例 #4
0
int main(int argc, char* argv[])
{
    const size_t imageCount = 28;
    const size_t test_lfw = 1000;
    const size_t test_fddb = 1000;
    const size_t test_nonface = 1000;

    pm_init(argv[0], 0);

    std::cout << "initiating network..." << std::endl;

    Json::Value networkValue;

    // load neural net setting
    if (!load_test(networkValue))
    {
        return 0;
    }
    NeuralNet::Network network(networkValue);
    std::cout << "loading settings finished" << std::endl;

    // train only if the argument is given to this program
    bool do_train = false;
    if (argc >= 2 && !strncmp(argv[1], "train", 5))
    {
        do_train = true;
    }

    // loading images for evaluation
    std::vector< std::unique_ptr<NeuralNet::Image> > imageList;
    for (size_t i = 1; i <= imageCount; i++)
    {
        std::ostringstream oss;
        oss << "eval-image/" << i << ".bmp";
        imageList.push_back(preprocessImage(
                    NeuralNet::loadBitmapImage(oss.str().c_str())));
    }

    auto originalImgData = getRawDataFromImages(imageList);
    imageList.clear();
    std::cout << "loading evaluation images (original) finished" << std::endl;

    std::vector< std::unique_ptr<NeuralNet::Image> > fddbTestImages;
    if (!load_fddb(fddbTestImages, test_fddb, false))
    {
        std::cout << "error loading FDDB test images" << std::endl;
        return false;
    }

    auto fddbTestData = getRawDataFromImages(fddbTestImages);
    fddbTestImages.clear();
    std::cout << "loading evaluation images (FDDB) finished" << std::endl;

    // loading LFW images for evaluation
    std::vector< std::unique_ptr<NeuralNet::Image> > lfwTestImages;
    std::ifstream lfw_name_file("image-lfw/peopleDevTest.txt");
    for (size_t i = 1; i <= test_lfw; i++)
    {
        std::string person_line;
        if (!std::getline(lfw_name_file, person_line))
        {
            std::cout << "end-of-file of LFW names" << std::endl;
            return 0;
        }

        std::istringstream iss(person_line);
        std::string person_name;
        std::getline(iss, person_name, '\t');

        std::string file_name("image-lfw/");
        file_name.append(person_name);
        file_name.append("/");
        file_name.append(person_name);
        file_name.append("_0001.ppm");

        lfwTestImages.push_back(preprocessImage(
                    NeuralNet::loadPPMImage(file_name.c_str())));
    }

    auto lfwTestData = getRawDataFromImages(lfwTestImages);
    lfwTestImages.clear();
    std::cout << "loading evaluation images (LFW) finished" << std::endl;

    std::vector< std::unique_ptr<NeuralNet::Image> > nonFaceImages;
    if (!load_nonface_patch(nonFaceImages, test_nonface, 1))
    {
        std::cout << "error loading evaluation non-face images" << std::endl;
        return 0;
    }

    auto nonFaceTestData = getRawDataFromImages(nonFaceImages);
    nonFaceImages.clear();
    std::cout << "loading evaluation images (non-face) finished" << std::endl;

    // put test sets into the network
    std::vector< std::vector<int> > clist1;
    clist1.emplace_back(test_lfw, 0);
    network.registerTestSet("LFW", std::move(lfwTestData), std::move(clist1));

    std::vector< std::vector<int> > clist2;
    clist2.emplace_back(test_nonface, 1);
    network.registerTestSet("non-face", std::move(nonFaceTestData),
            std::move(clist2));

    std::vector< std::vector<int> > clist3;
    clist3.emplace_back(test_fddb, 0);
    network.registerTestSet("FDDB", std::move(fddbTestData), std::move(clist3));

    std::vector< std::vector<int> > clist4;
    std::vector<int> clist4_temp;
    for (size_t i = 0; i < 14; i++)
        clist4_temp.push_back(0);
    for (size_t i = 0; i < 14; i++)
        clist4_temp.push_back(1);
    clist4.push_back(clist4_temp);
    network.registerTestSet("original", std::move(originalImgData),
            std::move(clist4));

    std::chrono::time_point<std::chrono::system_clock> time_point_start, time_point_finish;

    if (do_train)
    {
        std::vector<float> data;
        std::vector< std::vector<int> > category;
        category.push_back(std::vector<int>());

        // load face images
        if (!load_faces(data, category))
        {
            return 0;
        }
        std::cout << "loading face images (for training) finished" << std::endl;

        // load non-face images
        if (!load_non_faces(data, category))
        {
            return 0;
        }
        std::cout << "loading non-face images (for training) finished" << std::endl;

        std::cout << "training begin, timer start" << std::endl;
        time_point_start = std::chrono::system_clock::now();

        // actual training goes here
        network.train(data, category);

        time_point_finish = std::chrono::system_clock::now();
        std::cout << "timer finished" << std::endl;
    }
    else
    {
        network.loadFromFiles();

        std::cout << "network weight/bias load complete, timer start" << std::endl;
        time_point_start = std::chrono::system_clock::now();

        network.evaluateTestSets();

        time_point_finish = std::chrono::system_clock::now();
        std::cout << "timer finished" << std::endl;
    }

    std::chrono::duration<double> elapsed_seconds = time_point_finish - time_point_start;
    std::cout << "elapsed time: " << elapsed_seconds.count() << "s" << std::endl;
}