summaryrefslogtreecommitdiffstats
path: root/tests/fsm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fsm')
-rw-r--r--tests/fsm/fsm_test.c24
-rw-r--r--tests/fsm/fsm_test.err27
2 files changed, 51 insertions, 0 deletions
diff --git a/tests/fsm/fsm_test.c b/tests/fsm/fsm_test.c
index 859b78dc..e34164cf 100644
--- a/tests/fsm/fsm_test.c
+++ b/tests/fsm/fsm_test.c
@@ -237,6 +237,30 @@ do { \
test_id("invalid.id", -EINVAL, "(arbitrary_id)");
+ fprintf(stderr, "--- id format tests...\n");
+/* Update the id, assert the proper rc, and expect a resulting fsm inst name + lookup */
+#define test_id_f(expect_rc, expect_name_suffix, new_id_fmt, args...) do { \
+ int rc; \
+ fprintf(stderr, "osmo_fsm_inst_update_id_f(%s, " #args ")\n", \
+ osmo_quote_str(new_id_fmt, -1)); \
+ rc = osmo_fsm_inst_update_id_f(fi, new_id_fmt, ## args); \
+ fprintf(stderr, " rc == %d", rc); \
+ if (rc == (expect_rc)) \
+ fprintf(stderr, ", ok\n"); \
+ else { \
+ fprintf(stderr, ", ERROR: expected rc == %d\n", expect_rc); \
+ OSMO_ASSERT(rc == expect_rc); \
+ } \
+ assert_name("Test_FSM" expect_name_suffix); \
+ }while (0)
+
+ test_id_f(-EINVAL, "(arbitrary_id)", "format%cid", '.');
+ test_id_f(-EINVAL, "(arbitrary_id)", "%s", "");
+ test_id_f(0, "(format23id42)", "format%xid%d", 0x23, 42);
+ test_id_f(0, "", NULL);
+ test_id_f(0, "", NULL);
+ test_id_f(0, "(arbitrary_id)", "%s%c%s", "arbitrary", '_', "id");
+
fprintf(stderr, "\n--- %s() done\n\n", __func__);
osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REQUEST, NULL);
diff --git a/tests/fsm/fsm_test.err b/tests/fsm/fsm_test.err
index 3e01d48b..3237def5 100644
--- a/tests/fsm/fsm_test.err
+++ b/tests/fsm/fsm_test.err
@@ -47,6 +47,33 @@ Attempting to set illegal id for FSM instance of type 'Test_FSM': "invalid.id"
 rc == -22, ok
osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)"
osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi
+--- id format tests...
+osmo_fsm_inst_update_id_f("format%cid", '.')
+Attempting to set illegal id for FSM instance of type 'Test_FSM': "format.id"
+ rc == -22, ok
+ osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)"
+ osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi
+osmo_fsm_inst_update_id_f("%s", "")
+Attempting to set illegal id for FSM instance of type 'Test_FSM': ""
+ rc == -22, ok
+ osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)"
+ osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi
+osmo_fsm_inst_update_id_f("format%xid%d", 0x23, 42)
+ rc == 0, ok
+ osmo_fsm_inst_name() == "Test_FSM(format23id42)"
+ osmo_fsm_inst_find_by_name("Test_FSM(format23id42)") == fi
+osmo_fsm_inst_update_id_f(NULL, )
+ rc == 0, ok
+ osmo_fsm_inst_name() == "Test_FSM"
+ osmo_fsm_inst_find_by_name("Test_FSM") == fi
+osmo_fsm_inst_update_id_f(NULL, )
+ rc == 0, ok
+ osmo_fsm_inst_name() == "Test_FSM"
+ osmo_fsm_inst_find_by_name("Test_FSM") == fi
+osmo_fsm_inst_update_id_f("%s%c%s", "arbitrary", '_', "id")
+ rc == 0, ok
+ osmo_fsm_inst_name() == "Test_FSM(arbitrary_id)"
+ osmo_fsm_inst_find_by_name("Test_FSM(arbitrary_id)") == fi
--- test_id_api() done