2 *Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/publicdomain/zero/1.0/
6 #include "storage_test_harness.h"
7 #include "mozIStorageRow.h"
8 #include "mozIStorageResultSet.h"
11 * This file tests AsXXX (AsInt32, AsInt64, ...) helpers.
14 ////////////////////////////////////////////////////////////////////////////////
15 //// Event Loop Spinning
17 class Spinner
: public AsyncStatementSpinner
21 NS_DECL_ASYNCSTATEMENTSPINNER
25 NS_IMPL_ISUPPORTS_INHERITED0(Spinner
,
26 AsyncStatementSpinner
)
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);
39 do_check_eq(row
->AsSharedUTF8String(0, &len
), '\0');
42 do_check_eq(row
->AsSharedWString(0, &len
), '\0');
45 do_check_eq(row
->AsSharedBlob(0, &len
), '\0');
48 do_check_eq(row
->IsNull(0), true);
55 nsCOMPtr
<mozIStorageConnection
> db(getMemoryDatabase());
57 nsCOMPtr
<mozIStorageStatement
> stmt
;
58 (void)db
->CreateStatement(NS_LITERAL_CSTRING(
60 ), getter_AddRefs(stmt
));
62 nsCOMPtr
<mozIStorageValueArray
> valueArray
= do_QueryInterface(stmt
);
63 do_check_true(valueArray
);
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);
72 do_check_eq(stmt
->AsSharedUTF8String(0, &len
), '\0');
75 do_check_eq(stmt
->AsSharedWString(0, &len
), '\0');
78 do_check_eq(stmt
->AsSharedBlob(0, &len
), '\0');
80 do_check_eq(stmt
->IsNull(0), 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);
86 do_check_eq(valueArray
->AsSharedUTF8String(0, &len
), '\0');
89 do_check_eq(valueArray
->AsSharedWString(0, &len
), '\0');
92 do_check_eq(valueArray
->AsSharedBlob(0, &len
), '\0');
94 do_check_eq(valueArray
->IsNull(0), true);
98 test_asyncNULLFallback()
100 nsCOMPtr
<mozIStorageConnection
> db(getMemoryDatabase());
102 nsCOMPtr
<mozIStorageAsyncStatement
> stmt
;
103 (void)db
->CreateAsyncStatement(NS_LITERAL_CSTRING(
105 ), getter_AddRefs(stmt
));
107 nsCOMPtr
<mozIStoragePendingStatement
> pendingStmt
;
108 do_check_true(NS_SUCCEEDED(stmt
->ExecuteAsync(nullptr, getter_AddRefs(pendingStmt
))));
109 do_check_true(pendingStmt
);
111 nsRefPtr
<Spinner
> asyncSpin(new Spinner());
112 db
->AsyncClose(asyncSpin
);
113 asyncSpin
->SpinUntilCompleted();
117 void (*gTests
[])(void) = {
119 , test_asyncNULLFallback
122 const char *file
= __FILE__
;
123 #define TEST_NAME "AsXXX helpers"
124 #define TEST_FILE file
125 #include "storage_test_harness_tail.h"