"List should be at end after new insertion");
fail_unless (strcmp(tval, (char *) list_val (lp)) == 0,
"List current val should equal newly inserted val");
+ list_free (lp);
}
END_TEST
-START_TEST(test_add_a_bunch)
+START_TEST(test_add_front)
{
- List *lp;
- int i, j;
- for (i = 0; i < 3; i++) {
- lp = check_list_create();
- for (j = 0; j < 1000; j++)
- list_add_end (lp, "abc");
- list_free(lp);
- }
+ List * lp = check_list_create();
+ const char * tval = "abc";
+
+ list_add_front (lp, tval);
+
+ fail_unless (list_val (lp) != NULL,
+ "List current val should not be null after new insertion");
+ fail_unless (strcmp(tval, (char *) list_val (lp)) == 0,
+ "List current val should equal newly inserted val");
+ list_free (lp);
}
END_TEST
END_TEST
+START_TEST(test_add_front_and_next)
+{
+ List * lp = check_list_create();
+ const char *tval1 = "abc";
+ const char *tval2 = "123";
+
+ list_add_front (lp, tval1);
+ list_add_front (lp, tval2);
+ list_front(lp);
+ fail_unless (strcmp (tval2, list_val (lp)) == 0,
+ "List head val should equal last inserted val");
+ list_advance (lp);
+ fail_unless (!list_at_end (lp),
+ "List should not be at end after two adds and one next");
+ fail_unless (strcmp (tval1, list_val (lp)) == 0,
+ "List val should equal first inserted val");
+ list_advance(lp);
+ fail_unless (list_at_end (lp),
+ "List should be at and after two adds and two nexts");
+ list_free (lp);
+}
+END_TEST
+
+START_TEST(test_add_a_bunch)
+{
+ List *lp;
+ int i, j;
+ for (i = 0; i < 3; i++) {
+ lp = check_list_create();
+ for (j = 0; j < 1000; j++) {
+ list_add_end (lp, "abc");
+ list_add_front (lp, "123");
+ }
+ list_free(lp);
+ }
+}
+END_TEST
+
Suite *make_list_suite (void)
{
suite_add_tcase (s, tc);
tcase_add_test (tc, test_create);
+ tcase_add_test (tc, test_free);
tcase_add_test (tc, test_add_end);
+ tcase_add_test (tc, test_add_front);
tcase_add_test (tc, test_add_end_and_next);
+ tcase_add_test (tc, test_add_front_and_next);
tcase_add_test (tc, test_add_a_bunch);
- tcase_add_test (tc, test_free);
return s;
}