Newer
Older
libkc / modules / test / src / test_env.c
  1.  
  2. #include <stdio.h>
  3.  
  4. #include <kc.h>
  5. #include <kc_env.h>
  6. #include <kc_ut.h>
  7. #include <kc_assert.h>
  8.  
  9. static void test_env(void);
  10.  
  11. /**
  12. * env 単体テストスイート
  13. */
  14. void suite_env(void)
  15. {
  16. KcUt *ut = KcUt_get_instance();
  17. ut->add(ut, UT_TESTCASE, "env", test_env);
  18. }
  19.  
  20. /**
  21. * env テスト。
  22. */
  23. static void test_env(void)
  24. {
  25. // 事前設定
  26. KcEnv_remove("UT_TEST_ENV");
  27. // 値設定
  28. bool ret = KcEnv_set("UT_TEST_ENV", "ABC", false);
  29. assert_true(ret);
  30.  
  31. // 上書き無し、既に存在する。
  32. ret = KcEnv_set("UT_TEST_ENV", "XYZ", false);
  33. assert_true(ret);
  34. char *env_val = KcEnv_get("UT_TEST_ENV");
  35. assert_equals((const char *)"ABC", env_val);
  36.  
  37. // 上書きあり、既に存在する。
  38. ret = KcEnv_set("UT_TEST_ENV", "XYZ", true);
  39. assert_true(ret);
  40. printf("--6--\n");
  41. env_val = KcEnv_get("UT_TEST_ENV");
  42. assert_equals("XYZ", env_val);
  43.  
  44. // 削除
  45. ret = KcEnv_remove("UT_TEST_ENV");
  46. assert_true(ret);
  47.  
  48. // 存在しないキーを削除
  49. ret = KcEnv_remove("UT_TEST_ENV");
  50. assert_true(ret);
  51.  
  52. // キーに = が含まれる。
  53. ret = KcEnv_set("UT_TEST_ENV=XXX", "ABC", false);
  54. assert_false(ret);
  55.  
  56. // = が含まれたキーで取得
  57. ret = KcEnv_set("UT_TEST_ENV", "ABC", false);
  58. assert_true(ret);
  59. env_val = KcEnv_get("UT_TEST_ENV=XXX");
  60. assert_equals("ABC", env_val);
  61.  
  62. // キーの値が 4096 超える
  63. char key[8192] = {'\0'};
  64. for (int i = 0; i < 5000; i++)
  65. {
  66. key[i] = 'X';
  67. }
  68. key[4999] = 'Z';
  69. ret = KcEnv_set(key, "XYZ", false);
  70. assert_true(ret);
  71.  
  72. env_val = KcEnv_get(key);
  73. assert_not_null(env_val);
  74. assert_equals("XYZ", env_val);
  75.  
  76. // = 以降は無視されて値が取得されることを確認
  77. key[5000] = '=';
  78. key[5001] = 'A';
  79. key[5002] = 'B';
  80. key[5003] = 'C';
  81. env_val = KcEnv_get(key);
  82. assert_not_null(env_val);
  83. assert_equals("XYZ", env_val);
  84. }