@@ -88,6 +88,62 @@ TEST(partition_api, test_partition_find_first)
8888 TEST_ASSERT_NOT_NULL (partition_data );
8989}
9090
91+ TEST (partition_api , test_partition_find_err )
92+ {
93+ esp_partition_iterator_t iter = NULL ;
94+ esp_err_t err = esp_partition_find_err (ESP_PARTITION_TYPE_DATA , ESP_PARTITION_SUBTYPE_ANY , "storage" , & iter );
95+ TEST_ESP_OK (err );
96+ TEST_ASSERT_NOT_NULL (iter );
97+
98+ const esp_partition_t * part = esp_partition_get (iter );
99+ TEST_ASSERT_NOT_NULL (part );
100+
101+ esp_partition_iterator_release (iter );
102+
103+ // Test error cases
104+ err = esp_partition_find_err (ESP_PARTITION_TYPE_DATA , ESP_PARTITION_SUBTYPE_ANY , "nonexistent" , & iter );
105+ TEST_ASSERT_EQUAL (ESP_ERR_NOT_FOUND , err );
106+ TEST_ASSERT_NULL (iter ); // But iterator should be NULL
107+
108+ // Test invalid argument
109+ err = esp_partition_find_err (ESP_PARTITION_TYPE_ANY , ESP_PARTITION_SUBTYPE_DATA_NVS , NULL , & iter );
110+ TEST_ASSERT_EQUAL (ESP_ERR_INVALID_ARG , err );
111+ TEST_ASSERT_NULL (iter ); // But iterator should be NULL
112+
113+ // Test NULL pointer
114+ err = esp_partition_find_err (ESP_PARTITION_TYPE_DATA , ESP_PARTITION_SUBTYPE_ANY , "storage" , NULL );
115+ TEST_ASSERT_EQUAL (ESP_ERR_INVALID_ARG , err );
116+ TEST_ASSERT_NULL (iter ); // But iterator should be NULL
117+ }
118+
119+ TEST (partition_api , test_partition_find_first_err )
120+ {
121+ const esp_partition_t * partition_app = NULL ;
122+ esp_err_t err = esp_partition_find_first_err (ESP_PARTITION_TYPE_APP , ESP_PARTITION_SUBTYPE_ANY , NULL , & partition_app );
123+ TEST_ESP_OK (err );
124+ TEST_ASSERT_NOT_NULL (partition_app );
125+
126+ const esp_partition_t * partition_data = NULL ;
127+ err = esp_partition_find_first_err (ESP_PARTITION_TYPE_DATA , ESP_PARTITION_SUBTYPE_ANY , "storage" , & partition_data );
128+ TEST_ESP_OK (err );
129+ TEST_ASSERT_NOT_NULL (partition_data );
130+
131+ // Test partition not found
132+ const esp_partition_t * partition_nonexistent = NULL ;
133+ err = esp_partition_find_first_err (ESP_PARTITION_TYPE_DATA , ESP_PARTITION_SUBTYPE_ANY , "nonexistent" , & partition_nonexistent );
134+ TEST_ASSERT_EQUAL (ESP_ERR_NOT_FOUND , err );
135+ TEST_ASSERT_NULL (partition_nonexistent ); // But partition should be NULL
136+
137+ // Test error cases
138+ err = esp_partition_find_first_err (ESP_PARTITION_TYPE_ANY , ESP_PARTITION_SUBTYPE_DATA_NVS , NULL , & partition_data );
139+ TEST_ASSERT_EQUAL (ESP_ERR_INVALID_ARG , err );
140+ TEST_ASSERT_NULL (partition_data ); // But partition should be NULL
141+
142+ // Test NULL pointer
143+ err = esp_partition_find_first_err (ESP_PARTITION_TYPE_DATA , ESP_PARTITION_SUBTYPE_ANY , "storage" , NULL );
144+ TEST_ASSERT_EQUAL (ESP_ERR_INVALID_ARG , err );
145+ }
146+
91147TEST (partition_api , test_partition_ops )
92148{
93149 const esp_partition_t * partition_data = esp_partition_find_first (ESP_PARTITION_TYPE_DATA , ESP_PARTITION_SUBTYPE_ANY , "storage" );
@@ -122,6 +178,59 @@ TEST(partition_api, test_partition_ops)
122178 TEST_ASSERT_NOT_NULL (verified_partition );
123179}
124180
181+ TEST (partition_api , test_partition_verify_err )
182+ {
183+ // Get a valid partition for testing
184+ const esp_partition_t * partition_data = esp_partition_find_first (ESP_PARTITION_TYPE_DATA , ESP_PARTITION_SUBTYPE_ANY , "storage" );
185+ TEST_ASSERT_NOT_NULL (partition_data );
186+
187+ const esp_partition_t * verified_partition = NULL ;
188+ esp_err_t err ;
189+
190+ // Test 1: Valid partition verification
191+ err = esp_partition_verify_err (partition_data , & verified_partition );
192+ TEST_ESP_OK (err );
193+ TEST_ASSERT_EQUAL_PTR (partition_data , verified_partition );
194+
195+ // Test 2: Both parameters NULL
196+ err = esp_partition_verify_err (NULL , NULL );
197+ TEST_ASSERT_EQUAL (ESP_ERR_INVALID_ARG , err );
198+
199+ // Test 3: Partition with wrong address should not match
200+ esp_partition_t partition_copy = * partition_data ;
201+ partition_copy .address = 0xFFFFFFFF ; // Invalid address
202+ verified_partition = NULL ;
203+ err = esp_partition_verify_err (& partition_copy , & verified_partition );
204+ TEST_ASSERT_EQUAL (ESP_ERR_NOT_FOUND , err );
205+ TEST_ASSERT_NULL (verified_partition );
206+
207+ // Test 4: Partition with wrong size should not match
208+ partition_copy = * partition_data ;
209+ partition_copy .size = 0xFFFFFFFF ; // Invalid size
210+ verified_partition = NULL ;
211+ err = esp_partition_verify_err (& partition_copy , & verified_partition );
212+ TEST_ASSERT_EQUAL (ESP_ERR_NOT_FOUND , err );
213+ TEST_ASSERT_NULL (verified_partition );
214+
215+ // Test 5: Partition with wrong type should not match
216+ partition_copy = * partition_data ;
217+ partition_copy .type = ESP_PARTITION_TYPE_APP ; // Wrong type
218+ verified_partition = NULL ;
219+ err = esp_partition_verify_err (& partition_copy , & verified_partition );
220+ TEST_ASSERT_EQUAL (ESP_ERR_NOT_FOUND , err );
221+ TEST_ASSERT_NULL (verified_partition );
222+
223+ // Test 6: Test with a partition that has empty label
224+ const esp_partition_t * app_partition = esp_partition_find_first (ESP_PARTITION_TYPE_APP , ESP_PARTITION_SUBTYPE_ANY , NULL );
225+ if (app_partition != NULL && strlen (app_partition -> label ) == 0 ) {
226+ verified_partition = NULL ;
227+ err = esp_partition_verify_err (app_partition , & verified_partition );
228+ TEST_ESP_OK (err );
229+ TEST_ASSERT_NOT_NULL (verified_partition );
230+ TEST_ASSERT_EQUAL_PTR (app_partition , verified_partition );
231+ }
232+ }
233+
125234TEST (partition_api , test_partition_mmap )
126235{
127236 const esp_partition_t * partition_data = esp_partition_find_first (ESP_PARTITION_TYPE_DATA , ESP_PARTITION_SUBTYPE_ANY , "storage" );
@@ -750,8 +859,11 @@ TEST_GROUP_RUNNER(partition_api)
750859 RUN_TEST_CASE (partition_api , test_partition_find_app );
751860 RUN_TEST_CASE (partition_api , test_partition_find_data );
752861 RUN_TEST_CASE (partition_api , test_partition_find_first );
862+ RUN_TEST_CASE (partition_api , test_partition_find_err );
863+ RUN_TEST_CASE (partition_api , test_partition_find_first_err );
753864 RUN_TEST_CASE (partition_api , test_partition_ops );
754865 RUN_TEST_CASE (partition_api , test_partition_mmap );
866+ RUN_TEST_CASE (partition_api , test_partition_verify_err );
755867 RUN_TEST_CASE (partition_api , test_partition_mmap_support_for_greater_than_4M );
756868 RUN_TEST_CASE (partition_api , test_partition_mmap_diff_size );
757869 RUN_TEST_CASE (partition_api , test_partition_mmap_reopen );
0 commit comments