diff --git a/source/engine/mecanisms.js b/source/engine/mecanisms.js index 0d316ad2a..955f81a5f 100644 --- a/source/engine/mecanisms.js +++ b/source/engine/mecanisms.js @@ -183,8 +183,9 @@ export let mecanismNumericalSwitch = (recurse, k,v) => { } let evaluateTerms = (situationGate, parsedRules, node) => { - let evaluateOne = child => evaluateNode(situationGate, parsedRules, child), - explanation = R.map(evaluateOne, node.explanation), + let + evaluateOne = child => evaluateNode(situationGate, parsedRules, child), + explanation = R.map(evaluateOne, node.explanation), choice = R.find(node => node.condValue, explanation), nonFalsyTerms = R.filter(node => node.condValue !== false, explanation), getFirst = (prop) => R.pipe(R.head, R.prop(prop))(nonFalsyTerms), diff --git a/test/load-mecanism-tests.js b/test/load-mecanism-tests.js index 8ead0d25a..760ac1bf7 100644 --- a/test/load-mecanism-tests.js +++ b/test/load-mecanism-tests.js @@ -19,5 +19,5 @@ let directoryLoaderFunction = let items = loadAll(directoryLoaderFunction) - +console.log('items', items) export default items diff --git a/test/mécanismes/aiguillage-numérique.yaml b/test/mécanismes/aiguillage-numérique.yaml index 9247670cb..28680df9d 100644 --- a/test/mécanismes/aiguillage-numérique.yaml +++ b/test/mécanismes/aiguillage-numérique.yaml @@ -1,39 +1,64 @@ -# Attendus -# 'should set the right value to a numerical switch when a condition is verified' -# should set a numerical switch to 0 if no condition is true +# Utiliser http://romainvaleri.online.fr/ pour se donner des idées de noms de variables originales -# Utiliser http://romainvaleri.online.fr/ pour rigoler un peu +- nom: dégradation mineure +- nom: dégradation majeure -- nom: taulard cyclothymique - -- nom: nombre de gigolos rachitiques - format: nombre - -- nom: aiguillage numérique simple - +- nom: retenue sur dépot de garantie 1 + test: Aiguillage numérique simple formule: aiguillage numérique: - taulard cyclothymique: 3% - nombre de gigolos rachitiques > 1800 : 1.5% + dégradation mineure: 10% + dégradation majeure: 30% exemples: - nom: le premier aiguillage est activé -> sa valeur est renvoyée situation: - taulard cyclothymique: oui - nombre de gigolos rachitiques: 1789 - valeur attendue: 0.03 + dégradation mineure: oui + valeur attendue: 0.1 - nom: seul le 2ème aiguillage est activé situation: - taulard cyclothymique: non - nombre de gigolos rachitiques: 1801 - valeur attendue: 0.015 + dégradation mineure: non + dégradation majeure: oui + valeur attendue: 0.3 - nom: aucun aiguillage n'est activé situation: - taulard cyclothymique: non - nombre de gigolos rachitiques: 1789 + dégradation mineure: non + dégradation majeure: non valeur attendue: 0 + - nom: L'ordre des termes est important + situation: + dégradation mineure: null + dégradation majeure: oui + valeur attendue: null + + +- nom: montant caution + format: € + +- nom: retenue sur dépot de garantie 2 + test: Aiguillages numériques imbriqués + formule: + aiguillage numérique: + dégradation mineure: 5% + dégradation majeure: + montant caution > 2000: 20% + montant caution > 1000: 10% + + + exemples: + - nom: imbrication simple + situation: + dégradation mineure: oui + dégradation majeure: non + montant caution: 3000 + valeur attendue: 0.05 + - nom: imbrication simple 2 + situation: + dégradation mineure: non + dégradation majeure: oui + montant caution: 1200 + valeur attendue: 0.10 -# tester une imbrication d ' aiguillages # pouvoir tester les variables inconnues mais requises ? diff --git a/test/mécanismes/somme.yaml b/test/mécanismes/somme.yaml index 313d727bb..9c6a8c399 100644 --- a/test/mécanismes/somme.yaml +++ b/test/mécanismes/somme.yaml @@ -10,21 +10,21 @@ - farine - sucre - # exemples: - # - nom: somme simple - # situation: - # farine: 29000 - # sucre: 200 - # valeur attendue: 29200 - # - nom: un nul dans la somme - # situation: - # sucre: 200 - # valeur attendue: null - # - nom: une somme de nuls - # situation: # pas de situation - # valeur attendue: null - # - nom: un entier + un flotant - # situation: - # farine: 2.1 - # sucre: 200 - # valeur attendue: 202.1 + exemples: + - nom: somme simple + situation: + farine: 29000 + sucre: 200 + valeur attendue: 29200 + - nom: un nul dans la somme + situation: + sucre: 200 + valeur attendue: null + - nom: une somme de nuls + situation: # pas de situation + valeur attendue: null + - nom: un entier + un flotant + situation: + farine: 2.1 + sucre: 200 + valeur attendue: 202.1