/src/test/expr_test.c

http://ftk.googlecode.com/ · C · 69 lines · 63 code · 6 blank · 0 comment · 3 complexity · db642bbede050850a09bb644077a51ba MD5 · raw file

  1. #include "ftk.h"
  2. #include "ftk_expr.h"
  3. typedef struct tagTESTCASE_T
  4. {
  5. double val;
  6. char* expr;
  7. }TESTCASE_T, *PTESTCASE_T;
  8. TESTCASE_T g_aTestcase[] =
  9. {
  10. {0.5, "0.5"},
  11. {8, "010"},
  12. {9, "011"},
  13. {1, "0x1"},
  14. {1, "0x001"},
  15. {15, "0x0F"},
  16. {15, "0XF"},
  17. {5, "05"},
  18. {15, "05+(5+0x5)"},
  19. {1, "1.00"},
  20. {3, "1.5+1.5"},
  21. {3, "1+1+1"},
  22. {3, "(1+1+1)*1.00"},
  23. {7.5, "(1.2+1.8)*2.5"},
  24. {1, "1"},
  25. {2, "1+1"},
  26. {1, "1|1"},
  27. {3, "2|1"},
  28. {1, "1&1"},
  29. {0, "2&1"},
  30. {3, "1+1+1"},
  31. {4, "(1+1)*2"},
  32. {5, "2*2+1"},
  33. {6, "2+(2*2)"},
  34. {7, "(1+2)+(2*2)"},
  35. {8, "64/8)"},
  36. {9, "(82-1)/9)"},
  37. {0, "(64/8-8)"},
  38. {1, " 1 "},
  39. {2, " 1 + 1 "},
  40. {3, " 1 + 1 + 1"},
  41. {4, " ( 1 + 1 ) * 2 "},
  42. {5, " 2 * 2 + 1 "},
  43. {6, " 2 + ( 2 * 2 )"},
  44. {7, " ( 1 + 2 ) + ( 2 * 2 ) "},
  45. {8, " 64 / 8 ) "},
  46. {9, " ( 82 - 1 ) / 9 ) "},
  47. {0, " ( 64 / 8 - 8 ) "},
  48. {0, NULL}
  49. };
  50. int main(int argc, char* argv[])
  51. {
  52. int i = 0;
  53. double val = 0;
  54. ftk_set_allocator(ftk_allocator_default_create());
  55. while(g_aTestcase[i].expr != NULL)
  56. {
  57. val = ftk_expr_eval(g_aTestcase[i].expr);
  58. printf("%s=%lf\n", g_aTestcase[i].expr, val);
  59. assert(g_aTestcase[i].val == val);
  60. i++;
  61. }
  62. return 0;
  63. }