expo: Set the initial next_id to 1
If expo_set_dynamic_start() is never called, the first scene created will have an ID of 0, which is invalid. Correct this by setting a default value. Add a test to check this. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -29,6 +29,7 @@ int expo_new(const char *name, void *priv, struct expo **expp)
|
||||
exp->priv = priv;
|
||||
INIT_LIST_HEAD(&exp->scene_head);
|
||||
INIT_LIST_HEAD(&exp->str_head);
|
||||
exp->next_id = 1;
|
||||
|
||||
*expp = exp;
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ static int expo_base(struct unit_test_state *uts)
|
||||
*name = '\0';
|
||||
ut_assertnonnull(exp);
|
||||
ut_asserteq(0, exp->scene_id);
|
||||
ut_asserteq(0, exp->next_id);
|
||||
ut_asserteq(1, exp->next_id);
|
||||
|
||||
/* Make sure the name was allocated */
|
||||
ut_assertnonnull(exp->name);
|
||||
@@ -130,7 +130,7 @@ static int expo_scene(struct unit_test_state *uts)
|
||||
ut_assertok(expo_new(EXPO_NAME, NULL, &exp));
|
||||
|
||||
scn = NULL;
|
||||
ut_asserteq(0, exp->next_id);
|
||||
ut_asserteq(1, exp->next_id);
|
||||
strcpy(name, SCENE_NAME1);
|
||||
id = scene_new(exp, name, SCENE1, &scn);
|
||||
*name = '\0';
|
||||
@@ -167,6 +167,25 @@ static int expo_scene(struct unit_test_state *uts)
|
||||
}
|
||||
BOOTSTD_TEST(expo_scene, UTF_DM | UTF_SCAN_FDT);
|
||||
|
||||
/* Check creating a scene with no ID */
|
||||
static int expo_scene_no_id(struct unit_test_state *uts)
|
||||
{
|
||||
struct scene *scn;
|
||||
struct expo *exp;
|
||||
char name[100];
|
||||
int id;
|
||||
|
||||
ut_assertok(expo_new(EXPO_NAME, NULL, &exp));
|
||||
ut_asserteq(1, exp->next_id);
|
||||
|
||||
strcpy(name, SCENE_NAME1);
|
||||
id = scene_new(exp, SCENE_NAME1, 0, &scn);
|
||||
ut_asserteq(1, scn->id);
|
||||
|
||||
return 0;
|
||||
}
|
||||
BOOTSTD_TEST(expo_scene_no_id, UTF_DM | UTF_SCAN_FDT);
|
||||
|
||||
/* Check creating a scene with objects */
|
||||
static int expo_object(struct unit_test_state *uts)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user