1 /* Copyright (c) 2013, 2016, The Linux Foundation. All rights reserved. 2 * 3 * Redistribution and use in source and binary forms, with or without 4 * modification, are permitted provided that the following conditions are 5 * met: 6 * * Redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer. 8 * * Redistributions in binary form must reproduce the above 9 * copyright notice, this list of conditions and the following 10 * disclaimer in the documentation and/or other materials provided 11 * with the distribution. 12 * * Neither the name of The Linux Foundation nor the names of its 13 * contributors may be used to endorse or promote products derived 14 * from this software without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 26 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * 28 */ 29 30 // Camera dependencies 31 #include "mm_qcamera_app.h" 32 #include "mm_qcamera_dbg.h" 33 34 #define MM_QCAMERA_APP_UTEST_MAX_MAIN_LOOP 1 35 #define MM_QCAMERA_APP_UTEST_OUTER_LOOP 1 36 #define MM_QCAMERA_APP_UTEST_INNER_LOOP 1 37 #define MM_QCAM_APP_TEST_NUM 128 38 39 static mm_app_tc_t mm_app_tc[MM_QCAM_APP_TEST_NUM]; 40 41 int mm_app_tc_open_close(mm_camera_app_t *cam_app) 42 { 43 int rc = MM_CAMERA_OK; 44 int i; 45 mm_camera_test_obj_t test_obj; 46 47 printf("\n Verifying open/close cameras...\n"); 48 for (i = 0; i < cam_app->num_cameras; i++) { 49 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 50 rc = mm_app_open(cam_app, i, &test_obj); 51 if (rc != MM_CAMERA_OK) { 52 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 53 i, rc); 54 break; 55 } 56 sleep(1); 57 rc = mm_app_close(&test_obj); 58 if (rc != MM_CAMERA_OK) { 59 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 60 i, rc); 61 break; 62 } 63 } 64 if (rc == MM_CAMERA_OK) { 65 printf("\nPassed\n"); 66 } else { 67 printf("\nFailed\n"); 68 } 69 LOGD("END, rc = %d\n", rc); 70 return rc; 71 } 72 73 int mm_app_tc_start_stop_preview(mm_camera_app_t *cam_app) 74 { 75 int rc = MM_CAMERA_OK; 76 int i, j; 77 mm_camera_test_obj_t test_obj; 78 79 printf("\n Verifying start/stop preview...\n"); 80 for (i = 0; i < cam_app->num_cameras; i++) { 81 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 82 rc = mm_app_open(cam_app, i, &test_obj); 83 if (rc != MM_CAMERA_OK) { 84 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 85 i, rc); 86 break; 87 } 88 89 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 90 rc = mm_app_start_preview(&test_obj); 91 if (rc != MM_CAMERA_OK) { 92 LOGE(" mm_app_start_preview() cam_idx=%d, err=%d\n", 93 i, rc); 94 break; 95 } 96 sleep(1); 97 rc = mm_app_stop_preview(&test_obj); 98 if (rc != MM_CAMERA_OK) { 99 LOGE(" mm_app_stop_preview() cam_idx=%d, err=%d\n", 100 i, rc); 101 break; 102 } 103 } 104 105 rc |= mm_app_close(&test_obj); 106 if (rc != MM_CAMERA_OK) { 107 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 108 i, rc); 109 break; 110 } 111 } 112 if (rc == MM_CAMERA_OK) { 113 printf("\nPassed\n"); 114 } else { 115 printf("\nFailed\n"); 116 } 117 LOGD("END, rc = %d\n", rc); 118 return rc; 119 } 120 121 int mm_app_tc_start_stop_zsl(mm_camera_app_t *cam_app) 122 { 123 int rc = MM_CAMERA_OK; 124 int i, j; 125 mm_camera_test_obj_t test_obj; 126 127 printf("\n Verifying start/stop preview...\n"); 128 for (i = 0; i < cam_app->num_cameras; i++) { 129 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 130 rc = mm_app_open(cam_app, i, &test_obj); 131 if (rc != MM_CAMERA_OK) { 132 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 133 i, rc); 134 break; 135 } 136 137 for (j = 0; j < 1; j++) { 138 rc = mm_app_start_preview_zsl(&test_obj); 139 if (rc != MM_CAMERA_OK) { 140 LOGE(" mm_app_start_preview_zsl() cam_idx=%d, err=%d\n", 141 i, rc); 142 break; 143 } 144 sleep(1); 145 rc = mm_app_stop_preview_zsl(&test_obj); 146 if (rc != MM_CAMERA_OK) { 147 LOGE(" mm_app_stop_preview_zsl() cam_idx=%d, err=%d\n", 148 i, rc); 149 break; 150 } 151 } 152 153 rc = mm_app_close(&test_obj); 154 if (rc != MM_CAMERA_OK) { 155 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 156 i, rc); 157 break; 158 } 159 } 160 if (rc == MM_CAMERA_OK) { 161 printf("\nPassed\n"); 162 } else { 163 printf("\nFailed\n"); 164 } 165 LOGD("END, rc = %d\n", rc); 166 return rc; 167 } 168 169 int mm_app_tc_start_stop_video_preview(mm_camera_app_t *cam_app) 170 { 171 int rc = MM_CAMERA_OK; 172 int i, j; 173 mm_camera_test_obj_t test_obj; 174 mm_camera_lib_snapshot_params dim; 175 memset(&dim, 0, sizeof(mm_camera_lib_snapshot_params)); 176 177 printf("\n Verifying start/stop video preview...\n"); 178 for (i = 0; i < cam_app->num_cameras; i++) { 179 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 180 rc = mm_app_open(cam_app, i, &test_obj); 181 if (rc != MM_CAMERA_OK) { 182 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 183 i, rc); 184 break; 185 } 186 187 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 188 rc = mm_app_start_record_preview(&test_obj, &dim); 189 if (rc != MM_CAMERA_OK) { 190 LOGE("mm_app_start_record_preview() cam_idx=%d, err=%d\n", 191 i, rc); 192 break; 193 } 194 sleep(1); 195 rc = mm_app_stop_record_preview(&test_obj); 196 if (rc != MM_CAMERA_OK) { 197 LOGE("mm_app_stop_record_preview() cam_idx=%d, err=%d\n", 198 i, rc); 199 break; 200 } 201 } 202 203 rc = mm_app_close(&test_obj); 204 if (rc != MM_CAMERA_OK) { 205 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 206 i, rc); 207 break; 208 } 209 } 210 if (rc == MM_CAMERA_OK) { 211 printf("\nPassed\n"); 212 } else { 213 printf("\nFailed\n"); 214 } 215 LOGD("END, rc = %d\n", rc); 216 return rc; 217 } 218 219 int mm_app_tc_start_stop_video_record(mm_camera_app_t *cam_app) 220 { 221 int rc = MM_CAMERA_OK; 222 int i, j; 223 mm_camera_test_obj_t test_obj; 224 mm_camera_lib_snapshot_params dim; 225 memset(&dim, 0, sizeof(mm_camera_lib_snapshot_params)); 226 227 printf("\n Verifying start/stop recording...\n"); 228 for (i = 0; i < cam_app->num_cameras; i++) { 229 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 230 rc = mm_app_open(cam_app, i, &test_obj); 231 if (rc != MM_CAMERA_OK) { 232 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 233 i, rc); 234 break; 235 } 236 237 rc = mm_app_start_record_preview(&test_obj, &dim); 238 if (rc != MM_CAMERA_OK) { 239 LOGE("mm_app_start_record_preview() cam_idx=%d, err=%d\n", 240 i, rc); 241 mm_app_close(&test_obj); 242 break; 243 } 244 245 sleep(1); 246 247 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 248 rc = mm_app_start_record(&test_obj); 249 if (rc != MM_CAMERA_OK) { 250 LOGE("mm_app_start_record() cam_idx=%d, err=%d\n", 251 i, rc); 252 break; 253 } 254 255 sleep(1); 256 257 rc = mm_app_stop_record(&test_obj); 258 if (rc != MM_CAMERA_OK) { 259 LOGE("mm_app_stop_record() cam_idx=%d, err=%d\n", 260 i, rc); 261 break; 262 } 263 } 264 if (rc != MM_CAMERA_OK) { 265 LOGE("start/stop record cam_idx=%d, err=%d\n", 266 i, rc); 267 mm_app_stop_record_preview(&test_obj); 268 mm_app_close(&test_obj); 269 break; 270 } 271 272 rc = mm_app_stop_record_preview(&test_obj); 273 if (rc != MM_CAMERA_OK) { 274 LOGE("mm_app_stop_record_preview() cam_idx=%d, err=%d\n", 275 i, rc); 276 mm_app_close(&test_obj); 277 break; 278 } 279 280 rc = mm_app_close(&test_obj); 281 if (rc != MM_CAMERA_OK) { 282 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 283 i, rc); 284 break; 285 } 286 } 287 if (rc == MM_CAMERA_OK) { 288 printf("\nPassed\n"); 289 } else { 290 printf("\nFailed\n"); 291 } 292 LOGD("END, rc = %d\n", rc); 293 return rc; 294 } 295 296 int mm_app_tc_start_stop_live_snapshot(mm_camera_app_t *cam_app) 297 { 298 int rc = MM_CAMERA_OK; 299 int i, j; 300 mm_camera_test_obj_t test_obj; 301 mm_camera_lib_snapshot_params dim; 302 memset(&dim, 0, sizeof(mm_camera_lib_snapshot_params)); 303 304 printf("\n Verifying start/stop live snapshot...\n"); 305 for (i = 0; i < cam_app->num_cameras; i++) { 306 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 307 rc = mm_app_open(cam_app, i, &test_obj); 308 if (rc != MM_CAMERA_OK) { 309 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 310 i, rc); 311 break; 312 } 313 314 rc = mm_app_start_record_preview(&test_obj, &dim); 315 if (rc != MM_CAMERA_OK) { 316 LOGE("mm_app_start_record_preview() cam_idx=%d, err=%d\n", 317 i, rc); 318 mm_app_close(&test_obj); 319 break; 320 } 321 322 sleep(1); 323 324 rc = mm_app_start_record(&test_obj); 325 if (rc != MM_CAMERA_OK) { 326 LOGE("mm_app_start_record() cam_idx=%d, err=%d\n", 327 i, rc); 328 mm_app_stop_record_preview(&test_obj); 329 mm_app_close(&test_obj); 330 break; 331 } 332 333 sleep(1); 334 335 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 336 rc = mm_app_start_live_snapshot(&test_obj); 337 if (rc != MM_CAMERA_OK) { 338 LOGE("mm_app_start_live_snapshot() cam_idx=%d, err=%d\n", 339 i, rc); 340 break; 341 } 342 343 /* wait for jpeg is done */ 344 mm_camera_app_wait(); 345 346 rc = mm_app_stop_live_snapshot(&test_obj); 347 if (rc != MM_CAMERA_OK) { 348 LOGE("mm_app_stop_live_snapshot() cam_idx=%d, err=%d\n", 349 i, rc); 350 break; 351 } 352 } 353 if (rc != MM_CAMERA_OK) { 354 LOGE("start/stop live snapshot cam_idx=%d, err=%d\n", 355 i, rc); 356 mm_app_stop_record(&test_obj); 357 mm_app_stop_record_preview(&test_obj); 358 mm_app_close(&test_obj); 359 break; 360 } 361 362 rc = mm_app_stop_record(&test_obj); 363 if (rc != MM_CAMERA_OK) { 364 LOGE("mm_app_stop_record() cam_idx=%d, err=%d\n", 365 i, rc); 366 mm_app_stop_record_preview(&test_obj); 367 mm_app_close(&test_obj); 368 break; 369 } 370 371 sleep(1); 372 373 rc = mm_app_stop_record_preview(&test_obj); 374 if (rc != MM_CAMERA_OK) { 375 LOGE("mm_app_stop_record_preview() cam_idx=%d, err=%d\n", 376 i, rc); 377 mm_app_close(&test_obj); 378 break; 379 } 380 381 rc = mm_app_close(&test_obj); 382 if (rc != MM_CAMERA_OK) { 383 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 384 i, rc); 385 break; 386 } 387 } 388 if (rc == MM_CAMERA_OK) { 389 printf("\nPassed\n"); 390 } else { 391 printf("\nFailed\n"); 392 } 393 LOGD("END, rc = %d\n", rc); 394 return rc; 395 } 396 397 int mm_app_tc_capture_raw(mm_camera_app_t *cam_app) 398 { 399 int rc = MM_CAMERA_OK; 400 int i, j; 401 mm_camera_test_obj_t test_obj; 402 uint8_t num_snapshot = 1; 403 uint8_t num_rcvd_snapshot = 0; 404 405 printf("\n Verifying raw capture...\n"); 406 for (i = 0; i < cam_app->num_cameras; i++) { 407 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 408 rc = mm_app_open(cam_app, i, &test_obj); 409 if (rc != MM_CAMERA_OK) { 410 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 411 i, rc); 412 break; 413 } 414 415 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 416 rc = mm_app_start_capture_raw(&test_obj, num_snapshot); 417 if (rc != MM_CAMERA_OK) { 418 LOGE(" mm_app_start_capture() cam_idx=%d, err=%d\n", 419 i, rc); 420 break; 421 } 422 while (num_rcvd_snapshot < num_snapshot) { 423 mm_camera_app_wait(); 424 num_rcvd_snapshot++; 425 } 426 rc = mm_app_stop_capture_raw(&test_obj); 427 if (rc != MM_CAMERA_OK) { 428 LOGE(" mm_app_stop_capture() cam_idx=%d, err=%d\n", 429 i, rc); 430 break; 431 } 432 } 433 434 rc |= mm_app_close(&test_obj); 435 if (rc != MM_CAMERA_OK) { 436 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 437 i, rc); 438 break; 439 } 440 } 441 if (rc == MM_CAMERA_OK) { 442 printf("\nPassed\n"); 443 } else { 444 printf("\nFailed\n"); 445 } 446 LOGD("END, rc = %d\n", rc); 447 return rc; 448 } 449 450 int mm_app_tc_capture_regular(mm_camera_app_t *cam_app) 451 { 452 int rc = MM_CAMERA_OK; 453 int i, j; 454 mm_camera_test_obj_t test_obj; 455 uint8_t num_snapshot = 1; 456 uint8_t num_rcvd_snapshot = 0; 457 458 printf("\n Verifying capture...\n"); 459 for (i = 0; i < cam_app->num_cameras; i++) { 460 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 461 rc = mm_app_open(cam_app, i, &test_obj); 462 if (rc != MM_CAMERA_OK) { 463 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 464 i, rc); 465 break; 466 } 467 468 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 469 rc = mm_app_start_capture(&test_obj, num_snapshot); 470 if (rc != MM_CAMERA_OK) { 471 LOGE(" mm_app_start_capture() cam_idx=%d, err=%d\n", 472 i, rc); 473 break; 474 } 475 while (num_rcvd_snapshot < num_snapshot) { 476 mm_camera_app_wait(); 477 num_rcvd_snapshot++; 478 } 479 rc = mm_app_stop_capture(&test_obj); 480 if (rc != MM_CAMERA_OK) { 481 LOGE(" mm_app_stop_capture() cam_idx=%d, err=%d\n", 482 i, rc); 483 break; 484 } 485 } 486 487 rc = mm_app_close(&test_obj); 488 if (rc != MM_CAMERA_OK) { 489 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 490 i, rc); 491 break; 492 } 493 } 494 if (rc == MM_CAMERA_OK) { 495 printf("\nPassed\n"); 496 } else { 497 printf("\nFailed\n"); 498 } 499 LOGD("END, rc = %d\n", rc); 500 return rc; 501 } 502 503 int mm_app_tc_capture_burst(mm_camera_app_t *cam_app) 504 { 505 int rc = MM_CAMERA_OK; 506 int i, j; 507 mm_camera_test_obj_t test_obj; 508 uint8_t num_snapshot = 3; 509 uint8_t num_rcvd_snapshot = 0; 510 511 printf("\n Verifying capture...\n"); 512 for (i = 0; i < cam_app->num_cameras; i++) { 513 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 514 rc = mm_app_open(cam_app, i, &test_obj); 515 if (rc != MM_CAMERA_OK) { 516 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 517 i, rc); 518 break; 519 } 520 521 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 522 rc = mm_app_start_capture(&test_obj, num_snapshot); 523 if (rc != MM_CAMERA_OK) { 524 LOGE(" mm_app_start_capture() cam_idx=%d, err=%d\n", 525 i, rc); 526 break; 527 } 528 while (num_rcvd_snapshot < num_snapshot) { 529 mm_camera_app_wait(); 530 num_rcvd_snapshot++; 531 } 532 rc = mm_app_stop_capture(&test_obj); 533 if (rc != MM_CAMERA_OK) { 534 LOGE(" mm_app_stop_capture() cam_idx=%d, err=%d\n", 535 i, rc); 536 break; 537 } 538 } 539 540 rc = mm_app_close(&test_obj); 541 if (rc != MM_CAMERA_OK) { 542 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 543 i, rc); 544 break; 545 } 546 } 547 if (rc == MM_CAMERA_OK) { 548 printf("\nPassed\n"); 549 } else { 550 printf("\nFailed\n"); 551 } 552 LOGD("END, rc = %d\n", rc); 553 return rc; 554 } 555 556 int mm_app_tc_rdi_burst(mm_camera_app_t *cam_app) 557 { 558 int rc = MM_CAMERA_OK, rc2 = MM_CAMERA_OK; 559 int i, j; 560 mm_camera_test_obj_t test_obj; 561 562 printf("\n Verifying rdi burst (3) capture...\n"); 563 for (i = 0; i < cam_app->num_cameras; i++) { 564 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 565 rc = mm_app_open(cam_app, i, &test_obj); 566 if (rc != MM_CAMERA_OK) { 567 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 568 i, rc); 569 break; 570 } 571 572 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 573 rc = mm_app_start_rdi(&test_obj, 3); 574 if (rc != MM_CAMERA_OK) { 575 LOGE(" mm_app_start_preview() cam_idx=%d, err=%d\n", 576 i, rc); 577 break; 578 } 579 sleep(1); 580 rc = mm_app_stop_rdi(&test_obj); 581 if (rc != MM_CAMERA_OK) { 582 LOGE(" mm_app_stop_preview() cam_idx=%d, err=%d\n", 583 i, rc); 584 break; 585 } 586 } 587 588 rc2 = mm_app_close(&test_obj); 589 if (rc2 != MM_CAMERA_OK) { 590 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 591 i, rc2); 592 if (rc == MM_CAMERA_OK) { 593 rc = rc2; 594 } 595 break; 596 } 597 } 598 if (rc == MM_CAMERA_OK) { 599 printf("\nPassed\n"); 600 } else { 601 printf("\nFailed\n"); 602 } 603 LOGD("END, rc = %d\n", rc); 604 return rc; 605 } 606 607 int mm_app_tc_rdi_cont(mm_camera_app_t *cam_app) 608 { 609 int rc = MM_CAMERA_OK, rc2 = MM_CAMERA_OK; 610 int i, j; 611 mm_camera_test_obj_t test_obj; 612 613 printf("\n Verifying rdi continuous capture...\n"); 614 for (i = 0; i < cam_app->num_cameras; i++) { 615 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 616 rc = mm_app_open(cam_app, i, &test_obj); 617 if (rc != MM_CAMERA_OK) { 618 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 619 i, rc); 620 break; 621 } 622 623 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 624 rc = mm_app_start_rdi(&test_obj, 0); 625 if (rc != MM_CAMERA_OK) { 626 LOGE(" mm_app_start_preview() cam_idx=%d, err=%d\n", 627 i, rc); 628 break; 629 } 630 sleep(1); 631 rc = mm_app_stop_rdi(&test_obj); 632 if (rc != MM_CAMERA_OK) { 633 LOGE(" mm_app_stop_preview() cam_idx=%d, err=%d\n", 634 i, rc); 635 break; 636 } 637 } 638 639 rc2 = mm_app_close(&test_obj); 640 if (rc2 != MM_CAMERA_OK) { 641 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 642 i, rc2); 643 if (rc == MM_CAMERA_OK) { 644 rc = rc2; 645 } 646 break; 647 } 648 } 649 if (rc == MM_CAMERA_OK) { 650 printf("\nPassed\n"); 651 } else { 652 printf("\nFailed\n"); 653 } 654 LOGD("END, rc = %d\n", rc); 655 return rc; 656 } 657 658 int mm_app_gen_test_cases() 659 { 660 int tc = 0; 661 memset(mm_app_tc, 0, sizeof(mm_app_tc)); 662 if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_open_close; 663 if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_start_stop_preview; 664 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_start_stop_zsl; 665 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_start_stop_video_preview; 666 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_start_stop_video_record; 667 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_start_stop_live_snapshot; 668 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_capture_regular; 669 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_capture_burst; 670 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_rdi_cont; 671 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_rdi_burst; 672 673 return tc; 674 } 675 676 int mm_app_unit_test_entry(mm_camera_app_t *cam_app) 677 { 678 int rc = MM_CAMERA_OK; 679 int i, j, tc = 0; 680 681 tc = mm_app_gen_test_cases(); 682 LOGD("Running %d test cases\n",tc); 683 for (i = 0; i < tc; i++) { 684 for (j = 0; j < MM_QCAMERA_APP_UTEST_OUTER_LOOP; j++) { 685 mm_app_tc[i].r = mm_app_tc[i].f(cam_app); 686 if (mm_app_tc[i].r != MM_CAMERA_OK) { 687 printf(" test case %d (iteration %d) error = %d, abort unit testing engine!!!!\n", 688 i, j, mm_app_tc[i].r); 689 rc = mm_app_tc[i].r; 690 goto end; 691 } 692 } 693 } 694 end: 695 printf("nTOTAL_TSET_CASE = %d, NUM_TEST_RAN = %d, rc=%d\n", tc, i, rc); 696 return rc; 697 } 698 699 700 701 702