tests/test_properties.c

changeset 1124
fcd5d86c472f
parent 1031
8a90552bba29
equal deleted inserted replaced
1123:2b83302d595a 1124:fcd5d86c472f
517 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); 517 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
518 } 518 }
519 cx_testing_allocator_destroy(&talloc); 519 cx_testing_allocator_destroy(&talloc);
520 } 520 }
521 521
522 CX_TEST(test_properties_load_incomplete) {
523 CxTestingAllocator talloc;
524 cx_testing_allocator_init(&talloc);
525 CxAllocator *alloc = &talloc.base;
526 CX_TEST_DO {
527 char buffer[512];
528 CxProperties prop;
529 cxPropertiesInitDefault(&prop);
530 cxPropertiesUseStack(&prop, buffer, 512);
531
532 CxMap *map = cxHashMapCreateSimple(CX_STORE_POINTERS);
533 cxDefineAdvancedDestructor(map, cxFree, alloc);
534 CxPropertiesSink sink = cxPropertiesMapSink(map);
535 sink.data = alloc; // use the testing allocator
536 CxPropertiesSource src = cxPropertiesCstrSource("key1 = value1\nkey2 = value2\n\n#comment\n\nkey3");
537 CxPropertiesStatus status = cxPropertiesLoad(&prop, sink, src);
538
539 CX_TEST_ASSERT(status == CX_PROPERTIES_INCOMPLETE_DATA);
540 CX_TEST_ASSERT(cxMapSize(map) == 2);
541
542 char *v1 = cxMapGet(map, "key1");
543 char *v2 = cxMapGet(map, "key2");
544 char *v3 = cxMapGet(map, "key3");
545
546 CX_TEST_ASSERTM(v1, "value for key1 not found");
547 CX_TEST_ASSERTM(v2, "value for key2 not found");
548 CX_TEST_ASSERT(v3 == NULL);
549
550 CX_TEST_ASSERT(!strcmp(v1, "value1"));
551 CX_TEST_ASSERT(!strcmp(v2, "value2"));
552
553 // provide a source with the remaining data
554 src = cxPropertiesCstrSource(" = value3\n");
555 status = cxPropertiesLoad(&prop, sink, src);
556
557 CX_TEST_ASSERT(status == CX_PROPERTIES_NO_ERROR);
558 CX_TEST_ASSERT(cxMapSize(map) == 3);
559
560 v1 = cxMapGet(map, "key1");
561 v2 = cxMapGet(map, "key2");
562 v3 = cxMapGet(map, "key3");
563
564 CX_TEST_ASSERTM(v1, "value for key1 not found");
565 CX_TEST_ASSERTM(v2, "value for key2 not found");
566 CX_TEST_ASSERTM(v3, "value for key3 not found");
567
568 CX_TEST_ASSERT(!strcmp(v1, "value1"));
569 CX_TEST_ASSERT(!strcmp(v2, "value2"));
570 CX_TEST_ASSERT(!strcmp(v3, "value3"));
571
572 cxMapFree(map);
573 cxPropertiesDestroy(&prop);
574
575 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
576 }
577 cx_testing_allocator_destroy(&talloc);
578 }
579
522 CX_TEST(test_properties_multiple_fill) { 580 CX_TEST(test_properties_multiple_fill) {
523 const char *props1 = "key1 = value1\n"; 581 const char *props1 = "key1 = value1\n";
524 const char *props2 = "key2 = value2\n"; 582 const char *props2 = "key2 = value2\n";
525 const char *props3 = "key3 = value3\n"; 583 const char *props3 = "key3 = value3\n";
526 584
626 cx_test_register(suite, test_properties_next_multi); 684 cx_test_register(suite, test_properties_next_multi);
627 cx_test_register(suite, test_properties_next_part); 685 cx_test_register(suite, test_properties_next_part);
628 cx_test_register(suite, test_properties_next_long_lines); 686 cx_test_register(suite, test_properties_next_long_lines);
629 cx_test_register(suite, test_properties_load_string_to_map); 687 cx_test_register(suite, test_properties_load_string_to_map);
630 cx_test_register(suite, test_properties_load_file_to_map); 688 cx_test_register(suite, test_properties_load_file_to_map);
689 cx_test_register(suite, test_properties_load_incomplete);
631 cx_test_register(suite, test_properties_multiple_fill); 690 cx_test_register(suite, test_properties_multiple_fill);
632 cx_test_register(suite, test_properties_use_stack); 691 cx_test_register(suite, test_properties_use_stack);
633 cx_test_register(suite, test_properties_empty_key); 692 cx_test_register(suite, test_properties_empty_key);
634 693
635 return suite; 694 return suite;

mercurial