text: /*
   * Copyright (c) 2020-2021 Siddharth Chandrasekaran <sidcha.dev@gmail.com>
   *
   * SPDX-License-Identifier: Apache-2.0
   */
  
  #include <stdio.h>
  #include <stdlib.h>
  #include <time.h>
  #include <string.h>
  
  #include <utils/strlib.h>
  
  #include "test.h"
  
  STRING_DEF(test_str, 8);
  
  void test_print_info_string(const char *msg, string_t *s)
  {
  	printf("\t[%s] s->len: %zu s->max_len: %zu s->buf: %s\n",
  		msg, s->len, s->max_len, s->buf);
  }
  
  int test_check_str(string_t *s, const char *str)
  {
  	if (strcmp(s->buf, str) != 0)
  		return -1;
  
  	return 0;
  }
  
  int test_str_printf()
  {
  	int ret;
  
  	ret = string_printf(&test_str, "c", "age: %d", 10);
  	if (ret <= 0 || test_check_str(&test_str, "age: 10")) {
  		printf("\tret: %d", ret);
  		test_print_info_string("string_printf: create", &test_str);
  		return -1;
  	}
  
  	ret = string_printf(&test_str, "a", " id: %d", 101);
  	if (ret != -1) {
  		printf("\tret: %d", ret);
  		test_print_info_string("string_printf: create", &test_str);
  		return -1;
  	}
  
  	return 0;
  }
  
  int test_str_copy()
  {
  	int ret;
  
  	ret = string_copy(&test_str, "c", "1234567890", 10);
  	if (ret != -1) {
  		test_print_info_string("Create excess", &test_str);
  		return -1;
  	}
  
  	ret = string_copy(&test_str, "cf", "1234567890", 10);
  	if (ret != 8) {
  		test_print_info_string("Create fill", &test_str);
  		return -1;
  	}
  
  	ret = string_copy(&test_str, "c", "1234567", 7);
  	if (ret != 7) {
  		test_print_info_string("Create", &test_str);
  		return -1;
  	}
  
  	ret = string_copy(&test_str, "a", "1", 1);
  	if (ret != 1) {
  		test_print_info_string("Append", &test_str);
  		return -1;
  	}
  
  	ret = string_copy(&test_str, "a", "123", 3);
  	if (ret != -1) {
  		test_print_info_string("Append after full", &test_str);
  		return -1;
  	}
  
  	return 0;
  }
  
  TEST_DEF(strlib)
  {
  	TEST_MOD_INIT();
  
  	TEST_MOD_EXEC(test_str_copy());
  	TEST_MOD_EXEC(test_str_printf());
  
  	TEST_MOD_REPORT();
  }
  