LCOV - code coverage report
Current view: directory - src/trusted/service_runtime - dyn_array_test.c (source / functions) Found Hit Coverage
Test: coverage.lcov Lines: 63 42 66.7 %
Date: 2014-09-25 Functions: 0 0 -

       1                 : /*
       2                 :  * Copyright (c) 2008 The Native Client Authors. All rights reserved.
       3                 :  * Use of this source code is governed by a BSD-style license that can be
       4                 :  * found in the LICENSE file.
       5                 :  */
       6                 : 
       7                 : 
       8                 : /* @file
       9                 :  *
      10                 :  * A simple test to exercise the DynArray class.
      11                 :  */
      12                 : #include <stdio.h>
      13                 : #include <stdlib.h>
      14                 : 
      15                 : #include "native_client/src/include/nacl_macros.h"
      16                 : #include "native_client/src/include/portability.h"
      17                 : 
      18                 : #include "native_client/src/shared/platform/platform_init.h"
      19                 : 
      20                 : #include "native_client/src/trusted/service_runtime/dyn_array.h"
      21                 : 
      22                 : 
      23               1 : int ReadWriteTest(void) {
      24                 :   static int test_data[] = {
      25                 :     3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8, 4,
      26                 :     6, 2, 6, 4, 3, 3, 8, 3, 2, 7, 9, 5, 0, 2, 8, 8, 4, 1, 9, 7,
      27                 :     1, 6, 9, 3, 9, 9, 3, 7, 5, 1, 0, 5, 8, 2, 0, 9, 7, 4, 9, 4,
      28                 :     4, 5, 9, 2, 3, 0, 7, 8, 1, 6, 4, 0, 6, 2, 8, 6, 2, 0, 8, 9,
      29                 :     9, 8, 6, 2, 8, 0, 3, 4, 8, 2, 5, 3, 4, 2, 1, 1, 7, 0, 6, 7,
      30                 :     6 };
      31                 : 
      32                 :   struct DynArray da;
      33                 :   size_t          i;
      34                 :   ssize_t         j;
      35               1 :   int             nerrors = 0;
      36                 : 
      37               1 :   printf("\nReadWriteTest\n");
      38                 : 
      39               1 :   if (!DynArrayCtor(&da, 2)) {
      40               0 :     fprintf(stderr, "dyn_array_test: DynArrayCtor failed\n");
      41               0 :     ++nerrors;
      42               0 :     goto done;
      43                 :   }
      44                 : 
      45               1 :   for (i = 0; i < NACL_ARRAY_SIZE(test_data); ++i) {
      46               1 :     if (!DynArraySet(&da, i, (void *) (uintptr_t) test_data[i])) {
      47                 :       fprintf(stderr,
      48                 :               "dyn_array_test: insert for position %"NACL_PRIuS" failed\n",
      49               0 :               i);
      50               0 :       ++nerrors;
      51                 :     }
      52               1 :   }
      53                 : 
      54               1 :   for (i = 0; i < NACL_ARRAY_SIZE(test_data); ++i) {
      55               1 :     if ((int) (uintptr_t) DynArrayGet(&da, i) != test_data[i]) {
      56                 :       fprintf(stderr,
      57                 :               "dyn_array_test: check for value at position %"NACL_PRIuS
      58               0 :               " failed\n", i);
      59               0 :       ++nerrors;
      60                 :     }
      61               1 :   }
      62                 : 
      63               1 :   DynArrayDtor(&da);
      64                 : 
      65               1 :   if (!DynArrayCtor(&da, 10)) {
      66               0 :     fprintf(stderr, "dyn_array_test: DynArrayCtor failed\n");
      67               0 :     ++nerrors;
      68               0 :     goto done;
      69                 :   }
      70                 : 
      71               1 :   for (j = NACL_ARRAY_SIZE(test_data); --j >= 0; ) {
      72               1 :     if (!DynArraySet(&da, j, (void *) (uintptr_t) test_data[j])) {
      73                 :       fprintf(stderr,
      74                 :               "dyn_array_test: insert for position %"NACL_PRIdS" failed\n",
      75               0 :               j);
      76               0 :       ++nerrors;
      77                 :     }
      78               1 :   }
      79                 : 
      80               1 :   for (j = NACL_ARRAY_SIZE(test_data); --j >= 0; ) {
      81               1 :     if ((int) (uintptr_t) DynArrayGet(&da, j) != test_data[j]) {
      82                 :       fprintf(stderr,
      83                 :               "dyn_array_test: check for value at position %"NACL_PRIdS
      84               0 :               " failed\n", j);
      85               0 :       ++nerrors;
      86                 :     }
      87               1 :   }
      88                 : 
      89               1 :   DynArrayDtor(&da);
      90                 : 
      91                 : done:
      92               1 :   printf(0 != nerrors ? "FAILED\n" : "PASSED\n");
      93               1 :   return nerrors;
      94               1 : }
      95                 : 
      96                 : 
      97               1 : int FfsTest(void) {
      98                 :   static struct {
      99                 :     size_t  pos;
     100                 :     void    *val;
     101                 :     size_t  expected;
     102                 :   } test_data[] = {
     103                 :     { 1, (void *) 0xdeadbeef, 0 },
     104                 :     { 3, (void *) 0xdeadbeef, 0 },
     105                 :     { 0, (void *) 0xdeadbeef, 2 },
     106                 :     { 2, (void *) 0xdeadbeef, 4 },
     107                 :     { 1, (void *) 0, 1 },
     108                 :     { 1, (void *) 0xdeadbeef, 4 },
     109                 :     { 4, (void *) 0xdeadbeef, 5 },
     110                 :     { 5, (void *) 0xdeadbeef, 6 },
     111                 :     { 6, (void *) 0xdeadbeef, 7 },
     112                 :     { 8, (void *) 0xdeadbeef, 7 },
     113                 :     { 7, (void *) 0xdeadbeef, 9 },
     114                 :     { 9, (void *) 0xdeadbeef, 10 },
     115                 :     { 10, (void *) 0xdeadbeef, 11 },
     116                 :     { 11, (void *) 0xdeadbeef, 12 },
     117                 :     { 12, (void *) 0xdeadbeef, 13 },
     118                 :     { 13, (void *) 0xdeadbeef, 14 },
     119                 :     { 14, (void *) 0xdeadbeef, 15 },
     120                 :     { 15, (void *) 0xdeadbeef, 16 },
     121                 :     { 16, (void *) 0xdeadbeef, 17 },
     122                 :     { 17, (void *) 0xdeadbeef, 18 },
     123                 :     { 18, (void *) 0xdeadbeef, 19 },
     124                 :     { 19, (void *) 0xdeadbeef, 20 },
     125                 :     { 20, (void *) 0xdeadbeef, 21 },
     126                 :     { 21, (void *) 0xdeadbeef, 22 },
     127                 :     { 22, (void *) 0xdeadbeef, 23 },
     128                 :     { 23, (void *) 0xdeadbeef, 24 },
     129                 :     { 24, (void *) 0xdeadbeef, 25 },
     130                 :     { 25, (void *) 0xdeadbeef, 26 },
     131                 :     { 26, (void *) 0xdeadbeef, 27 },
     132                 :     { 27, (void *) 0xdeadbeef, 28 },
     133                 :     { 28, (void *) 0xdeadbeef, 29 },
     134                 :     { 29, (void *) 0xdeadbeef, 30 },
     135                 :     { 30, (void *) 0xdeadbeef, 31 },
     136                 :     { 32, (void *) 0xdeadbeef, 31 },
     137                 :     { 32, (void *) 0, 31 },
     138                 :     { 31, (void *) 0xdeadbeef, 32 },
     139                 :     { 32, (void *) 0xdeadbeef, 33 },
     140                 :     { 31, (void *) 0, 31 },
     141                 :     { 31, (void *) 0xdeadbeef, 33 },
     142                 :     { 34, (void *) 0xdeadbeef, 33 },
     143                 :     { 35, (void *) 0xdeadbeef, 33 },
     144                 :     { 36, (void *) 0xdeadbeef, 33 },
     145                 :     { 37, (void *) 0xdeadbeef, 33 },
     146                 :     { 38, (void *) 0xdeadbeef, 33 },
     147                 :     { 39, (void *) 0xdeadbeef, 33 },
     148                 :     { 40, (void *) 0xdeadbeef, 33 },
     149                 :     { 41, (void *) 0xdeadbeef, 33 },
     150                 :     { 42, (void *) 0xdeadbeef, 33 },
     151                 :     { 43, (void *) 0xdeadbeef, 33 },
     152                 :     { 44, (void *) 0xdeadbeef, 33 },
     153                 :     { 45, (void *) 0xdeadbeef, 33 },
     154                 :     { 46, (void *) 0xdeadbeef, 33 },
     155                 :     { 47, (void *) 0xdeadbeef, 33 },
     156                 :     { 48, (void *) 0xdeadbeef, 33 },
     157                 :     { 49, (void *) 0xdeadbeef, 33 },
     158                 :     { 50, (void *) 0xdeadbeef, 33 },
     159                 :     { 51, (void *) 0xdeadbeef, 33 },
     160                 :     { 52, (void *) 0xdeadbeef, 33 },
     161                 :     { 53, (void *) 0xdeadbeef, 33 },
     162                 :     { 54, (void *) 0xdeadbeef, 33 },
     163                 :     { 55, (void *) 0xdeadbeef, 33 },
     164                 :     { 56, (void *) 0xdeadbeef, 33 },
     165                 :     { 57, (void *) 0xdeadbeef, 33 },
     166                 :     { 58, (void *) 0xdeadbeef, 33 },
     167                 :     { 59, (void *) 0xdeadbeef, 33 },
     168                 :     { 60, (void *) 0xdeadbeef, 33 },
     169                 :     { 61, (void *) 0xdeadbeef, 33 },
     170                 :     { 62, (void *) 0xdeadbeef, 33 },
     171                 :     { 63, (void *) 0xdeadbeef, 33 },
     172                 :     { 64, (void *) 0xdeadbeef, 33 },
     173                 :     { 65, (void *) 0xdeadbeef, 33 },
     174                 :     { 66, (void *) 0xdeadbeef, 33 },
     175                 :     { 33, (void *) 0xdeadbeef, 67 },
     176                 :     { 31, (void *) 0, 31 },
     177                 :     { 32, (void *) 0, 31 },
     178                 :     { 63, (void *) 0, 31 },
     179                 :     { 31, (void *) 0xdeadbeef, 32 },
     180                 :     { 32, (void *) 0xdeadbeef, 63 },
     181                 :     { 63, (void *) 0xdeadbeef, 67 },
     182                 :   };
     183                 :   struct DynArray da;
     184                 :   size_t          ix;
     185               1 :   int             nerrors = 0;
     186                 : 
     187               1 :   printf("\nFFS test\n");
     188                 : 
     189               1 :   if (!DynArrayCtor(&da, 32)) {
     190               0 :     fprintf(stderr, "dyn_array_test: DynArrayCtor failed\n");
     191               0 :     ++nerrors;
     192               0 :     goto done;
     193                 :   }
     194                 : 
     195               1 :   for (ix = 0; ix < NACL_ARRAY_SIZE(test_data); ++ix) {
     196               1 :     if (!DynArraySet(&da, test_data[ix].pos, test_data[ix].val)) {
     197                 :       fprintf(stderr,
     198                 :               "dyn_array_test: setting at position %"NACL_PRIuS" to 0x%08"
     199                 :               NACL_PRIxPTR", test_data entry %"NACL_PRIuS" failed\n",
     200               0 :               test_data[ix].pos, (uintptr_t) test_data[ix].val, ix);
     201               0 :       ++nerrors;
     202                 :     }
     203               1 :     if (DynArrayFirstAvail(&da) != test_data[ix].expected) {
     204                 :       fprintf(stderr,
     205                 :               "dyn_array_test: ix %"NACL_PRIuS", first avail: expected %"
     206                 :               NACL_PRIuS", got %"NACL_PRIuS"\n",
     207               0 :               ix, test_data[ix].expected, DynArrayFirstAvail(&da));
     208               0 :       ++nerrors;
     209                 :     }
     210               1 :   }
     211                 : 
     212               1 :   DynArrayDtor(&da);
     213                 : 
     214                 : done:
     215               1 :   printf(0 != nerrors ? "FAILED\n" : "PASSED\n");
     216               1 :   return nerrors;
     217               1 : }
     218                 : 
     219                 : 
     220               1 : int main(void) {
     221               1 :   int nerrors = 0;
     222                 : 
     223               1 :   NaClPlatformInit();
     224                 : 
     225               1 :   nerrors += ReadWriteTest();
     226               1 :   nerrors += FfsTest();
     227                 : 
     228               1 :   NaClPlatformFini();
     229                 : 
     230               1 :   return nerrors != 0;
     231               1 : }

Generated by: LCOV version 1.7