@@ -307,6 +307,120 @@ FOSSIL_TEST_CASE(c_test_jellyfish_detect_conflict) {
307307 ASSUME_ITS_TRUE (no_conflict == 0 );
308308}
309309
310+ FOSSIL_TEST_CASE (c_test_parse_jellyfish_file_valid ) {
311+ const char * test_file = "valid.jellyfish" ;
312+
313+ FILE * f = fopen (test_file , "w" );
314+ fprintf (f ,
315+ "{\n"
316+ " \"signature\": \"JFS1\",\n"
317+ " \"blocks\": [\n"
318+ " {\n"
319+ " \"input\": \"apple\",\n"
320+ " \"output\": \"fruit\",\n"
321+ " \"timestamp\": 12345678\n"
322+ " }\n"
323+ " ]\n"
324+ "}\n"
325+ );
326+ fclose (f );
327+
328+ fossil_jellyfish_mindset out [4 ] = {0 };
329+ int count = fossil_jellyfish_parse_jellyfish_file (test_file , out , 4 );
330+
331+ ASSUME_ITS_EQUAL_SIZE (count , 1 );
332+ ASSUME_ITS_EQUAL_CSTR (out [0 ].chain .memory [0 ].input , "apple" );
333+ ASSUME_ITS_EQUAL_CSTR (out [0 ].chain .memory [0 ].output , "fruit" );
334+
335+ remove (test_file );
336+ }
337+
338+ FOSSIL_TEST_CASE (c_test_parse_jellyfish_file_valid ) {
339+ const char * test_file = "valid.jellyfish" ;
340+
341+ FILE * f = fopen (test_file , "w" );
342+ fprintf (f ,
343+ "{\n"
344+ " \"signature\": \"JFS1\",\n"
345+ " \"blocks\": [\n"
346+ " {\n"
347+ " \"input\": \"apple\",\n"
348+ " \"output\": \"fruit\",\n"
349+ " \"timestamp\": 12345678\n"
350+ " }\n"
351+ " ]\n"
352+ "}\n"
353+ );
354+ fclose (f );
355+
356+ fossil_jellyfish_mindset out [4 ] = {0 };
357+ int count = fossil_jellyfish_parse_jellyfish_file (test_file , out , 4 );
358+
359+ ASSUME_ITS_EQUAL_SIZE (count , 1 );
360+ ASSUME_ITS_EQUAL_CSTR (out [0 ].chain .memory [0 ].input , "apple" );
361+ ASSUME_ITS_EQUAL_CSTR (out [0 ].chain .memory [0 ].output , "fruit" );
362+
363+ remove (test_file );
364+ }
365+
366+ FOSSIL_TEST_CASE (c_test_load_mindset_file_valid ) {
367+ const char * model_file = "test_model.fish" ;
368+ fossil_jellyfish_chain chain ;
369+ fossil_jellyfish_init (& chain );
370+ fossil_jellyfish_learn (& chain , "sun" , "star" );
371+ fossil_jellyfish_save (& chain , model_file );
372+
373+ const char * jelly_file = "test_valid.jellyfish" ;
374+ FILE * f = fopen (jelly_file , "w" );
375+ fprintf (f ,
376+ "{\n"
377+ " \"signature\": \"JFS1\",\n"
378+ " \"blocks\": [\n"
379+ " {\n"
380+ " \"input\": \"%s\",\n"
381+ " \"output\": \"space\",\n"
382+ " \"timestamp\": 12345678\n"
383+ " }\n"
384+ " ]\n"
385+ "}\n" , model_file );
386+ fclose (f );
387+
388+ fossil_jellyfish_mind mind ;
389+ memset (& mind , 0 , sizeof (mind ));
390+ int ok = fossil_jellyfish_load_mindset_file (jelly_file , & mind );
391+
392+ ASSUME_ITS_TRUE (ok == 1 );
393+ ASSUME_ITS_EQUAL_SIZE (mind .model_count , 1 );
394+ ASSUME_ITS_EQUAL_CSTR (mind .models [0 ].memory [0 ].input , "sun" );
395+
396+ remove (jelly_file );
397+ remove (model_file );
398+ }
399+
400+ FOSSIL_TEST_CASE (c_test_load_mindset_file_missing_model ) {
401+ const char * jelly_file = "bad_model_ref.jellyfish" ;
402+ FILE * f = fopen (jelly_file , "w" );
403+ fprintf (f ,
404+ "{\n"
405+ " \"signature\": \"JFS1\",\n"
406+ " \"blocks\": [\n"
407+ " {\n"
408+ " \"input\": \"missing.fish\",\n"
409+ " \"output\": \"logic\",\n"
410+ " \"timestamp\": 0\n"
411+ " }\n"
412+ " ]\n"
413+ "}\n" );
414+ fclose (f );
415+
416+ fossil_jellyfish_mind mind ;
417+ memset (& mind , 0 , sizeof (mind ));
418+ int ok = fossil_jellyfish_load_mindset_file (jelly_file , & mind );
419+ ASSUME_ITS_TRUE (ok == 0 );
420+
421+ remove (jelly_file );
422+ }
423+
310424// * * * * * * * * * * * * * * * * * * * * * * * *
311425// * Fossil Logic Test Pool
312426// * * * * * * * * * * * * * * * * * * * * * * * *
@@ -329,5 +443,13 @@ FOSSIL_TEST_GROUP(c_jellyfish_tests) {
329443 FOSSIL_TEST_ADD (c_jellyfish_fixture , c_test_jellyfish_best_memory );
330444 FOSSIL_TEST_ADD (c_jellyfish_fixture , c_test_jellyfish_detect_conflict );
331445
446+ FOSSIL_TEST_ADD (c_jellyfish_fixture , c_test_parse_jellyfish_file_valid );
447+ FOSSIL_TEST_ADD (c_jellyfish_fixture , c_test_parse_jellyfish_file_invalid_path );
448+ FOSSIL_TEST_ADD (c_jellyfish_fixture , c_test_validate_mindset_valid );
449+ FOSSIL_TEST_ADD (c_jellyfish_fixture , c_test_validate_mindset_empty );
450+ FOSSIL_TEST_ADD (c_jellyfish_fixture , c_test_load_mindset_file_valid );
451+ FOSSIL_TEST_ADD (c_jellyfish_fixture , c_test_load_mindset_file_missing_model );
452+
453+
332454 FOSSIL_TEST_REGISTER (c_jellyfish_fixture );
333455} // end of tests
0 commit comments