-
- #include <stdio.h>
-
- #include <kc.h>
- #include <kc_env.h>
- #include <kc_ut.h>
- #include <kc_assert.h>
-
- static void test_env(void);
-
- /**
- * env 単体テストスイート
- */
- void suite_env(void)
- {
- KcUt *ut = KcUt_get_instance();
- ut->add(ut, UT_TESTCASE, "env", test_env);
- }
-
- /**
- * env テスト。
- */
- static void test_env(void)
- {
- // 事前設定
- KcEnv_remove("UT_TEST_ENV");
- // 値設定
- bool ret = KcEnv_set("UT_TEST_ENV", "ABC", false);
- assert_true(ret);
-
- // 上書き無し、既に存在する。
- ret = KcEnv_set("UT_TEST_ENV", "XYZ", false);
- assert_true(ret);
- char *env_val = KcEnv_get("UT_TEST_ENV");
- assert_equals((const char *)"ABC", env_val);
-
- // 上書きあり、既に存在する。
- ret = KcEnv_set("UT_TEST_ENV", "XYZ", true);
- assert_true(ret);
- printf("--6--\n");
- env_val = KcEnv_get("UT_TEST_ENV");
- assert_equals("XYZ", env_val);
-
- // 削除
- ret = KcEnv_remove("UT_TEST_ENV");
- assert_true(ret);
-
- // 存在しないキーを削除
- ret = KcEnv_remove("UT_TEST_ENV");
- assert_true(ret);
-
- // キーに = が含まれる。
- ret = KcEnv_set("UT_TEST_ENV=XXX", "ABC", false);
- assert_false(ret);
-
- // = が含まれたキーで取得
- ret = KcEnv_set("UT_TEST_ENV", "ABC", false);
- assert_true(ret);
- env_val = KcEnv_get("UT_TEST_ENV=XXX");
- assert_equals("ABC", env_val);
-
- // キーの値が 4096 超える
- char key[8192] = {'\0'};
- for (int i = 0; i < 5000; i++)
- {
- key[i] = 'X';
- }
- key[4999] = 'Z';
- ret = KcEnv_set(key, "XYZ", false);
- assert_true(ret);
-
- env_val = KcEnv_get(key);
- assert_not_null(env_val);
- assert_equals("XYZ", env_val);
-
- // = 以降は無視されて値が取得されることを確認
- key[5000] = '=';
- key[5001] = 'A';
- key[5002] = 'B';
- key[5003] = 'C';
- env_val = KcEnv_get(key);
- assert_not_null(env_val);
- assert_equals("XYZ", env_val);
- }