3#include <gwenhywfar/buffer.h>
4#include <gwenhywfar/base64.h>
5#include <gwenhywfar/debug.h>
6#include <gwenhywfar/padd.h>
7#include <gwenhywfar/cgui.h>
8#include <gwenhywfar/directory.h>
9#include <gwenhywfar/list.h>
10#include <gwenhywfar/pathmanager.h>
11#include <gwenhywfar/gwendate.h>
12#include <gwenhywfar/syncio.h>
13#include <gwenhywfar/json.h>
14#include <gwenhywfar/json_read.h>
15#include <gwenhywfar/json_dump.h>
23 const char *testString=
"01234567890123456789";
31 fprintf(stderr,
"Check 1 ...");
38 fprintf(stderr,
"FAILED: Could not encode.\n");
46 fprintf(stderr,
"FAILED: Could not decode.\n");
51 len=strlen(testString);
54 fprintf(stderr,
"Data differs in size\n");
58 for (i=0; i<len; i++) {
60 fprintf(stderr,
"Buffer1:\n%s\n", testString);
61 fprintf(stderr,
"Buffer2:\n");
64 fprintf(stderr,
"Differ at %d (%04x)\n", i, i);
70 fprintf(stderr,
"Data differs in content\n");
74 fprintf(stderr,
"PASSED.\n");
94 "This is a ShowBox test title",
95 "This is a ShowBox test.",
97 printf(
"GWEN_Gui_ShowBox: rv=%d\n", rv);
99 printf(
"GWEN_Gui_HideBox called.\n\n");
101 if (test_with_interaction) {
103 "This is a InputBox test title",
104 "Just enter something.",
108 printf(
"GWEN_Gui_InputBox: rv=%d, result=\"%s\"\n\n",
112 "Third test title, this time MessageBox",
113 "Just press the first or second button.",
114 "First button.",
"Second button",
NULL,
116 printf(
"GWEN_Gui_MessageBox: rv=%d; button=%s\n", rv,
117 (rv == 1 ?
"first" : (rv == 2 ?
"second" :
"unknown")));
137 printf(
"GWEN_Directory_GetTmpDirectory returns \"%s\" as tmp directory\n",
144 printf(
"Error on GWEN_Directory_Open(\"%s\"): errno=%d: %s\n",
145 tmpdir, errno, strerror(errno));
154#define ASSERT(expr) if (!(expr)) \
155 { printf("FAILED assertion in " __FILE__ ": %d: " #expr "\n", \
156 __LINE__); return -1; }
159 const char *e1 =
"one", *e2 =
"two", *e3 =
"three";
205 printf(
"check_list: All tests passed.\n");
211 const char *e1 =
"one", *e2 =
"two", *e3 =
"three";
248 printf(
"check_constlist: All tests passed.\n");
254 const char *pathname = u;
255 printf(
"Path %s contains: %s\n", pathname, s);
266 const char **p = paths;
267 for (; *p != 0; ++p) {
268 const char *pathname = *p;
281 const char *testString=
"01234567890123456789";
289 fprintf(stderr,
"Check 2 ...");
295 fprintf(stderr,
"FAILED: Could not padd.\n");
303 fprintf(stderr,
"FAILED: Could not unpadd.\n");
308 len=strlen(testString);
311 fprintf(stderr,
"Data differs in size\n");
315 for (i=0; i<len; i++) {
317 fprintf(stderr,
"Buffer1:\n%s\n", testString);
318 fprintf(stderr,
"Buffer2:\n");
321 fprintf(stderr,
"Differ at %d (%04x)\n", i, i);
327 fprintf(stderr,
"Data differs in content\n");
331 fprintf(stderr,
"PASSED.\n");
349 fprintf(stderr,
"Error: Date doesn't match: dt1: %s dt2: %s\n",
372 fprintf(stderr,
"Error reading JSON file (%d).\n", rv);
378 fprintf(stderr,
"Error parsing JSON file.\n");
381 fprintf(stdout,
"File successfully read.\n");
389 fprintf(stdout,
"Found element %s:\n", sSearch);
411 if (strcasecmp(cmd,
"check")==0) {
421 else if (strcasecmp(cmd,
"gui")==0) {
424 else if (strcasecmp(cmd,
"date")==0) {
427 else if (strcasecmp(cmd,
"json")==0) {
429 fprintf(stderr,
"args: FILENAME SEARCHPATH.\n");
435 fprintf(stderr,
"Unknown command \"%s\"\n", cmd);
int GWEN_Base64_Encode(const unsigned char *src, unsigned int size, GWEN_BUFFER *dst, unsigned int maxLineLength)
int GWEN_Base64_Decode(const unsigned char *src, unsigned int size, GWEN_BUFFER *dst)
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
void GWEN_Buffer_Reset(GWEN_BUFFER *bf)
void GWEN_Buffer_Dump(GWEN_BUFFER *bf, unsigned int insert)
int GWEN_Buffer_AppendBuffer(GWEN_BUFFER *bf, GWEN_BUFFER *sf)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
GWEN_GUI * GWEN_Gui_CGui_new(void)
struct GWEN_DIRECTORY GWEN_DIRECTORY
GWENHYWFAR_API int GWEN_Directory_Open(GWEN_DIRECTORY *d, const char *n)
GWENHYWFAR_API GWEN_DIRECTORY * GWEN_Directory_new(void)
GWENHYWFAR_API void GWEN_Directory_free(GWEN_DIRECTORY *d)
GWENHYWFAR_API int GWEN_Directory_Close(GWEN_DIRECTORY *d)
GWENHYWFAR_API int GWEN_Directory_GetTmpDirectory(char *buffer, unsigned int size)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
void GWEN_Gui_SetGui(GWEN_GUI *gui)
void GWEN_Gui_free(GWEN_GUI *gui)
void GWEN_Gui_AddFlags(GWEN_GUI *gui, uint32_t fl)
GWENHYWFAR_API int GWEN_Gui_InputBox(uint32_t flags, const char *title, const char *text, char *buffer, int minLen, int maxLen, uint32_t guiid)
GWENHYWFAR_API GWEN_DEPRECATED uint32_t GWEN_Gui_ShowBox(uint32_t flags, const char *title, const char *text, uint32_t guiid)
GWENHYWFAR_API int GWEN_Gui_MessageBox(uint32_t flags, const char *title, const char *text, const char *b1, const char *b2, const char *b3, uint32_t guiid)
#define GWEN_GUI_FLAGS_NONINTERACTIVE
GWENHYWFAR_API GWEN_DEPRECATED void GWEN_Gui_HideBox(uint32_t id)
const char * GWEN_Date_GetString(const GWEN_DATE *gd)
int GWEN_Date_Compare(const GWEN_DATE *gd1, const GWEN_DATE *gd0)
GWEN_DATE * GWEN_Date_CurrentDate(void)
time_t GWEN_Date_toLocalTime(const GWEN_DATE *gd)
GWEN_DATE * GWEN_Date_fromLocalTime(time_t t)
struct GWEN_DATE GWEN_DATE
#define GWEN_PM_SYSCONFDIR
#define GWEN_PM_PLUGINDIR
#define GWEN_PM_LOCALEDIR
GWEN_JSON_ELEM * GWEN_JsonElement_GetElementByPath(GWEN_JSON_ELEM *je, const char *path, uint32_t flags)
struct GWEN_JSON_ELEM GWEN_JSON_ELEM
void GWEN_JsonElement_DumpToBuffer(const GWEN_JSON_ELEM *jeRoot, int indent, GWEN_BUFFER *buf)
GWEN_JSON_ELEM * GWEN_JsonElement_fromString(const char *s)
struct GWEN_LIST GWEN_CONSTLIST
Doubly-linked list with const objects.
struct GWEN_LIST GWEN_LIST
Doubly-linked list.
struct GWEN_LIST_ITERATOR GWEN_LIST_ITERATOR
struct GWEN_LIST_ITERATOR GWEN_CONSTLIST_ITERATOR
int GWEN_Padd_PaddWithIso9796_2(GWEN_BUFFER *buf, int dstSize)
int GWEN_Padd_UnpaddWithIso9796_2(GWEN_BUFFER *buf)
GWEN_STRINGLIST * GWEN_PathManager_GetPaths(const char *destLib, const char *pathName)
const void * GWEN_ConstListIterator_Data(GWEN_CONSTLIST_ITERATOR *li)
void GWEN_ConstList_PushFront(GWEN_CONSTLIST *l, const void *p)
void GWEN_ConstList_Clear(GWEN_CONSTLIST *l)
void GWEN_ConstList_free(GWEN_CONSTLIST *l)
GWEN_LIST * GWEN_List_new(void)
const void * GWEN_ConstListIterator_Next(GWEN_CONSTLIST_ITERATOR *li)
void GWEN_ConstListIterator_free(GWEN_CONSTLIST_ITERATOR *li)
GWEN_CONSTLIST * GWEN_ConstList_new(void)
const void * GWEN_ConstListIterator_Previous(GWEN_CONSTLIST_ITERATOR *li)
GWEN_LIST_ITERATOR * GWEN_List_First(const GWEN_LIST *l)
const void * GWEN_ConstList_GetFront(const GWEN_CONSTLIST *l)
void GWEN_List_Clear(GWEN_LIST *l)
void GWEN_ListIterator_free(GWEN_LIST_ITERATOR *li)
GWEN_CONSTLIST_ITERATOR * GWEN_ConstList_First(const GWEN_CONSTLIST *l)
void * GWEN_List_GetFront(const GWEN_LIST *l)
void * GWEN_List_GetBack(const GWEN_LIST *l)
void GWEN_List_free(GWEN_LIST *l)
void * GWEN_ListIterator_Next(GWEN_LIST_ITERATOR *li)
void GWEN_ConstList_PopBack(GWEN_CONSTLIST *l)
void GWEN_List_Erase(GWEN_LIST *l, GWEN_LIST_ITERATOR *it)
void * GWEN_ListIterator_Previous(GWEN_LIST_ITERATOR *li)
void GWEN_List_PushFront(GWEN_LIST *l, void *p)
void GWEN_List_Remove(GWEN_LIST *l, const void *p)
void * GWEN_ListIterator_Data(GWEN_LIST_ITERATOR *li)
const void * GWEN_ConstList_GetBack(const GWEN_CONSTLIST *l)
unsigned int GWEN_List_GetSize(const GWEN_LIST *l)
unsigned int GWEN_ConstList_GetSize(const GWEN_CONSTLIST *l)
void GWEN_List_PopBack(GWEN_LIST *l)
void GWEN_ConstList_PushBack(GWEN_CONSTLIST *l, const void *p)
void GWEN_List_PushBack(GWEN_LIST *l, void *p)
unsigned int GWEN_StringList_Count(const GWEN_STRINGLIST *sl)
void * GWEN_StringList_ForEach(const GWEN_STRINGLIST *l, void *(*func)(const char *s, void *u), void *user_data)
struct GWEN_STRINGLISTSTRUCT GWEN_STRINGLIST
int GWEN_SyncIo_Helper_ReadFile(const char *fName, GWEN_BUFFER *dbuf)
int test_gui(GWEN_UNUSED int test_with_interaction)
int main(int argc, char **argv)
int test_json(const char *fname, const char *sSearch)
void * printfunc(const char *s, void *u)