gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] branch master updated (6ef5fd21 -> 8da58bd4)


From: gnunet
Subject: [taler-wallet-core] branch master updated (6ef5fd21 -> 8da58bd4)
Date: Mon, 08 Nov 2021 15:52:41 +0100

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

dold pushed a change to branch master
in repository wallet-core.

    from 6ef5fd21 some solve challenge examples, WIP
     new 6d7fffc2 anastasis-webui: remove Taler logo
     new 8da58bd4 anastasis-core: fix policy suggestion and add test case

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 packages/anastasis-core/src/anastasis-data.ts      |  9 +++++
 .../anastasis-core/src/policy-suggestion.test.ts   | 44 ++++++++++++++++++++++
 packages/anastasis-core/src/policy-suggestion.ts   | 25 +++++++++---
 .../src/components/menu/NavigationBar.tsx          |  3 --
 4 files changed, 72 insertions(+), 9 deletions(-)
 create mode 100644 packages/anastasis-core/src/policy-suggestion.test.ts

diff --git a/packages/anastasis-core/src/anastasis-data.ts 
b/packages/anastasis-core/src/anastasis-data.ts
index 4946e9df..e24cdc8a 100644
--- a/packages/anastasis-core/src/anastasis-data.ts
+++ b/packages/anastasis-core/src/anastasis-data.ts
@@ -1,6 +1,7 @@
 // This file is auto-generated, do not modify.
 // Generated from v0.2.0-4-g61ea83c on Tue, 05 Oct 2021 10:40:32 +0200
 // To re-generate, run contrib/gen-ts.sh from the main anastasis code base.
+// XXX: Modified for demo, allowing demo providers for EUR
 
 export const anastasisData = {
   providersList: {
@@ -15,6 +16,14 @@ export const anastasisData = {
         url: "https://kudos.demo.anastasis.lu/";,
         currency: "KUDOS",
       },
+      {
+        url: "https://anastasis.demo.taler.net/";,
+        currency: "EUR",
+      },
+      {
+        url: "https://kudos.demo.anastasis.lu/";,
+        currency: "EUR",
+      },
       {
         url: "http://localhost:8086/";,
         currency: "TESTKUDOS",
diff --git a/packages/anastasis-core/src/policy-suggestion.test.ts 
b/packages/anastasis-core/src/policy-suggestion.test.ts
new file mode 100644
index 00000000..6370825d
--- /dev/null
+++ b/packages/anastasis-core/src/policy-suggestion.test.ts
@@ -0,0 +1,44 @@
+import { j2s } from "@gnu-taler/taler-util";
+import test from "ava";
+import { ProviderInfo, suggestPolicies } from "./policy-suggestion.js";
+
+test("policy suggestion", async (t) => {
+  const methods = [
+    {
+      challenge: "XXX",
+      instructions: "SMS to 123",
+      type: "sms",
+    },
+    {
+      challenge: "XXX",
+      instructions: "What is the meaning of life?",
+      type: "question",
+    },
+    {
+      challenge: "XXX",
+      instructions: "email to foo@bar.com",
+      type: "email",
+    },
+  ];
+  const providers: ProviderInfo[] = [
+    {
+      methodCost: {
+        sms: "KUDOS:1",
+      },
+      url: "prov1",
+    },
+    {
+      methodCost: {
+        question: "KUDOS:1",
+      },
+      url: "prov2",
+    },
+  ];
+  const res1 = suggestPolicies(methods, providers);
+  t.assert(res1.policies.length === 1);
+  const res2 = suggestPolicies([...methods].reverse(), providers);
+  t.assert(res2.policies.length === 1);
+
+  const res3 = suggestPolicies(methods, [...providers].reverse());
+  t.assert(res3.policies.length === 1);
+});
diff --git a/packages/anastasis-core/src/policy-suggestion.ts 
b/packages/anastasis-core/src/policy-suggestion.ts
index 7eb6c21c..2c25caaa 100644
--- a/packages/anastasis-core/src/policy-suggestion.ts
+++ b/packages/anastasis-core/src/policy-suggestion.ts
@@ -84,9 +84,16 @@ function assignProviders(
   for (const provSel of providerSelections) {
     // First, check if selection is even possible with the methods offered
     let possible = true;
-    for (const methIndex in provSel) {
-      const provIndex = provSel[methIndex];
+    for (const methSelIndex in provSel) {
+      const provIndex = provSel[methSelIndex];
+      if (typeof provIndex !== "number") {
+        throw Error("invariant failed");
+      }
+      const methIndex = methodSelection[methSelIndex];
       const meth = methods[methIndex];
+      if (!meth) {
+        throw Error("invariant failed");
+      }
       const prov = providers[provIndex];
       if (!prov.methodCost[meth.type]) {
         possible = false;
@@ -96,7 +103,6 @@ function assignProviders(
     if (!possible) {
       continue;
     }
-
     // Evaluate diversity, always prefer policies
     // that increase diversity.
     const providerSet = new Set<string>();
@@ -163,9 +169,18 @@ function assignProviders(
 
 /**
  * A provider selection maps a method selection index to a provider index.
+ *
+ * I.e. "PSEL[i] = x" means that provider with index "x" should be used
+ * for method with index "MSEL[i]"
  */
 type ProviderSelection = number[];
 
+/**
+ * A method selection "MSEL[j] = y" means that policy method j
+ * should use method y.
+ */
+type MethodSelection = number[];
+
 /**
  * Compute provider mappings.
  * Enumerates all n-combinations with repetition of m providers.
@@ -184,7 +199,7 @@ function enumerateProviderMappings(
     }
     for (let j = start; j < m; j++) {
       a[i] = j;
-      sel(i + 1, j);
+      sel(i + 1, 0);
       if (limit && selections.length >= limit) {
         break;
       }
@@ -199,8 +214,6 @@ interface PolicySelectionResult {
   policy_providers: PolicyProvider[];
 }
 
-type MethodSelection = number[];
-
 /**
  * Compute method selections.
  * Enumerates all n-combinations without repetition of m methods.
diff --git a/packages/anastasis-webui/src/components/menu/NavigationBar.tsx 
b/packages/anastasis-webui/src/components/menu/NavigationBar.tsx
index 935951ab..c07f04ab 100644
--- a/packages/anastasis-webui/src/components/menu/NavigationBar.tsx
+++ b/packages/anastasis-webui/src/components/menu/NavigationBar.tsx
@@ -44,9 +44,6 @@ export function NavigationBar({ onMobileMenu, title }: 
Props): VNode {
     </div>
 
     <div class="navbar-menu ">
-      <a class="navbar-start is-justify-content-center is-flex-grow-1" 
href="https://taler.net";>
-        <img src={logo} style={{ height: 50, maxHeight: 50 }} />
-      </a>
       <div class="navbar-end">
         <div class="navbar-item" style={{ paddingTop: 4, paddingBottom: 4 }}>
           {/* <LangSelector /> */}

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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