Skip to content

Commit 7e1d4e1

Browse files
Update test_jellyfish.c
1 parent 8f0a58b commit 7e1d4e1

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed

code/tests/cases/test_jellyfish.c

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)