|
@@ -34,6 +34,26 @@ void test_SCDString_free(void **state) {
|
|
|
assert_true(dstr.capacity == 0);
|
|
assert_true(dstr.capacity == 0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void test_SCDString_copy(void **state) {
|
|
|
|
|
+ (void) state;
|
|
|
|
|
+
|
|
|
|
|
+ SCDString dstr1;
|
|
|
|
|
+ assert_true(SCDString_alloc(&dstr1, "Hello", strlen("Hello")) == SCUFCONT_SUCCESS);
|
|
|
|
|
+ assert_string_equal(SCDString_c_str(&dstr1), "Hello");
|
|
|
|
|
+
|
|
|
|
|
+ SCDString dstr2;
|
|
|
|
|
+ assert_true(SCDString_alloc(&dstr2, "foo", strlen("foo")) == SCUFCONT_SUCCESS);
|
|
|
|
|
+ assert_string_equal(SCDString_c_str(&dstr2), "foo");
|
|
|
|
|
+
|
|
|
|
|
+ assert_true(SCDString_copy(&dstr1, &dstr2) == SCUFCONT_SUCCESS);
|
|
|
|
|
+ assert_string_equal(SCDString_c_str(&dstr2), "Hello");
|
|
|
|
|
+ assert_uint_equal(dstr2.len, dstr1.len);
|
|
|
|
|
+ assert_uint_equal(dstr2.capacity, dstr1.len + 1);
|
|
|
|
|
+
|
|
|
|
|
+ SCDString_free(&dstr1);
|
|
|
|
|
+ SCDString_free(&dstr2);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void test_SCDString_equal(void **state) {
|
|
void test_SCDString_equal(void **state) {
|
|
|
(void) state;
|
|
(void) state;
|
|
|
|
|
|
|
@@ -102,6 +122,8 @@ void test_SCDString_concat_char(void **state) {
|
|
|
|
|
|
|
|
SCDString_concat_char(&dstr, 'y');
|
|
SCDString_concat_char(&dstr, 'y');
|
|
|
assert_string_equal(dstr.data, "Worldly");
|
|
assert_string_equal(dstr.data, "Worldly");
|
|
|
|
|
+
|
|
|
|
|
+ SCDString_free(&dstr);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void test_SCDString_concat_c_str(void **state) {
|
|
void test_SCDString_concat_c_str(void **state) {
|
|
@@ -164,10 +186,64 @@ void test_SCDString_split(void **state) {
|
|
|
assert_true(arr == NULL);
|
|
assert_true(arr == NULL);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void test_SCDString_char_mod(void **state) {
|
|
|
|
|
+ (void) state;
|
|
|
|
|
+
|
|
|
|
|
+ SCDString dstr;
|
|
|
|
|
+ assert_true(SCDString_alloc(&dstr, "foo", strlen("foo")) == SCUFCONT_SUCCESS);
|
|
|
|
|
+ assert_string_equal(SCDString_c_str(&dstr), "foo");
|
|
|
|
|
+
|
|
|
|
|
+ assert_true(SCDString_char_mod(&dstr, 0, 'h') == SCUFCONT_SUCCESS);
|
|
|
|
|
+ assert_string_equal(SCDString_c_str(&dstr), "hoo");
|
|
|
|
|
+
|
|
|
|
|
+ assert_true(SCDString_char_mod(&dstr, 1, 'a') == SCUFCONT_SUCCESS);
|
|
|
|
|
+ assert_string_equal(SCDString_c_str(&dstr), "hao");
|
|
|
|
|
+
|
|
|
|
|
+ assert_true(SCDString_char_mod(&dstr, 2, 'b') == SCUFCONT_SUCCESS);
|
|
|
|
|
+ assert_string_equal(SCDString_c_str(&dstr), "hab");
|
|
|
|
|
+
|
|
|
|
|
+ assert_true(SCDString_char_mod(&dstr, 3, 'b') == SCUFCONT_OUT_OF_BOUNDS);
|
|
|
|
|
+ assert_string_equal(SCDString_c_str(&dstr), "hab");
|
|
|
|
|
+
|
|
|
|
|
+ SCDString_free(&dstr);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void test_SCDString_char_remove(void **state) {
|
|
|
|
|
+ (void) state;
|
|
|
|
|
+
|
|
|
|
|
+ char *text = "World";
|
|
|
|
|
+ SCDString dstr;
|
|
|
|
|
+ assert_true(SCDString_alloc(&dstr, text, strlen(text)) == SCUFCONT_SUCCESS);
|
|
|
|
|
+ assert_string_equal(SCDString_c_str(&dstr), text);
|
|
|
|
|
+ assert_uint_equal(dstr.len, strlen(text));
|
|
|
|
|
+
|
|
|
|
|
+ text = "Worl";
|
|
|
|
|
+ assert_true(SCDString_char_remove(&dstr, dstr.len - 1) == SCUFCONT_SUCCESS);
|
|
|
|
|
+ assert_string_equal(SCDString_c_str(&dstr), text);
|
|
|
|
|
+ assert_uint_equal(dstr.len, strlen(text));
|
|
|
|
|
+
|
|
|
|
|
+ text = "Wol";
|
|
|
|
|
+ assert_true(SCDString_char_remove(&dstr, 2) == SCUFCONT_SUCCESS);
|
|
|
|
|
+ assert_string_equal(SCDString_c_str(&dstr), text);
|
|
|
|
|
+ assert_uint_equal(dstr.len, strlen(text));
|
|
|
|
|
+
|
|
|
|
|
+ text = "ol";
|
|
|
|
|
+ assert_true(SCDString_char_remove(&dstr, 0) == SCUFCONT_SUCCESS);
|
|
|
|
|
+ assert_string_equal(SCDString_c_str(&dstr), text);
|
|
|
|
|
+ assert_uint_equal(dstr.len, strlen(text));
|
|
|
|
|
+
|
|
|
|
|
+ assert_true(SCDString_char_remove(&dstr, dstr.len) == SCUFCONT_OUT_OF_BOUNDS);
|
|
|
|
|
+ assert_string_equal(SCDString_c_str(&dstr), text);
|
|
|
|
|
+ assert_uint_equal(dstr.len, strlen(text));
|
|
|
|
|
+
|
|
|
|
|
+ SCDString_free(&dstr);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
int DString_tests_run(void) {
|
|
int DString_tests_run(void) {
|
|
|
const struct CMUnitTest tests[] = {
|
|
const struct CMUnitTest tests[] = {
|
|
|
cmocka_unit_test(test_SCDString_alloc),
|
|
cmocka_unit_test(test_SCDString_alloc),
|
|
|
cmocka_unit_test(test_SCDString_free),
|
|
cmocka_unit_test(test_SCDString_free),
|
|
|
|
|
+ cmocka_unit_test(test_SCDString_copy),
|
|
|
cmocka_unit_test(test_SCDString_equal),
|
|
cmocka_unit_test(test_SCDString_equal),
|
|
|
cmocka_unit_test(test_SCDString_equal_c_str),
|
|
cmocka_unit_test(test_SCDString_equal_c_str),
|
|
|
cmocka_unit_test(test_SCDString_equal_next_chars_c_str),
|
|
cmocka_unit_test(test_SCDString_equal_next_chars_c_str),
|
|
@@ -175,6 +251,8 @@ int DString_tests_run(void) {
|
|
|
cmocka_unit_test(test_SCDString_concat_c_str),
|
|
cmocka_unit_test(test_SCDString_concat_c_str),
|
|
|
cmocka_unit_test(test_SCDString_c_str),
|
|
cmocka_unit_test(test_SCDString_c_str),
|
|
|
cmocka_unit_test(test_SCDString_split),
|
|
cmocka_unit_test(test_SCDString_split),
|
|
|
|
|
+ cmocka_unit_test(test_SCDString_char_mod),
|
|
|
|
|
+ cmocka_unit_test(test_SCDString_char_remove),
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
return cmocka_run_group_tests_name("DString", tests, NULL, NULL);
|
|
return cmocka_run_group_tests_name("DString", tests, NULL, NULL);
|