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 #include <unistd.h> 40 41 static mm_app_tc_t mm_app_tc[MM_QCAM_APP_TEST_NUM]; 42 43 int mm_app_tc_open_close(mm_camera_app_t *cam_app) 44 { 45 int rc = MM_CAMERA_OK; 46 int i; 47 mm_camera_test_obj_t test_obj; 48 49 printf("\n Verifying open/close cameras...\n"); 50 for (i = 0; i < cam_app->num_cameras; i++) { 51 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 52 rc = mm_app_open(cam_app, i, &test_obj); 53 if (rc != MM_CAMERA_OK) { 54 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 55 i, rc); 56 break; 57 } 58 sleep(1); 59 rc = mm_app_close(&test_obj); 60 if (rc != MM_CAMERA_OK) { 61 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 62 i, rc); 63 break; 64 } 65 } 66 if (rc == MM_CAMERA_OK) { 67 printf("\nPassed\n"); 68 } else { 69 printf("\nFailed\n"); 70 } 71 LOGD("END, rc = %d\n", rc); 72 return rc; 73 } 74 75 int mm_app_tc_start_stop_preview(mm_camera_app_t *cam_app) 76 { 77 int rc = MM_CAMERA_OK; 78 int i, j; 79 mm_camera_test_obj_t test_obj; 80 81 printf("\n Verifying start/stop preview...\n"); 82 for (i = 0; i < cam_app->num_cameras; i++) { 83 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 84 rc = mm_app_open(cam_app, i, &test_obj); 85 if (rc != MM_CAMERA_OK) { 86 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 87 i, rc); 88 break; 89 } 90 91 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 92 rc = mm_app_start_preview(&test_obj); 93 if (rc != MM_CAMERA_OK) { 94 LOGE(" mm_app_start_preview() cam_idx=%d, err=%d\n", 95 i, rc); 96 break; 97 } 98 sleep(1); 99 rc = mm_app_stop_preview(&test_obj); 100 if (rc != MM_CAMERA_OK) { 101 LOGE(" mm_app_stop_preview() cam_idx=%d, err=%d\n", 102 i, rc); 103 break; 104 } 105 } 106 107 rc |= mm_app_close(&test_obj); 108 if (rc != MM_CAMERA_OK) { 109 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 110 i, rc); 111 break; 112 } 113 } 114 if (rc == MM_CAMERA_OK) { 115 printf("\nPassed\n"); 116 } else { 117 printf("\nFailed\n"); 118 } 119 LOGD("END, rc = %d\n", rc); 120 return rc; 121 } 122 123 int mm_app_tc_start_stop_zsl(mm_camera_app_t *cam_app) 124 { 125 int rc = MM_CAMERA_OK; 126 int i, j; 127 mm_camera_test_obj_t test_obj; 128 129 printf("\n Verifying start/stop preview...\n"); 130 for (i = 0; i < cam_app->num_cameras; i++) { 131 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 132 rc = mm_app_open(cam_app, i, &test_obj); 133 if (rc != MM_CAMERA_OK) { 134 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 135 i, rc); 136 break; 137 } 138 139 for (j = 0; j < 1; j++) { 140 rc = mm_app_start_preview_zsl(&test_obj); 141 if (rc != MM_CAMERA_OK) { 142 LOGE(" mm_app_start_preview_zsl() cam_idx=%d, err=%d\n", 143 i, rc); 144 break; 145 } 146 sleep(1); 147 rc = mm_app_stop_preview_zsl(&test_obj); 148 if (rc != MM_CAMERA_OK) { 149 LOGE(" mm_app_stop_preview_zsl() cam_idx=%d, err=%d\n", 150 i, rc); 151 break; 152 } 153 } 154 155 rc = mm_app_close(&test_obj); 156 if (rc != MM_CAMERA_OK) { 157 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 158 i, rc); 159 break; 160 } 161 } 162 if (rc == MM_CAMERA_OK) { 163 printf("\nPassed\n"); 164 } else { 165 printf("\nFailed\n"); 166 } 167 LOGD("END, rc = %d\n", rc); 168 return rc; 169 } 170 171 int mm_app_tc_start_stop_video_preview(mm_camera_app_t *cam_app) 172 { 173 int rc = MM_CAMERA_OK; 174 int i, j; 175 mm_camera_test_obj_t test_obj; 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); 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 225 printf("\n Verifying start/stop recording...\n"); 226 for (i = 0; i < cam_app->num_cameras; i++) { 227 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 228 rc = mm_app_open(cam_app, i, &test_obj); 229 if (rc != MM_CAMERA_OK) { 230 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 231 i, rc); 232 break; 233 } 234 235 rc = mm_app_start_record_preview(&test_obj); 236 if (rc != MM_CAMERA_OK) { 237 LOGE("mm_app_start_record_preview() cam_idx=%d, err=%d\n", 238 i, rc); 239 mm_app_close(&test_obj); 240 break; 241 } 242 243 sleep(1); 244 245 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 246 rc = mm_app_start_record(&test_obj); 247 if (rc != MM_CAMERA_OK) { 248 LOGE("mm_app_start_record() cam_idx=%d, err=%d\n", 249 i, rc); 250 break; 251 } 252 253 sleep(1); 254 255 rc = mm_app_stop_record(&test_obj); 256 if (rc != MM_CAMERA_OK) { 257 LOGE("mm_app_stop_record() cam_idx=%d, err=%d\n", 258 i, rc); 259 break; 260 } 261 } 262 if (rc != MM_CAMERA_OK) { 263 LOGE("start/stop record cam_idx=%d, err=%d\n", 264 i, rc); 265 mm_app_stop_record_preview(&test_obj); 266 mm_app_close(&test_obj); 267 break; 268 } 269 270 rc = mm_app_stop_record_preview(&test_obj); 271 if (rc != MM_CAMERA_OK) { 272 LOGE("mm_app_stop_record_preview() cam_idx=%d, err=%d\n", 273 i, rc); 274 mm_app_close(&test_obj); 275 break; 276 } 277 278 rc = mm_app_close(&test_obj); 279 if (rc != MM_CAMERA_OK) { 280 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 281 i, rc); 282 break; 283 } 284 } 285 if (rc == MM_CAMERA_OK) { 286 printf("\nPassed\n"); 287 } else { 288 printf("\nFailed\n"); 289 } 290 LOGD("END, rc = %d\n", rc); 291 return rc; 292 } 293 294 int mm_app_tc_start_stop_live_snapshot(mm_camera_app_t *cam_app) 295 { 296 int rc = MM_CAMERA_OK; 297 int i, j; 298 mm_camera_test_obj_t test_obj; 299 300 printf("\n Verifying start/stop live snapshot...\n"); 301 for (i = 0; i < cam_app->num_cameras; i++) { 302 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 303 rc = mm_app_open(cam_app, i, &test_obj); 304 if (rc != MM_CAMERA_OK) { 305 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 306 i, rc); 307 break; 308 } 309 310 rc = mm_app_start_record_preview(&test_obj); 311 if (rc != MM_CAMERA_OK) { 312 LOGE("mm_app_start_record_preview() cam_idx=%d, err=%d\n", 313 i, rc); 314 mm_app_close(&test_obj); 315 break; 316 } 317 318 sleep(1); 319 320 rc = mm_app_start_record(&test_obj); 321 if (rc != MM_CAMERA_OK) { 322 LOGE("mm_app_start_record() cam_idx=%d, err=%d\n", 323 i, rc); 324 mm_app_stop_record_preview(&test_obj); 325 mm_app_close(&test_obj); 326 break; 327 } 328 329 sleep(1); 330 331 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 332 rc = mm_app_start_live_snapshot(&test_obj); 333 if (rc != MM_CAMERA_OK) { 334 LOGE("mm_app_start_live_snapshot() cam_idx=%d, err=%d\n", 335 i, rc); 336 break; 337 } 338 339 /* wait for jpeg is done */ 340 mm_camera_app_wait(); 341 342 rc = mm_app_stop_live_snapshot(&test_obj); 343 if (rc != MM_CAMERA_OK) { 344 LOGE("mm_app_stop_live_snapshot() cam_idx=%d, err=%d\n", 345 i, rc); 346 break; 347 } 348 } 349 if (rc != MM_CAMERA_OK) { 350 LOGE("start/stop live snapshot cam_idx=%d, err=%d\n", 351 i, rc); 352 mm_app_stop_record(&test_obj); 353 mm_app_stop_record_preview(&test_obj); 354 mm_app_close(&test_obj); 355 break; 356 } 357 358 rc = mm_app_stop_record(&test_obj); 359 if (rc != MM_CAMERA_OK) { 360 LOGE("mm_app_stop_record() cam_idx=%d, err=%d\n", 361 i, rc); 362 mm_app_stop_record_preview(&test_obj); 363 mm_app_close(&test_obj); 364 break; 365 } 366 367 sleep(1); 368 369 rc = mm_app_stop_record_preview(&test_obj); 370 if (rc != MM_CAMERA_OK) { 371 LOGE("mm_app_stop_record_preview() cam_idx=%d, err=%d\n", 372 i, rc); 373 mm_app_close(&test_obj); 374 break; 375 } 376 377 rc = mm_app_close(&test_obj); 378 if (rc != MM_CAMERA_OK) { 379 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 380 i, rc); 381 break; 382 } 383 } 384 if (rc == MM_CAMERA_OK) { 385 printf("\nPassed\n"); 386 } else { 387 printf("\nFailed\n"); 388 } 389 LOGD("END, rc = %d\n", rc); 390 return rc; 391 } 392 393 int mm_app_tc_capture_raw(mm_camera_app_t *cam_app) 394 { 395 int rc = MM_CAMERA_OK; 396 int i, j; 397 mm_camera_test_obj_t test_obj; 398 uint8_t num_snapshot = 1; 399 uint8_t num_rcvd_snapshot = 0; 400 401 printf("\n Verifying raw capture...\n"); 402 for (i = 0; i < cam_app->num_cameras; i++) { 403 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 404 rc = mm_app_open(cam_app, i, &test_obj); 405 if (rc != MM_CAMERA_OK) { 406 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 407 i, rc); 408 break; 409 } 410 411 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 412 rc = mm_app_start_capture_raw(&test_obj, num_snapshot); 413 if (rc != MM_CAMERA_OK) { 414 LOGE(" mm_app_start_capture() cam_idx=%d, err=%d\n", 415 i, rc); 416 break; 417 } 418 while (num_rcvd_snapshot < num_snapshot) { 419 mm_camera_app_wait(); 420 num_rcvd_snapshot++; 421 } 422 rc = mm_app_stop_capture_raw(&test_obj); 423 if (rc != MM_CAMERA_OK) { 424 LOGE(" mm_app_stop_capture() cam_idx=%d, err=%d\n", 425 i, rc); 426 break; 427 } 428 } 429 430 rc |= mm_app_close(&test_obj); 431 if (rc != MM_CAMERA_OK) { 432 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 433 i, rc); 434 break; 435 } 436 } 437 if (rc == MM_CAMERA_OK) { 438 printf("\nPassed\n"); 439 } else { 440 printf("\nFailed\n"); 441 } 442 LOGD("END, rc = %d\n", rc); 443 return rc; 444 } 445 446 int mm_app_tc_capture_regular(mm_camera_app_t *cam_app) 447 { 448 int rc = MM_CAMERA_OK; 449 int i, j; 450 mm_camera_test_obj_t test_obj; 451 uint8_t num_snapshot = 1; 452 uint8_t num_rcvd_snapshot = 0; 453 454 printf("\n Verifying capture...\n"); 455 for (i = 0; i < cam_app->num_cameras; i++) { 456 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 457 rc = mm_app_open(cam_app, i, &test_obj); 458 if (rc != MM_CAMERA_OK) { 459 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 460 i, rc); 461 break; 462 } 463 464 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 465 rc = mm_app_start_capture(&test_obj, num_snapshot); 466 if (rc != MM_CAMERA_OK) { 467 LOGE(" mm_app_start_capture() cam_idx=%d, err=%d\n", 468 i, rc); 469 break; 470 } 471 while (num_rcvd_snapshot < num_snapshot) { 472 mm_camera_app_wait(); 473 num_rcvd_snapshot++; 474 } 475 rc = mm_app_stop_capture(&test_obj); 476 if (rc != MM_CAMERA_OK) { 477 LOGE(" mm_app_stop_capture() cam_idx=%d, err=%d\n", 478 i, rc); 479 break; 480 } 481 } 482 483 rc = mm_app_close(&test_obj); 484 if (rc != MM_CAMERA_OK) { 485 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 486 i, rc); 487 break; 488 } 489 } 490 if (rc == MM_CAMERA_OK) { 491 printf("\nPassed\n"); 492 } else { 493 printf("\nFailed\n"); 494 } 495 LOGD("END, rc = %d\n", rc); 496 return rc; 497 } 498 499 int mm_app_tc_capture_burst(mm_camera_app_t *cam_app) 500 { 501 int rc = MM_CAMERA_OK; 502 int i, j; 503 mm_camera_test_obj_t test_obj; 504 uint8_t num_snapshot = 3; 505 uint8_t num_rcvd_snapshot = 0; 506 507 printf("\n Verifying capture...\n"); 508 for (i = 0; i < cam_app->num_cameras; i++) { 509 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 510 rc = mm_app_open(cam_app, i, &test_obj); 511 if (rc != MM_CAMERA_OK) { 512 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 513 i, rc); 514 break; 515 } 516 517 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 518 rc = mm_app_start_capture(&test_obj, num_snapshot); 519 if (rc != MM_CAMERA_OK) { 520 LOGE(" mm_app_start_capture() cam_idx=%d, err=%d\n", 521 i, rc); 522 break; 523 } 524 while (num_rcvd_snapshot < num_snapshot) { 525 mm_camera_app_wait(); 526 num_rcvd_snapshot++; 527 } 528 rc = mm_app_stop_capture(&test_obj); 529 if (rc != MM_CAMERA_OK) { 530 LOGE(" mm_app_stop_capture() cam_idx=%d, err=%d\n", 531 i, rc); 532 break; 533 } 534 } 535 536 rc = mm_app_close(&test_obj); 537 if (rc != MM_CAMERA_OK) { 538 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 539 i, rc); 540 break; 541 } 542 } 543 if (rc == MM_CAMERA_OK) { 544 printf("\nPassed\n"); 545 } else { 546 printf("\nFailed\n"); 547 } 548 LOGD("END, rc = %d\n", rc); 549 return rc; 550 } 551 552 int mm_app_tc_rdi_burst(mm_camera_app_t *cam_app) 553 { 554 int rc = MM_CAMERA_OK, rc2 = MM_CAMERA_OK; 555 int i, j; 556 mm_camera_test_obj_t test_obj; 557 558 printf("\n Verifying rdi burst (3) capture...\n"); 559 for (i = 0; i < cam_app->num_cameras; i++) { 560 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 561 rc = mm_app_open(cam_app, i, &test_obj); 562 if (rc != MM_CAMERA_OK) { 563 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 564 i, rc); 565 break; 566 } 567 568 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 569 rc = mm_app_start_rdi(&test_obj, 3); 570 if (rc != MM_CAMERA_OK) { 571 LOGE(" mm_app_start_preview() cam_idx=%d, err=%d\n", 572 i, rc); 573 break; 574 } 575 sleep(1); 576 rc = mm_app_stop_rdi(&test_obj); 577 if (rc != MM_CAMERA_OK) { 578 LOGE(" mm_app_stop_preview() cam_idx=%d, err=%d\n", 579 i, rc); 580 break; 581 } 582 } 583 584 rc2 = mm_app_close(&test_obj); 585 if (rc2 != MM_CAMERA_OK) { 586 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 587 i, rc2); 588 if (rc == MM_CAMERA_OK) { 589 rc = rc2; 590 } 591 break; 592 } 593 } 594 if (rc == MM_CAMERA_OK) { 595 printf("\nPassed\n"); 596 } else { 597 printf("\nFailed\n"); 598 } 599 LOGD("END, rc = %d\n", rc); 600 return rc; 601 } 602 603 int mm_app_tc_rdi_cont(mm_camera_app_t *cam_app) 604 { 605 int rc = MM_CAMERA_OK, rc2 = MM_CAMERA_OK; 606 int i, j; 607 mm_camera_test_obj_t test_obj; 608 609 printf("\n Verifying rdi continuous capture...\n"); 610 for (i = 0; i < cam_app->num_cameras; i++) { 611 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); 612 rc = mm_app_open(cam_app, i, &test_obj); 613 if (rc != MM_CAMERA_OK) { 614 LOGE("mm_app_open() cam_idx=%d, err=%d\n", 615 i, rc); 616 break; 617 } 618 619 for (j = 0; j < MM_QCAMERA_APP_UTEST_INNER_LOOP; j++) { 620 rc = mm_app_start_rdi(&test_obj, 0); 621 if (rc != MM_CAMERA_OK) { 622 LOGE(" mm_app_start_preview() cam_idx=%d, err=%d\n", 623 i, rc); 624 break; 625 } 626 sleep(1); 627 rc = mm_app_stop_rdi(&test_obj); 628 if (rc != MM_CAMERA_OK) { 629 LOGE(" mm_app_stop_preview() cam_idx=%d, err=%d\n", 630 i, rc); 631 break; 632 } 633 } 634 635 rc2 = mm_app_close(&test_obj); 636 if (rc2 != MM_CAMERA_OK) { 637 LOGE("mm_app_close() cam_idx=%d, err=%d\n", 638 i, rc2); 639 if (rc == MM_CAMERA_OK) { 640 rc = rc2; 641 } 642 break; 643 } 644 } 645 if (rc == MM_CAMERA_OK) { 646 printf("\nPassed\n"); 647 } else { 648 printf("\nFailed\n"); 649 } 650 LOGD("END, rc = %d\n", rc); 651 return rc; 652 } 653 654 int mm_app_gen_test_cases() 655 { 656 int tc = 0; 657 memset(mm_app_tc, 0, sizeof(mm_app_tc)); 658 if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_open_close; 659 if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_start_stop_preview; 660 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_start_stop_zsl; 661 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_start_stop_video_preview; 662 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_start_stop_video_record; 663 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_start_stop_live_snapshot; 664 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_capture_regular; 665 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_capture_burst; 666 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_rdi_cont; 667 //if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_rdi_burst; 668 669 return tc; 670 } 671 672 int mm_app_unit_test_entry(mm_camera_app_t *cam_app) 673 { 674 int rc = MM_CAMERA_OK; 675 int i, j, tc = 0; 676 677 tc = mm_app_gen_test_cases(); 678 LOGD("Running %d test cases\n",tc); 679 for (i = 0; i < tc; i++) { 680 for (j = 0; j < MM_QCAMERA_APP_UTEST_OUTER_LOOP; j++) { 681 mm_app_tc[i].r = mm_app_tc[i].f(cam_app); 682 if (mm_app_tc[i].r != MM_CAMERA_OK) { 683 printf(" test case %d (iteration %d) error = %d, abort unit testing engine!!!!\n", 684 i, j, mm_app_tc[i].r); 685 rc = mm_app_tc[i].r; 686 goto end; 687 } 688 } 689 } 690 end: 691 printf("nTOTAL_TSET_CASE = %d, NUM_TEST_RAN = %d, rc=%d\n", tc, i, rc); 692 return rc; 693 } 694 695 696 697 698