@@ -2644,123 +2644,6 @@ static void test_session_ordered(void)
26442644 instrumented_allocator_reset (& alloc_payload );
26452645}
26462646
2647- // --------------------------------------------- FRAGMENT ---------------------------------------------
2648-
2649- static void test_udpard_fragment_seek (void )
2650- {
2651- instrumented_allocator_t alloc_frag = { 0 };
2652- instrumented_allocator_new (& alloc_frag );
2653- const udpard_mem_resource_t mem_frag = instrumented_allocator_make_resource (& alloc_frag );
2654-
2655- instrumented_allocator_t alloc_payload = { 0 };
2656- instrumented_allocator_new (& alloc_payload );
2657- const udpard_mem_resource_t mem_payload = instrumented_allocator_make_resource (& alloc_payload );
2658- const udpard_mem_deleter_t del_payload = instrumented_allocator_make_deleter (& alloc_payload );
2659-
2660- // Build a fragment tree with multiple fragments with gaps between them.
2661- // Using make_frame_base to control exact sizes (no null terminators).
2662- // Fragments at offsets: 0-3 (3 bytes), 5-8 (3 bytes), 10-14 (4 bytes)
2663- udpard_tree_t * root = NULL ;
2664- size_t cov = 0 ;
2665-
2666- // Fragment 1: offset 0, size 3
2667- rx_fragment_tree_update (& root , mem_frag , del_payload , make_frame_base (mem_payload , 0 , 3 , "abc" ), 14 , 14 , & cov );
2668- TEST_ASSERT_NOT_NULL (root );
2669- TEST_ASSERT_EQUAL_size_t (3 , cov ); // Coverage is only the contiguous prefix from offset 0.
2670-
2671- // Fragment 2: offset 5, size 3
2672- rx_fragment_tree_update (& root , mem_frag , del_payload , make_frame_base (mem_payload , 5 , 3 , "def" ), 14 , 14 , & cov );
2673- TEST_ASSERT_EQUAL_size_t (3 , cov ); // Still 3, gap at [3-5).
2674-
2675- // Fragment 3: offset 10, size 4
2676- rx_fragment_tree_update (& root , mem_frag , del_payload , make_frame_base (mem_payload , 10 , 4 , "ghij" ), 14 , 14 , & cov );
2677-
2678- TEST_ASSERT_EQUAL (3 , tree_count (root ));
2679- TEST_ASSERT_EQUAL_size_t (3 , cov ); // Still 3, gaps prevent full coverage.
2680-
2681- // Get references to the fragments for testing.
2682- udpard_fragment_t * frag0 = fragment_at (root , 0 );
2683- udpard_fragment_t * frag1 = fragment_at (root , 1 );
2684- udpard_fragment_t * frag2 = fragment_at (root , 2 );
2685- TEST_ASSERT_NOT_NULL (frag0 );
2686- TEST_ASSERT_NOT_NULL (frag1 );
2687- TEST_ASSERT_NOT_NULL (frag2 );
2688-
2689- // Test seeking to offset 0 (should return first fragment).
2690- TEST_ASSERT_EQUAL_PTR (frag0 , udpard_fragment_seek (frag0 , 0 ));
2691- TEST_ASSERT_EQUAL_PTR (frag0 , udpard_fragment_seek (frag1 , 0 ));
2692- TEST_ASSERT_EQUAL_PTR (frag0 , udpard_fragment_seek (frag2 , 0 ));
2693-
2694- // Test seeking within first fragment [0-3).
2695- TEST_ASSERT_EQUAL_PTR (frag0 , udpard_fragment_seek (frag0 , 0 ));
2696- TEST_ASSERT_EQUAL_PTR (frag0 , udpard_fragment_seek (frag0 , 1 ));
2697- TEST_ASSERT_EQUAL_PTR (frag0 , udpard_fragment_seek (frag0 , 2 ));
2698-
2699- // Test seeking in gap [3-5) - should return NULL.
2700- TEST_ASSERT_NULL (udpard_fragment_seek (frag0 , 3 ));
2701- TEST_ASSERT_NULL (udpard_fragment_seek (frag1 , 4 ));
2702-
2703- // Test seeking to start of second fragment [5-8).
2704- TEST_ASSERT_EQUAL_PTR (frag1 , udpard_fragment_seek (frag0 , 5 ));
2705- TEST_ASSERT_EQUAL_PTR (frag1 , udpard_fragment_seek (frag1 , 5 ));
2706- TEST_ASSERT_EQUAL_PTR (frag1 , udpard_fragment_seek (frag2 , 5 ));
2707-
2708- // Test seeking within second fragment.
2709- TEST_ASSERT_EQUAL_PTR (frag1 , udpard_fragment_seek (frag0 , 6 ));
2710- TEST_ASSERT_EQUAL_PTR (frag1 , udpard_fragment_seek (frag1 , 7 ));
2711-
2712- // Test seeking in gap [8-10) - should return NULL.
2713- TEST_ASSERT_NULL (udpard_fragment_seek (frag0 , 8 ));
2714- TEST_ASSERT_NULL (udpard_fragment_seek (frag1 , 9 ));
2715-
2716- // Test seeking to start of third fragment [10-14).
2717- TEST_ASSERT_EQUAL_PTR (frag2 , udpard_fragment_seek (frag0 , 10 ));
2718- TEST_ASSERT_EQUAL_PTR (frag2 , udpard_fragment_seek (frag1 , 10 ));
2719- TEST_ASSERT_EQUAL_PTR (frag2 , udpard_fragment_seek (frag2 , 10 ));
2720-
2721- // Test seeking within third fragment.
2722- TEST_ASSERT_EQUAL_PTR (frag2 , udpard_fragment_seek (frag0 , 11 ));
2723- TEST_ASSERT_EQUAL_PTR (frag2 , udpard_fragment_seek (frag1 , 12 ));
2724- TEST_ASSERT_EQUAL_PTR (frag2 , udpard_fragment_seek (frag2 , 13 ));
2725-
2726- // Test seeking beyond payload (should return NULL).
2727- TEST_ASSERT_NULL (udpard_fragment_seek (frag0 , 14 ));
2728- TEST_ASSERT_NULL (udpard_fragment_seek (frag1 , 14 ));
2729- TEST_ASSERT_NULL (udpard_fragment_seek (frag2 , 14 ));
2730- TEST_ASSERT_NULL (udpard_fragment_seek (frag0 , 100 ));
2731-
2732- // Cleanup.
2733- udpard_fragment_free_all ((udpard_fragment_t * )root , mem_frag );
2734- TEST_ASSERT_EQUAL_size_t (0 , alloc_frag .allocated_fragments );
2735- TEST_ASSERT_EQUAL_size_t (0 , alloc_payload .allocated_fragments );
2736-
2737- instrumented_allocator_reset (& alloc_frag );
2738- instrumented_allocator_reset (& alloc_payload );
2739-
2740- // Test with single fragment.
2741- root = NULL ;
2742- cov = 0 ;
2743- rx_fragment_tree_update (& root , mem_frag , del_payload , make_frame_base (mem_payload , 0 , 5 , "hello" ), 5 , 5 , & cov );
2744- TEST_ASSERT_NOT_NULL (root );
2745-
2746- udpard_fragment_t * single = fragment_at (root , 0 );
2747- TEST_ASSERT_NOT_NULL (single );
2748-
2749- // Seek within single fragment.
2750- TEST_ASSERT_EQUAL_PTR (single , udpard_fragment_seek (single , 0 ));
2751- TEST_ASSERT_EQUAL_PTR (single , udpard_fragment_seek (single , 1 ));
2752- TEST_ASSERT_EQUAL_PTR (single , udpard_fragment_seek (single , 2 ));
2753- TEST_ASSERT_EQUAL_PTR (single , udpard_fragment_seek (single , 4 ));
2754-
2755- // Seek beyond single fragment.
2756- TEST_ASSERT_NULL (udpard_fragment_seek (single , 5 ));
2757-
2758- // Cleanup.
2759- udpard_fragment_free_all ((udpard_fragment_t * )root , mem_frag );
2760- TEST_ASSERT_EQUAL_size_t (0 , alloc_frag .allocated_fragments );
2761- TEST_ASSERT_EQUAL_size_t (0 , alloc_payload .allocated_fragments );
2762- }
2763-
27642647void setUp (void ) {}
27652648
27662649void tearDown (void ) {}
@@ -2781,7 +2664,5 @@ int main(void)
27812664
27822665 RUN_TEST (test_session_ordered );
27832666
2784- RUN_TEST (test_udpard_fragment_seek );
2785-
27862667 return UNITY_END ();
27872668}
0 commit comments