Tracer build fixes. (b=588021, r=dvander)
[mozilla-central.git] / storage / test / test_AsXXX_helpers.cpp
blob897dac93c0b8e983c99a0795af918e64f0a0d55a
1 /*
2 *Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/publicdomain/zero/1.0/
4 */
6 #include "storage_test_harness.h"
7 #include "mozIStorageRow.h"
8 #include "mozIStorageResultSet.h"
10 /**
11 * This file tests AsXXX (AsInt32, AsInt64, ...) helpers.
14 ////////////////////////////////////////////////////////////////////////////////
15 //// Event Loop Spinning
17 class Spinner : public AsyncStatementSpinner
19 public:
20 NS_DECL_ISUPPORTS
21 NS_DECL_ASYNCSTATEMENTSPINNER
22 Spinner() {}
25 NS_IMPL_ISUPPORTS_INHERITED0(Spinner,
26 AsyncStatementSpinner)
28 NS_IMETHODIMP
29 Spinner::HandleResult(mozIStorageResultSet *aResultSet)
31 nsCOMPtr<mozIStorageRow> row;
32 do_check_true(NS_SUCCEEDED(aResultSet->GetNextRow(getter_AddRefs(row))) && row);
34 do_check_eq(row->AsInt32(0), 0);
35 do_check_eq(row->AsInt64(0), 0);
36 do_check_eq(row->AsDouble(0), 0.0);
38 PRUint32 len = 100;
39 do_check_eq(row->AsSharedUTF8String(0, &len), nsnull);
40 do_check_eq(len, 0);
41 len = 100;
42 do_check_eq(row->AsSharedWString(0, &len), nsnull);
43 do_check_eq(len, 0);
44 len = 100;
45 do_check_eq(row->AsSharedBlob(0, &len), nsnull);
46 do_check_eq(len, 0);
48 do_check_eq(row->IsNull(0), PR_TRUE);
49 return NS_OK;
52 void
53 test_NULLFallback()
55 nsCOMPtr<mozIStorageConnection> db(getMemoryDatabase());
57 nsCOMPtr<mozIStorageStatement> stmt;
58 (void)db->CreateStatement(NS_LITERAL_CSTRING(
59 "SELECT NULL"
60 ), getter_AddRefs(stmt));
62 nsCOMPtr<mozIStorageValueArray> valueArray = do_QueryInterface(stmt);
63 do_check_true(valueArray);
65 PRBool hasMore;
66 do_check_true(NS_SUCCEEDED(stmt->ExecuteStep(&hasMore)) && hasMore);
68 do_check_eq(stmt->AsInt32(0), 0);
69 do_check_eq(stmt->AsInt64(0), 0);
70 do_check_eq(stmt->AsDouble(0), 0.0);
71 PRUint32 len = 100;
72 do_check_eq(stmt->AsSharedUTF8String(0, &len), nsnull);
73 do_check_eq(len, 0);
74 len = 100;
75 do_check_eq(stmt->AsSharedWString(0, &len), nsnull);
76 do_check_eq(len, 0);
77 len = 100;
78 do_check_eq(stmt->AsSharedBlob(0, &len), nsnull);
79 do_check_eq(len, 0);
80 do_check_eq(stmt->IsNull(0), PR_TRUE);
82 do_check_eq(valueArray->AsInt32(0), 0);
83 do_check_eq(valueArray->AsInt64(0), 0);
84 do_check_eq(valueArray->AsDouble(0), 0.0);
85 len = 100;
86 do_check_eq(valueArray->AsSharedUTF8String(0, &len), nsnull);
87 do_check_eq(len, 0);
88 len = 100;
89 do_check_eq(valueArray->AsSharedWString(0, &len), nsnull);
90 do_check_eq(len, 0);
91 len = 100;
92 do_check_eq(valueArray->AsSharedBlob(0, &len), nsnull);
93 do_check_eq(len, 0);
94 do_check_eq(valueArray->IsNull(0), PR_TRUE);
97 void
98 test_asyncNULLFallback()
100 nsCOMPtr<mozIStorageConnection> db(getMemoryDatabase());
102 nsCOMPtr<mozIStorageStatement> stmt;
103 (void)db->CreateStatement(NS_LITERAL_CSTRING(
104 "SELECT NULL"
105 ), getter_AddRefs(stmt));
107 nsRefPtr<Spinner> asyncSpin(new Spinner());
108 nsCOMPtr<mozIStoragePendingStatement> pendingStmt;
109 do_check_true(NS_SUCCEEDED(stmt->ExecuteAsync(asyncSpin, getter_AddRefs(pendingStmt))));
110 do_check_true(pendingStmt);
111 asyncSpin->SpinUntilCompleted();
115 void (*gTests[])(void) = {
116 test_NULLFallback
117 , test_asyncNULLFallback
120 const char *file = __FILE__;
121 #define TEST_NAME "AsXXX helpers"
122 #define TEST_FILE file
123 #include "storage_test_harness_tail.h"