jinyedge's note
{http://www.jinyedge.pe.kr}
Hi, this is jinyedge. I'm a software developer.
I hope you can find some useful information
in my homepage.
jinyedge at gmail.com
Since 2001.12.05
|
|
| Subj: C, edgelib.h, edgelib.c |
|
|
Mtime: 2010-06-23 00:06:04 |
|
File1: edgelib_test.tgz, 8KB
/*
- Author: jinyedge
- Comment:
*/
#include <stdio.h>
#include <assert.h>
#include "edgelib.h"
//---------------------------------------------------------------------
typedef struct{
char* name;
int age;
char* job;
} User;
//---------------------------------------------------------------------
User* user_new(char* name, int age, char* job){
User* u = (User*)malloc(sizeof(User));
u->name = strdup(name);
u->age = age;
u->job = strdup(job);
return u;
}
//---------------------------------------------------------------------
void user_free(User* u){
if(!u){
return;
}
if(u->name){
free(u->name);
u->name = NULL;
}
if(u->job){
free(u->job);
u->job = NULL;
}
free(u);
}
//------------------------------------------------------------------------
int user_cmp(const void* v1, const void* v2){
return strcmp((*(User**)v1)->name, (*(User**)v2)->name);
}
//---------------------------------------------------------------------
void string_functions(){
char* line = "This is a test..";
char buf[1024], rbuf[1024];
int res = 0;
char* pline;
puts("** string_functions() **");
// Duplicate a string.
pline = pstr_dup(line);
puts(pline);
free(pline);
// String upper, lower.
puts("");
str_upper(line, buf);
puts(buf);
str_lower(line, buf);
puts(buf);
// Reverse string.
puts("");
str_rev(line, buf);
puts(buf);
// Check string with str_starts_with.
res = str_starts_with(line, "This");
assert(res == 1);
// String index.
puts("");
res = str_index(line, "s");
printf("str_index for `s` = %d\n", res);
res = str_rindex(line, "s");
printf("str_rindex for `s = %d\n", res);
// Trim.
puts("");
sprintf(buf, " %s ", line);
printf("Before trimed: %s, hehe..\n", buf);
trim(buf, rbuf);
printf("After trimed: %s, hehe..\n", rbuf);
// Replace.
puts("");
replace(line, "his", "kkk", buf);
puts(buf);
pline = preplace(line, "kkk", "his");
puts(pline);
free(pline);
strcpy(buf, "ADSFG");
puts(buf);
str_lower(buf, buf);
puts(buf);
// Check string with is_numeric.
res = is_numeric(line);
assert(res == 0);
}
//---------------------------------------------------------------------
void string_list_functions(){
int i;
char buf[1024], buf2[1024];
StringList* list;
StringList* list2;
puts("\n** string_list_functions() **");
list = string_list_new();
string_list_add(list, "123");
string_list_add(list, "456");
string_list_add(list, "789");
printf("length: %d\n", list->length);
puts("data:");
for(i = 0; i < list->length; i++){
puts(list->arr[i]);
}
// Join, Replace, Split.
puts("");
join(list, "++", buf);
printf("join: %s\n", buf);
replace(buf, "++", "--", buf2);
printf("replace: %s\n", buf2);
puts("split:");
list2 = split(buf2, "--");
for(i = 0; i < list2->length; i++){
puts(list2->arr[i]);
}
// Reverse sorting.
puts("");
puts("string_list_rsort:");
string_list_rsort(list);
for(i = 0; i < list->length; i++){
puts(list->arr[i]);
}
string_list_free(list);
string_list_free(list2);
}
//---------------------------------------------------------------------
void string_map_functions(){
StringMap* map;
char buf[256];
puts("\n** string_map_functions() **");
map = string_map_new();
string_map_add(map, "no", "1");
string_map_add(map, "name", "jinyedge");
string_map_add(map, "job", "developer");
string_map_val(map, "name", buf);
printf("name = %s\n", buf);
string_map_add(map, "name", "gazami");
string_map_val(map, "name", buf);
printf("name = %s\n", buf);
puts("");
string_map_print_all(map);
string_map_free(map);
}
//---------------------------------------------------------------------
void file_functions(){
int res, i;
size_t size;
char* filename = "/usr/local/test/imsi.txt";
char buf[1024];
puts("\n** file_functions() **");
// Check file with file_exists and file_size.
res = file_exists("./edgelib.h");
assert(res == 1);
size = file_size("./edgelib.h");
printf("get_file_size(\"./edgelib.h\") = %ul\n", size);
// Parsing filename.
puts("");
printf("filename: %s\n", filename);
file_dirname(filename, buf);
printf("file_dirname: %s\n", buf);
file_basename(filename, buf);
printf("file_basename: %s\n", buf);
file_extension(filename, buf);
printf("file_extenstion: %s\n", buf);
// Read lines from file.
puts("");
StringList* list = read_text_file2("./edgelib.h", 0);
printf("number of lines: %d\n", list->length);
for(i = 0; i < list->length && i < 5; i++){
trim(list->arr[i], buf);
printf("%d: %s\n", i, buf);
}
string_list_free(list);
}
//---------------------------------------------------------------------
void time_functions(){
char buf[1024];
puts("\n** time_functions() **");
str_ftime("%Y-%m-%d %H:%M:%S", buf, 1024);
printf("str_ftime: %s\n", buf);
}
//---------------------------------------------------------------------
void misc_functions(){
char buf[1024 * 8];
puts("\n** misc_functions() **");
exbin("ls -la", buf, 1024 * 8);
puts("ls -la:");
puts(buf);
}
//---------------------------------------------------------------------
void test_bsearch(){
int i;
StringList* list;
puts("\n** test_bsearch() **");
list = string_list_new();
string_list_add(list, "1");
string_list_add(list, "9");
string_list_add(list, "dd");
string_list_add(list, "2");
string_list_add(list, "PP");
string_list_add(list, "kk");
string_list_add(list, "6");
string_list_add(list, "pp");
string_list_add(list, "4");
string_list_add(list, "6");
string_list_add(list, "7");
string_list_sort(list);
string_list_print_all(list);
if(string_list_find(list, "pp")){
puts("Found!");
}
else{
puts("not found!");
}
string_list_clear(list);
string_list_add(list, "1");
string_list_add(list, "9");
string_list_add(list, "dd");
string_list_print_all(list);
string_list_free(list);
}
//---------------------------------------------------------------------
void test_string_list_map_resize(){
int i;
StringList* list;
StringMap* map;
char buf[20];
puts("\n** test_string_list_map_resize() **");
list = string_list_new();
map = string_map_new();
printf("list->length = %d, list->_size = %d\n", list->length, list->_size);
printf("map->length = %d, map->_size = %d\n", map->list->length, map->list->_size);
for(i = 0; i < 1200; i++){
sprintf(buf, "%d", i);
string_list_add(list, buf);
string_map_add(map, buf, "1");
}
string_list_print_all(list);
printf("list->length = %d, list->_size = %d\n", list->length, list->_size);
printf("map->length = %d, map->_size = %d\n", map->list->length, map->list->_size);
printf("map->length = %d, map->_size = %d\n", map->list->length, map->list->_size);
printf("map->length = %d, map->_size = %d\n", map->list->length, map->list->_size);
printf("map->length = %d, map->_size = %d\n", map->list->length, map->list->_size);
string_list_free(list);
string_map_free(map);
}
//---------------------------------------------------------------------
void test_string_list_shift(){
StringList* list;
char* s;
puts("\n** test_string_list_map_resize() **");
list = string_list_new();
string_list_add(list, "1");
string_list_add(list, "9");
string_list_add(list, "dd");
string_list_add(list, "2");
string_list_add(list, "PP");
s = string_list_shift(list);
puts(s);
s = string_list_shift(list);
puts(s);
puts("");
string_list_print_all(list);
string_list_free(list);
}
//---------------------------------------------------------------------
void print_all_user(VoidList* list){
int i;
VoidPair* vp;
User* u;
char* kw;
for(i = 0; i < list->length; i++){
vp = (VoidPair*)list->arr[i];
kw = vp->kw;
u = (User*)vp->val;
printf("kw = %s, u->name = %s, u->age = %d, u->job = %s\n"
, kw, u->name, u->age, u->job);
}
}
//---------------------------------------------------------------------
void free_all_user(VoidList* list){
int i;
VoidPair* vp;
User* u;
char* kw;
for(i = 0; i < list->length; i++){
if(!list->arr[i]){
continue;
}
vp = (VoidPair*)list->arr[i];
u = (User*)vp->val;
user_free(u);
}
}
//---------------------------------------------------------------------
void print_user_list(VoidList* list){
int i;
User* u;
char* kw;
for(i = 0; i < list->length; i++){
u = (User*)list->arr[i];
printf("%d, u->name = %s, u->age = %d, u->job = %s\n"
, i, u->name, u->age, u->job);
}
printf("list->length = %d, list->_size = %d\n", list->length, list->_size);
}
//---------------------------------------------------------------------
void user_free_void(void* v){
User* u = (User*)v;
if(!u){
return;
}
if(u->name){
free(u->name);
u->name = NULL;
}
if(u->job){
free(u->job);
u->job = NULL;
}
free(u);
}
//---------------------------------------------------------------------
void test_void_list(){
puts("\n** test_void_list() **");
VoidList* list = void_list_new(user_free_void);
void_list_add(list, user_new("xabq", 31, "developer"));
void_list_add(list, user_new("xgbq", 33, "developer"));
void_list_add(list, user_new("xakwxd1", 23, "developer"));
void_list_add(list, user_new("gbq", 53, "clerk"));
void_list_add(list, user_new("bbq", 37, "developer"));
void_list_add(list, user_new("123abq", 31, "developer"));
void_list_add(list, user_new("gbq", 33, "developer"));
void_list_add(list, user_new("bdbq", 37, "developer"));
void_list_add(list, user_new("kxd1", 23, "developer"));
void_list_add(list, user_new("gbq", 33, "developer"));
void_list_add(list, user_new("bdbq", 37, "developer"));
void_list_add(list, user_new("abq", 31, "developer"));
void_list_add(list, user_new("gbq", 33, "developer"));
void_list_add(list, user_new("akwxd1", 23, "developer"));
void_list_add(list, user_new("gbq", 53, "clerk"));
void_list_sort(list, user_cmp);
print_user_list(list);
void_list_free(list);
}
//---------------------------------------------------------------------
void test_void_map(){
puts("\n** test_void_map() **");
VoidMap* map = void_map_new(user_free_void);
void_map_add(map, "bbq", user_new("bbq", 37, "developer"));
void_map_add(map, "kxd1", user_new("kxd1", 23, "developer"));
void_map_add(map, "abq", user_new("abq", 31, "developer"));
void_map_add(map, "gbq", user_new("gbq", 33, "developer"));
void_map_add(map, "gbq", user_new("bbq", 37, "developer"));
void_map_add(map, "gbq", user_new("gbq", 53, "clerk"));
void_map_add(map, "abq", user_new("gbq", 53, "clerk"));
print_all_user(map->list);
User* temp = (User*)void_map_val(map, "bbq");
printf("name = %s, age = %d\n", temp->name, temp->age);
puts("\nPrint kw_list of a void map.");
int i = 0;
for(i = 0; i < map->kw_list->length; i++){
puts(map->kw_list->arr[i]);
}
void_map_free(map);
}
//---------------------------------------------------------------------
void read_conf_file(){
puts("\n** read_conf_file() **");
StringList* list = read_text_file2("proxy.cfg", 0);
int i;
char kw[255], val[255];
StringList* kv_list;
for(i = 0; i < list->length; i++){
kv_list = split(list->arr[i], "=");
if(kv_list->length != 2){
string_list_free(kv_list);
continue;
}
trim(kv_list->arr[0], kw);
trim(kv_list->arr[1], val);
string_list_free(kv_list);
printf("%s = %s\n", kw, val);
}
string_list_free(list);
}
//---------------------------------------------------------------------
void test_split_by_space(){
puts("\n** split_by_space() **");
char* line = "123 456 kkk 454 ==--";
StringList* list = split_by_space(line);
string_list_print_all(list);
string_list_free(list);
}
//---------------------------------------------------------------------
int main(int argc, char *argv[]){
string_functions();
string_list_functions();
file_functions();
time_functions();
misc_functions();
string_map_functions();
test_bsearch();
test_string_list_map_resize();
test_string_list_shift();
test_void_list();
test_void_map();
read_conf_file();
test_split_by_space();
return 0;
}
|
|
|
|
|