268{
269 const size_t RUNTIME_COLLECTION_SIZE = 50;
272 Task* runtime_task = NULL;
273
274 system("cat ./misc/logo.txt");
275
276 if (runtime_task_collection == NULL)
277 {
278 printf("Runtime test error: failed to create task collection\n");
279 return;
280 }
281 while (1)
282 {
283 char class_name[1024];
284 char task_content[1024];
285 char yn[16];
286
287 printf("Enter todo class/category: ");
288 fgets(class_name, sizeof(class_name), stdin);
289 if ( strlen(class_name) > 0 && (class_name[ strlen(class_name) - 1] == '\n') )
290 {
291 class_name[ strlen(class_name) - 1 ] = '\0';
292 }
293
294 if ( strcmp(class_name, "quit") == 0 ) {
295 return;
296 }
297
298 printf("Enter description: ");
299 fgets(task_content, sizeof(task_content), stdin);
300 if ( strlen(task_content) > 0 && (task_content[ strlen(task_content) - 1] == '\n') )
301 {
302 task_content[ strlen(task_content) - 1 ] = '\0';
303 }
304
305 printf("---- Summary ----\nclass: '%s'\ncontent:'%s'\n---------------\nContinue? (y/n) ", class_name, task_content);
306 fgets(yn, sizeof(yn), stdin);
307 if ( strlen(yn) > 0 && (yn[ strlen(yn) - 1] == '\n') )
308 {
309 yn[ strlen(yn) - 1 ] = '\0';
310 }
311 if ( strcmp(&yn[0], "y") != 0 )
312 {
313 continue;
314 }
315
316 system("clear");
317
318 runtime_task =
create_task(class_name, task_content);
319 if (runtime_task == NULL)
320 {
321 printf("Runtime test error: failed to create task\n");
322 return;
323 }
324
325 runtime_task_class =
get_task_class(runtime_task_collection, class_name);
326 if (runtime_task_class == NULL)
327 {
328 printf("Class '%s' does not exist. Creating...\n", class_name);
330 runtime_task_class =
get_task_class(runtime_task_collection, class_name);
331 add_task(runtime_task_class, runtime_task);
332 printf("Appended task to '%s'\n\n", class_name);
333 } else {
334 if (
get_task(runtime_task_class, task_content) != NULL )
335 {
336 printf("Runtime error: task already exists in '%s'\n", class_name);
337 continue;
338 }
339 printf("Appending task to '%s'...\n", class_name);
340 add_task(runtime_task_class, runtime_task);
341 printf("Appended task to '%s'\n\n", class_name);
342 }
343 printf("Enter category name 'quit' to exit runtime test\n");
344 system("sleep 4");
345 system("clear");
346 }
347
348 return;
349}
A task class containing other tasks.
A task collection containing other classes.
TaskClass * get_task_class(TaskCollection *task_collection, const char *key)
Gets a task class by its class name from a task collection.
void add_task_class(TaskCollection *task_collection, TaskClass *task_class)
Adds a task class to a task collection.
TaskCollection * create_task_collection(size_t collection_size)
Creates a task collection of known size.
Task * create_task(char *class_of_task, char *task_content)
Creates a task of known class and content.
Task * get_task(TaskClass *task_class, const char *key)
Finds a task in a task class by its content.
TaskClass * create_task_class(char *class_name, size_t class_size)
Creates a task class of a known class and size.
void add_task(TaskClass *task_class, Task *new_task)
Adds a task to a task class.