LCOV - code coverage report
Current view: directory - storage/test - test_AsXXX_helpers.cpp (source / functions) Found Hit Coverage
Test: app.info Lines: 67 50 74.6 %
Date: 2012-06-02 Functions: 7 6 85.7 %

       1                 : /*
       2                 :  *Any copyright is dedicated to the Public Domain.
       3                 :  * http://creativecommons.org/publicdomain/zero/1.0/
       4                 :  */
       5                 : 
       6                 : #include "storage_test_harness.h"
       7                 : #include "mozIStorageRow.h"
       8                 : #include "mozIStorageResultSet.h"
       9                 : 
      10                 : /**
      11                 :  * This file tests AsXXX (AsInt32, AsInt64, ...) helpers.
      12                 :  */
      13                 : 
      14                 : ////////////////////////////////////////////////////////////////////////////////
      15                 : //// Event Loop Spinning
      16                 : 
      17                 : class Spinner : public AsyncStatementSpinner
      18                 : {
      19                 : public:
      20                 :   NS_DECL_ISUPPORTS
      21                 :   NS_DECL_ASYNCSTATEMENTSPINNER
      22               1 :   Spinner() {}
      23                 : };
      24                 : 
      25               7 : NS_IMPL_ISUPPORTS_INHERITED0(Spinner,
      26                 :                              AsyncStatementSpinner)
      27                 : 
      28                 : NS_IMETHODIMP
      29               0 : Spinner::HandleResult(mozIStorageResultSet *aResultSet)
      30                 : {
      31               0 :   nsCOMPtr<mozIStorageRow> row;
      32               0 :   do_check_true(NS_SUCCEEDED(aResultSet->GetNextRow(getter_AddRefs(row))) && row);
      33                 : 
      34               0 :   do_check_eq(row->AsInt32(0), 0);
      35               0 :   do_check_eq(row->AsInt64(0), 0);
      36               0 :   do_check_eq(row->AsDouble(0), 0.0);
      37                 : 
      38               0 :   PRUint32 len = 100;
      39               0 :   do_check_eq(row->AsSharedUTF8String(0, &len), nsnull);
      40               0 :   do_check_eq(len, 0);
      41               0 :   len = 100;
      42               0 :   do_check_eq(row->AsSharedWString(0, &len), nsnull);
      43               0 :   do_check_eq(len, 0);
      44               0 :   len = 100;
      45               0 :   do_check_eq(row->AsSharedBlob(0, &len), nsnull);
      46               0 :   do_check_eq(len, 0);
      47                 : 
      48               0 :   do_check_eq(row->IsNull(0), true);
      49               0 :   return NS_OK;
      50                 : }
      51                 : 
      52                 : void
      53               1 : test_NULLFallback()
      54                 : {
      55               2 :   nsCOMPtr<mozIStorageConnection> db(getMemoryDatabase());
      56                 : 
      57               2 :   nsCOMPtr<mozIStorageStatement> stmt;
      58               2 :   (void)db->CreateStatement(NS_LITERAL_CSTRING(
      59                 :     "SELECT NULL"
      60               2 :   ), getter_AddRefs(stmt));
      61                 : 
      62               2 :   nsCOMPtr<mozIStorageValueArray> valueArray = do_QueryInterface(stmt);
      63               1 :   do_check_true(valueArray);
      64                 : 
      65                 :   bool hasMore;
      66               1 :   do_check_true(NS_SUCCEEDED(stmt->ExecuteStep(&hasMore)) && hasMore);
      67                 : 
      68               1 :   do_check_eq(stmt->AsInt32(0), 0);
      69               1 :   do_check_eq(stmt->AsInt64(0), 0);
      70               1 :   do_check_eq(stmt->AsDouble(0), 0.0);
      71               1 :   PRUint32 len = 100;
      72               1 :   do_check_eq(stmt->AsSharedUTF8String(0, &len), nsnull);
      73               1 :   do_check_eq(len, 0);
      74               1 :   len = 100;
      75               1 :   do_check_eq(stmt->AsSharedWString(0, &len), nsnull);
      76               1 :   do_check_eq(len, 0);
      77               1 :   len = 100;
      78               1 :   do_check_eq(stmt->AsSharedBlob(0, &len), nsnull);
      79               1 :   do_check_eq(len, 0);
      80               1 :   do_check_eq(stmt->IsNull(0), true);
      81                 : 
      82               1 :   do_check_eq(valueArray->AsInt32(0), 0);
      83               1 :   do_check_eq(valueArray->AsInt64(0), 0);
      84               1 :   do_check_eq(valueArray->AsDouble(0), 0.0);
      85               1 :   len = 100;
      86               1 :   do_check_eq(valueArray->AsSharedUTF8String(0, &len), nsnull);
      87               1 :   do_check_eq(len, 0);
      88               1 :   len = 100;
      89               1 :   do_check_eq(valueArray->AsSharedWString(0, &len), nsnull);
      90               1 :   do_check_eq(len, 0);
      91               1 :   len = 100;
      92               1 :   do_check_eq(valueArray->AsSharedBlob(0, &len), nsnull);
      93               1 :   do_check_eq(len, 0);
      94               1 :   do_check_eq(valueArray->IsNull(0), true);
      95               1 : }
      96                 : 
      97                 : void
      98               1 : test_asyncNULLFallback()
      99                 : {
     100               2 :   nsCOMPtr<mozIStorageConnection> db(getMemoryDatabase());
     101                 : 
     102               2 :   nsCOMPtr<mozIStorageAsyncStatement> stmt;
     103               2 :   (void)db->CreateAsyncStatement(NS_LITERAL_CSTRING(
     104                 :     "SELECT NULL"
     105               2 :   ), getter_AddRefs(stmt));
     106                 : 
     107               2 :   nsCOMPtr<mozIStoragePendingStatement> pendingStmt;
     108               1 :   do_check_true(NS_SUCCEEDED(stmt->ExecuteAsync(nsnull, getter_AddRefs(pendingStmt))));
     109               1 :   do_check_true(pendingStmt);
     110               1 :   stmt->Finalize();
     111               2 :   nsRefPtr<Spinner> asyncSpin(new Spinner());
     112               1 :   db->AsyncClose(asyncSpin);
     113               1 :   asyncSpin->SpinUntilCompleted();
     114                 : 
     115               1 : }
     116                 : 
     117                 : void (*gTests[])(void) = {
     118                 :   test_NULLFallback
     119                 : , test_asyncNULLFallback
     120                 : };
     121                 : 
     122                 : const char *file = __FILE__;
     123                 : #define TEST_NAME "AsXXX helpers"
     124                 : #define TEST_FILE file
     125                 : #include "storage_test_harness_tail.h"

Generated by: LCOV version 1.7