Skip to content

Commit 2592f94

Browse files
Update test_jellyfish.c
1 parent afeacd4 commit 2592f94

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

code/tests/cases/test_jellyfish.c

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,88 @@ FOSSIL_TEST_CASE(c_test_load_mindset_file_missing_model) {
399399
remove(jelly_file);
400400
}
401401

402+
FOSSIL_TEST_CASE(c_test_load_mindset_multiple_models) {
403+
const char *model_a = "model_a.fish";
404+
const char *model_b = "model_b.fish";
405+
406+
fossil_jellyfish_chain a = {0}, b = {0};
407+
fossil_jellyfish_init(&a);
408+
fossil_jellyfish_init(&b);
409+
410+
fossil_jellyfish_learn(&a, "red", "color");
411+
fossil_jellyfish_learn(&b, "triangle", "shape");
412+
413+
fossil_jellyfish_save(&a, model_a);
414+
fossil_jellyfish_save(&b, model_b);
415+
416+
const char *jelly_file = "complex_mindset.jellyfish";
417+
FILE *f = fopen(jelly_file, "w");
418+
fprintf(f,
419+
"{\n"
420+
" \"signature\": \"JFS1\",\n"
421+
" \"blocks\": [\n"
422+
" { \"input\": \"%s\", \"output\": \"visual\", \"timestamp\": 1 },\n"
423+
" { \"input\": \"%s\", \"output\": \"geometry\", \"timestamp\": 2 }\n"
424+
" ]\n"
425+
"}\n", model_a, model_b);
426+
fclose(f);
427+
428+
fossil_jellyfish_mind mind = {0};
429+
int ok = fossil_jellyfish_load_mindset_file(jelly_file, &mind);
430+
431+
ASSUME_ITS_TRUE(ok == 1);
432+
ASSUME_ITS_EQUAL_SIZE(mind.model_count, 2);
433+
434+
ASSUME_ITS_EQUAL_CSTR(mind.models[0].memory[0].input, "red");
435+
ASSUME_ITS_EQUAL_CSTR(mind.models[0].memory[0].output, "color");
436+
437+
ASSUME_ITS_EQUAL_CSTR(mind.models[1].memory[0].input, "triangle");
438+
ASSUME_ITS_EQUAL_CSTR(mind.models[1].memory[0].output, "shape");
439+
440+
remove(model_a);
441+
remove(model_b);
442+
remove(jelly_file);
443+
}
444+
445+
FOSSIL_TEST_CASE(c_test_load_model_with_multiple_thoughts) {
446+
const char *model_file = "multi_thoughts.fish";
447+
448+
fossil_jellyfish_chain chain = {0};
449+
fossil_jellyfish_init(&chain);
450+
451+
fossil_jellyfish_learn(&chain, "day", "light");
452+
fossil_jellyfish_learn(&chain, "night", "dark");
453+
fossil_jellyfish_learn(&chain, "moon", "reflect");
454+
455+
fossil_jellyfish_save(&chain, model_file);
456+
457+
const char *jelly_file = "mind_multi_thoughts.jellyfish";
458+
FILE *f = fopen(jelly_file, "w");
459+
fprintf(f,
460+
"{\n"
461+
" \"signature\": \"JFS1\",\n"
462+
" \"blocks\": [\n"
463+
" { \"input\": \"%s\", \"output\": \"cycle\", \"timestamp\": 123 }\n"
464+
" ]\n"
465+
"}\n", model_file);
466+
fclose(f);
467+
468+
fossil_jellyfish_mind mind = {0};
469+
int ok = fossil_jellyfish_load_mindset_file(jelly_file, &mind);
470+
471+
ASSUME_ITS_TRUE(ok == 1);
472+
ASSUME_ITS_EQUAL_SIZE(mind.model_count, 1);
473+
474+
// Multiple thoughts
475+
ASSUME_ITS_EQUAL_SIZE(mind.models[0].size, 3);
476+
ASSUME_ITS_EQUAL_CSTR(mind.models[0].memory[0].input, "day");
477+
ASSUME_ITS_EQUAL_CSTR(mind.models[0].memory[1].input, "night");
478+
ASSUME_ITS_EQUAL_CSTR(mind.models[0].memory[2].input, "moon");
479+
480+
remove(model_file);
481+
remove(jelly_file);
482+
}
483+
402484
// * * * * * * * * * * * * * * * * * * * * * * * *
403485
// * Fossil Logic Test Pool
404486
// * * * * * * * * * * * * * * * * * * * * * * * *
@@ -424,6 +506,8 @@ FOSSIL_TEST_GROUP(c_jellyfish_tests) {
424506
FOSSIL_TEST_ADD(c_jellyfish_fixture, c_test_parse_jellyfish_file_valid);
425507
FOSSIL_TEST_ADD(c_jellyfish_fixture, c_test_load_mindset_file_valid);
426508
FOSSIL_TEST_ADD(c_jellyfish_fixture, c_test_load_mindset_file_missing_model);
509+
FOSSIL_TEST_ADD(c_jellyfish_fixture, c_test_load_mindset_multiple_models);
510+
FOSSIL_TEST_ADD(c_jellyfish_fixture, c_test_load_model_with_multiple_thoughts);
427511

428512

429513
FOSSIL_TEST_REGISTER(c_jellyfish_fixture);

0 commit comments

Comments
 (0)