gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-wallet-webex] 06/07: idb: extend test case


From: gnunet
Subject: [GNUnet-SVN] [taler-wallet-webex] 06/07: idb: extend test case
Date: Tue, 25 Jun 2019 14:32:01 +0200

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository wallet-webex.

commit df5619236b7328ce7cfb5d130948aa5200983919
Author: Florian Dold <address@hidden>
AuthorDate: Tue Jun 25 13:44:03 2019 +0200

    idb: extend test case
---
 packages/idb-bridge/src/MemoryBackend.test.ts | 17 +++++++++++++++++
 packages/idb-bridge/src/MemoryBackend.ts      | 11 ++++++++++-
 packages/idb-bridge/src/tree/interfaces.ts    |  2 +-
 3 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/packages/idb-bridge/src/MemoryBackend.test.ts 
b/packages/idb-bridge/src/MemoryBackend.test.ts
index 2e322dfa..c21c2d06 100644
--- a/packages/idb-bridge/src/MemoryBackend.test.ts
+++ b/packages/idb-bridge/src/MemoryBackend.test.ts
@@ -214,6 +214,23 @@ test("Spec: Example 1 Part 3", async t => {
   cursor = request6.result;
   t.is(cursor, null);
 
+
+  const request7 = index5.openCursor(null, "prevunique");
+  await promiseFromRequest(request7);
+  cursor = request7.result;
+  t.is(cursor.value.author, "Fred");
+  t.is(cursor.value.isbn, 234567);
+  cursor.continue();
+
+  await promiseFromRequest(request7);
+  cursor = request7.result;
+  t.is(cursor.value.author, "Barney");
+  cursor.continue();
+
+  await promiseFromRequest(request7);
+  cursor = request7.result;
+  t.is(cursor, null);
+
   db.close();
 
   t.pass();
diff --git a/packages/idb-bridge/src/MemoryBackend.ts 
b/packages/idb-bridge/src/MemoryBackend.ts
index 786fa4cf..694daacf 100644
--- a/packages/idb-bridge/src/MemoryBackend.ts
+++ b/packages/idb-bridge/src/MemoryBackend.ts
@@ -640,7 +640,16 @@ export class MemoryBackend implements Backend {
     objectStoreProperties.indexes.push(indexName);
     schema.indexes[indexName] = indexProperties;
 
-    // FIXME: build index from existing object store!
+    const objectStore = myConn.objectStoreMap[objectStoreName];
+    if (!objectStore) {
+      throw Error("object store does not exist");
+    }
+
+    const storeData = objectStore.modifiedData || objectStore.originalData;
+
+    storeData.forEach((v, k) => {
+      this.insertIntoIndex(newIndex, k, v.value, indexProperties);
+    });
   }
 
   async deleteRecord(
diff --git a/packages/idb-bridge/src/tree/interfaces.ts 
b/packages/idb-bridge/src/tree/interfaces.ts
index c708c20b..6bd0cdf5 100644
--- a/packages/idb-bridge/src/tree/interfaces.ts
+++ b/packages/idb-bridge/src/tree/interfaces.ts
@@ -53,7 +53,7 @@ export interface IMapSource<K=any, V=any> extends 
ISetSource<K>
   /** Calls callbackFn once for each key-value pair present in the map object.
    *  The ES6 Map class sends the value to the callback before the key, so
    *  this interface must do likewise. */
-  forEach(callbackFn: (v:V, k:K, map:IMapSource<K,V>) => void, thisArg: any): 
void;
+  forEach(callbackFn: (v:V, k:K, map:IMapSource<K,V>) => void, thisArg?: any): 
void;
   
   /** Returns an iterator that provides all key-value pairs from the 
collection (as arrays of length 2). */
   entries(): IterableIterator<[K,V]>;

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]