consoleui-test.cpp
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:2k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. #include "consoleui.h"
  2. #include <stdio.h>
  3. #include <unistd.h>
  4. #include <stdarg.h>
  5. #include <time.h>
  6. #include <string.h>
  7. #include <stdlib.h>
  8. static ConsoleUI *ui = NULL;
  9. static void
  10. usage() {
  11. fprintf(stderr, "Usage: consoleui-test <-c|-p>n"
  12. "  -c  Test for correctness.n"
  13. "  -p  Test for performance.n");
  14. exit(1);
  15. }
  16. static void
  17. show(const char *format, ...) {
  18. va_list ap;
  19. char buf[1024 * 4];
  20. va_start(ap, format);
  21. vsnprintf(buf, sizeof(buf) - 1, format, ap);
  22. va_end(ap);
  23. ui->print(buf);
  24. }
  25. /*
  26. static void
  27. doNothing(unsigned int maxIterations) {
  28. FILE *f = fopen("/dev/urandom", "r");
  29. if (f == NULL) {
  30. show("Cannot open /dev/urandom for reading.n");
  31. exit(1);
  32. }
  33. unsigned int i = 0;
  34. while (i < maxIterations && !feof(f)) {
  35. fgetc(f);
  36. i++;
  37. }
  38. fclose(f);
  39. }
  40. */
  41. static int
  42. testCorrectness() {
  43. ui = ConsoleUI::getInstance();
  44. ui->start();
  45. srand(time(NULL));
  46. for (int i = 1; i <= 5; i++) {
  47. show("Loading %d...n", i);
  48. usleep(rand() % 200000);
  49. }
  50. show("Checking for new portals...");
  51. sleep(1);
  52. show(" none found.n");
  53. show("e[1;31mThis is a test error.");
  54. sleep(2);
  55. show("e[1;31m This is another test error.n");
  56. sleep(2);
  57. show("e[1;32mThis is a green message.n");
  58. show("e[0mThis is a message with normal color.n");
  59. show("e[1;32mThis is a green message.n");
  60. bool quit = false;
  61. while (!quit) {
  62. char *input = ui->getInput();
  63. if (input != NULL) {
  64. if (strcmp(input, "quit") == 0) {
  65. quit = true;
  66. } else if (strlen(input) > 0) {
  67. show("Unknown command '%s'n", input);
  68. }
  69. free(input);
  70. } else {
  71. usleep(50000);
  72. }
  73. }
  74. return 0;
  75. }
  76. static int
  77. testPerformance() {
  78. ui = ConsoleUI::getInstance();
  79. ui->start();
  80. for (int i = 1; i <= 5000000; i++) {
  81. show("Loading %d...n", i);
  82. }
  83. return 0;
  84. }
  85. int
  86. main(int argc, char *argv[]) {
  87. if (argc != 2) {
  88. usage();
  89. }
  90. if (strcmp(argv[1], "-c") == 0) {
  91. return testCorrectness();
  92. } else if (strcmp(argv[1], "-p") == 0) {
  93. return testPerformance();
  94. } else {
  95. usage();
  96. return 1; // Never reached.
  97. }
  98. }