@open3cl/engine 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/11_nadeq.spec.js +3 -2
- package/16.2_production_enr.spec.js +1 -0
- package/3.2.1_mur.spec.js +1 -0
- package/3.2.2_plancher_bas.spec.js +1 -0
- package/3.3_baie_vitree.spec.js +1 -0
- package/6.1_apport_gratuit.spec.js +1 -0
- package/7_inertie.spec.js +4 -3
- package/9_chauffage.spec.js +1 -0
- package/9_conso_ch.spec.js +1 -0
- package/9_generateur_ch.spec.js +1 -0
- package/conso.spec.js +1 -0
- package/core/assets/domain/synchronize-assets.spec.js +9 -9
- package/core/assets/domain/synchronize-c1-tables.spec.js +4 -4
- package/core/assets/domain/synchronize-dpe-ges-limit-values-tables.spec.js +6 -6
- package/core/assets/domain/synchronize-enum-tables.spec.js +10 -10
- package/core/assets/domain/synchronize-solicitations-tables.spec.js +6 -6
- package/core/assets/domain/synchronize-valeur-tables.spec.js +14 -14
- package/core/file/infrastructure/adapter/file.store.spec.js +5 -4
- package/core/tv/infrastructure/tvs.store.spec.js +3 -2
- package/core/util/infrastructure/object-util.spec.js +2 -1
- package/core/util/logger/log-service.js +47 -0
- package/features/dpe/domain/models/baie-ets.model.ts +12 -0
- package/features/dpe/domain/models/baie-vitree.model.ts +97 -0
- package/features/dpe/domain/models/climatisation.model.ts +25 -0
- package/features/dpe/domain/models/dpe.model.ts +194 -0
- package/features/dpe/domain/models/ets.model.ts +19 -0
- package/features/dpe/domain/models/installation-chauffage.model.ts +101 -0
- package/features/dpe/domain/models/installation-ecs.model.ts +76 -0
- package/features/dpe/domain/models/mur.model.ts +37 -0
- package/features/dpe/domain/models/plancher-bas.model.ts +38 -0
- package/features/dpe/domain/models/plancher-haut.model.ts +33 -0
- package/features/dpe/domain/models/pont-thermique.model.ts +21 -0
- package/features/dpe/domain/models/porte.model.ts +31 -0
- package/features/dpe/domain/models/production-elec-enr.model.ts +27 -0
- package/features/dpe/domain/models/sortie.model.ts +178 -0
- package/features/dpe/domain/models/type-habitation.model.js +8 -0
- package/features/dpe/domain/models/type-ventilation.model.js +8 -0
- package/features/dpe/domain/models/ventilation.model.ts +33 -0
- package/features/dpe/infrastructure/baieVitreeTv.store.js +292 -0
- package/features/dpe/infrastructure/baieVitreeTv.store.spec.js +352 -0
- package/features/dpe/infrastructure/tv.store.js +356 -0
- package/features/dpe/infrastructure/tv.store.spec.js +607 -0
- package/features/engine/domain/constants.js +1 -0
- package/features/engine/domain/contexte.builder.js +140 -0
- package/features/engine/domain/contexte.builder.spec.js +152 -0
- package/features/engine/domain/engine.service.js +139 -0
- package/features/engine/domain/engine.service.spec.js +7 -0
- package/features/engine/domain/enveloppe/baie_vitree/deperdition-baie-vitree.service.js +292 -0
- package/features/engine/domain/enveloppe/baie_vitree/deperdition-baie-vitree.service.spec.js +484 -0
- package/features/engine/domain/enveloppe/deperdition-enveloppe.service.js +278 -0
- package/features/engine/domain/enveloppe/deperdition-enveloppe.service.spec.js +282 -0
- package/features/engine/domain/enveloppe/deperdition.service.js +101 -0
- package/features/engine/domain/enveloppe/mur/deperdition-mur.service.js +168 -0
- package/features/engine/domain/enveloppe/mur/deperdition-mur.service.spec.js +345 -0
- package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.js +169 -0
- package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.spec.js +200 -0
- package/features/engine/domain/enveloppe/plancher_haut/deperdition-plancher-haut.service.js +136 -0
- package/features/engine/domain/enveloppe/plancher_haut/deperdition-plancher-haut.service.spec.js +211 -0
- package/features/engine/domain/enveloppe/porte/deperdition-porte.service.js +56 -0
- package/features/engine/domain/enveloppe/porte/deperdition-porte.service.spec.js +116 -0
- package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.js +338 -0
- package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.spec.js +442 -0
- package/features/engine/domain/models/contexte.model.ts +10 -0
- package/features/engine/domain/models/deperdition.model.ts +8 -0
- package/features/normalizer/domain/dpe-normalizer.service.js +24 -0
- package/features/normalizer/domain/dpe-normalizer.service.spec.js +3 -0
- package/ficheTechnique.spec.js +4 -3
- package/output.js +1 -0
- package/package.json +9 -8
- package/tv-v2.js +79121 -0
- package/utils.js +2 -2
- package/utils.spec.js +4 -3
|
@@ -0,0 +1,607 @@
|
|
|
1
|
+
import { TvStore } from './tv.store.js';
|
|
2
|
+
import { tv } from '../../../utils.js';
|
|
3
|
+
import { beforeEach, describe, expect, test } from 'vitest';
|
|
4
|
+
import { TypeHabitation } from '../domain/models/type-habitation.model.js';
|
|
5
|
+
|
|
6
|
+
/** @type {TvStore} **/
|
|
7
|
+
let tvStore;
|
|
8
|
+
|
|
9
|
+
describe('Lecture des tables de valeurs', () => {
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
tvStore = new TvStore();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
describe('lecture des valeurs de b', () => {
|
|
15
|
+
test.each([
|
|
16
|
+
{ enumTypeAdjacenceId: '1', label: 'extérieur', bExpected: 1 },
|
|
17
|
+
{ enumTypeAdjacenceId: '2', label: 'paroi enterrée', bExpected: 1 },
|
|
18
|
+
{ enumTypeAdjacenceId: '3', label: 'vide sanitaire', bExpected: 1 },
|
|
19
|
+
{
|
|
20
|
+
enumTypeAdjacenceId: '4',
|
|
21
|
+
label: "bâtiment ou local à usage autre que d'habitation",
|
|
22
|
+
bExpected: 0.2
|
|
23
|
+
},
|
|
24
|
+
{ enumTypeAdjacenceId: '5', label: 'terre-plein', bExpected: 1 },
|
|
25
|
+
{ enumTypeAdjacenceId: '6', label: 'sous-sol non chauffé', bExpected: 1 },
|
|
26
|
+
{
|
|
27
|
+
enumTypeAdjacenceId: '7',
|
|
28
|
+
enumCfgIsolationLncId: '1',
|
|
29
|
+
uVue: 3,
|
|
30
|
+
label: 'locaux non chauffés non accessible',
|
|
31
|
+
bExpected: 0.95
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
enumTypeAdjacenceId: '22',
|
|
35
|
+
label: "local non déperditif (local à usage d'habitation chauffé)",
|
|
36
|
+
bExpected: 0
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
enumTypeAdjacenceId: '8',
|
|
40
|
+
uVue: 3,
|
|
41
|
+
enumCfgIsolationLncId: '2',
|
|
42
|
+
rAiuAue: 0.1,
|
|
43
|
+
label: 'garage',
|
|
44
|
+
bExpected: 0.9
|
|
45
|
+
}
|
|
46
|
+
])(
|
|
47
|
+
'b pour $label (id:$enumTypeAdjacenceId)',
|
|
48
|
+
({
|
|
49
|
+
enumTypeAdjacenceId,
|
|
50
|
+
uVue = undefined,
|
|
51
|
+
enumCfgIsolationLncId = undefined,
|
|
52
|
+
rAiuAue = undefined,
|
|
53
|
+
bExpected
|
|
54
|
+
}) => {
|
|
55
|
+
const b = tvStore.getB(enumTypeAdjacenceId, uVue, enumCfgIsolationLncId, rAiuAue);
|
|
56
|
+
expect(b).toBe(bExpected);
|
|
57
|
+
}
|
|
58
|
+
);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
describe('lecture des valeurs de uVue', () => {
|
|
62
|
+
test.each([
|
|
63
|
+
{ enumTypeAdjacenceId: '1', label: 'extérieur', expected: undefined },
|
|
64
|
+
{ enumTypeAdjacenceId: '2', label: 'paroi enterrée', expected: undefined },
|
|
65
|
+
{ enumTypeAdjacenceId: '3', label: 'vide sanitaire', expected: undefined },
|
|
66
|
+
{
|
|
67
|
+
enumTypeAdjacenceId: '4',
|
|
68
|
+
label: "bâtiment ou local à usage autre que d'habitation",
|
|
69
|
+
expected: undefined
|
|
70
|
+
},
|
|
71
|
+
{ enumTypeAdjacenceId: '5', label: 'terre-plein', expected: undefined },
|
|
72
|
+
{ enumTypeAdjacenceId: '6', label: 'sous-sol non chauffé', expected: undefined },
|
|
73
|
+
{
|
|
74
|
+
enumTypeAdjacenceId: '7',
|
|
75
|
+
label: 'locaux non chauffés non accessible',
|
|
76
|
+
expected: undefined
|
|
77
|
+
},
|
|
78
|
+
{ enumTypeAdjacenceId: '8', label: 'garage', expected: 3 },
|
|
79
|
+
{ enumTypeAdjacenceId: '9', label: 'cellier', expected: 3 },
|
|
80
|
+
{
|
|
81
|
+
enumTypeAdjacenceId: '10',
|
|
82
|
+
label: 'espace tampon solarisé (véranda,loggia fermée)',
|
|
83
|
+
expected: undefined
|
|
84
|
+
},
|
|
85
|
+
{ enumTypeAdjacenceId: '11', label: 'comble fortement ventilé', expected: 9 },
|
|
86
|
+
{ enumTypeAdjacenceId: '12', label: 'comble faiblement ventilé', expected: 3 },
|
|
87
|
+
{ enumTypeAdjacenceId: '13', label: 'comble très faiblement ventilé', expected: 0.3 },
|
|
88
|
+
{
|
|
89
|
+
enumTypeAdjacenceId: '14',
|
|
90
|
+
label: "circulation sans ouverture directe sur l'extérieur",
|
|
91
|
+
expected: 0
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
enumTypeAdjacenceId: '15',
|
|
95
|
+
label: "circulation avec ouverture directe sur l'extérieur",
|
|
96
|
+
expected: 0.3
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
enumTypeAdjacenceId: '16',
|
|
100
|
+
label: 'circulation avec bouche ou gaine de désenfumage ouverte en permanence',
|
|
101
|
+
expected: 3
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
enumTypeAdjacenceId: '17',
|
|
105
|
+
label: "hall d'entrée avec dispositif de fermeture automatique",
|
|
106
|
+
expected: 0.3
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
enumTypeAdjacenceId: '18',
|
|
110
|
+
label: "hall d'entrée sans dispositif de fermeture automatique",
|
|
111
|
+
expected: 3
|
|
112
|
+
},
|
|
113
|
+
{ enumTypeAdjacenceId: '19', label: 'garage privé collectif', expected: 3 },
|
|
114
|
+
{
|
|
115
|
+
enumTypeAdjacenceId: '20',
|
|
116
|
+
label: "local tertiaire à l'intérieur de l'immeuble en contact avec l'appartement",
|
|
117
|
+
expected: undefined
|
|
118
|
+
},
|
|
119
|
+
{ enumTypeAdjacenceId: '21', label: 'autres dépendances', expected: 3 },
|
|
120
|
+
{
|
|
121
|
+
enumTypeAdjacenceId: '22',
|
|
122
|
+
label: "local non déperditif (local à usage d'habitation chauffé)",
|
|
123
|
+
expected: undefined
|
|
124
|
+
}
|
|
125
|
+
])('uVue pour $label (id:$enumTypeAdjacenceId)', ({ enumTypeAdjacenceId, expected }) => {
|
|
126
|
+
const uVue = tvStore.getUVue(enumTypeAdjacenceId);
|
|
127
|
+
expect(uVue).toBe(expected);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
describe('lecture des valeurs de umur0', () => {
|
|
132
|
+
test.each([
|
|
133
|
+
{ label: 'mur inconnu', enumMateriauxStructureMurId: '1', expected: 2.5 },
|
|
134
|
+
{
|
|
135
|
+
label: "Murs en pierre de taille et moellons constitué d'un seul matériaux 18cm",
|
|
136
|
+
enumMateriauxStructureMurId: '2',
|
|
137
|
+
epaisseurStructure: 18,
|
|
138
|
+
expected: 3.2
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
label: "Murs en pierre de taille et moellons constitué d'un seul matériaux 37cm",
|
|
142
|
+
enumMateriauxStructureMurId: '2',
|
|
143
|
+
epaisseurStructure: 37,
|
|
144
|
+
expected: 2.45
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
label: "Murs en pierre de taille et moellons constitué d'un seul matériaux 30cm",
|
|
148
|
+
enumMateriauxStructureMurId: '2',
|
|
149
|
+
epaisseurStructure: 30,
|
|
150
|
+
expected: 2.65
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
label: "Murs en pierre de taille et moellons constitué d'un seul matériaux 39cm",
|
|
154
|
+
enumMateriauxStructureMurId: '2',
|
|
155
|
+
epaisseurStructure: 39,
|
|
156
|
+
expected: 2.45
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
label: "Murs en pierre de taille et moellons constitué d'un seul matériaux 98cm",
|
|
160
|
+
enumMateriauxStructureMurId: '2',
|
|
161
|
+
epaisseurStructure: 98,
|
|
162
|
+
expected: 1.5
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
label: 'Murs en pan de bois sans remplissage tout venant',
|
|
166
|
+
enumMateriauxStructureMurId: '5',
|
|
167
|
+
epaisseurStructure: 12,
|
|
168
|
+
expected: 2.7
|
|
169
|
+
}
|
|
170
|
+
])(
|
|
171
|
+
'umur pour $label (id:$enumMateriauxStructureMurId)',
|
|
172
|
+
({ enumMateriauxStructureMurId, epaisseurStructure, expected }) => {
|
|
173
|
+
const umur0 = tvStore.getUmur0(enumMateriauxStructureMurId, epaisseurStructure);
|
|
174
|
+
expect(umur0).toBe(expected);
|
|
175
|
+
}
|
|
176
|
+
);
|
|
177
|
+
|
|
178
|
+
test('pas de valeur de umur0', () => {
|
|
179
|
+
const umur0 = tvStore.getUmur0('0');
|
|
180
|
+
expect(umur0).toBeUndefined();
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
describe('lecture des valeurs de umur', () => {
|
|
185
|
+
test.each([
|
|
186
|
+
{
|
|
187
|
+
label: 'mur année de construction avant 1948 zone climatique h1a',
|
|
188
|
+
enumPeriodeConstructionId: '1',
|
|
189
|
+
enumZoneClimatiqueId: '1',
|
|
190
|
+
expected: 2.5
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
label: 'mur année de construction 1983-1988 zone climatique h1a',
|
|
194
|
+
enumPeriodeConstructionId: '5',
|
|
195
|
+
enumZoneClimatiqueId: '1',
|
|
196
|
+
expected: 0.8
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
label: 'mur année de construction 1983-1988 zone climatique h2a',
|
|
200
|
+
enumPeriodeConstructionId: '5',
|
|
201
|
+
enumZoneClimatiqueId: '4',
|
|
202
|
+
expected: 0.84
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
label: 'mur année de construction 1983-1988 zone climatique h3',
|
|
206
|
+
enumPeriodeConstructionId: '5',
|
|
207
|
+
enumZoneClimatiqueId: '8',
|
|
208
|
+
effetJoule: false,
|
|
209
|
+
expected: 0.89
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
label: 'mur année de construction 1983-1988 zone climatique h1a',
|
|
213
|
+
enumPeriodeConstructionId: '5',
|
|
214
|
+
enumZoneClimatiqueId: '1',
|
|
215
|
+
effetJoule: true,
|
|
216
|
+
expected: 0.7
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
label: 'mur année de construction 1983-1988 zone climatique h2a',
|
|
220
|
+
enumPeriodeConstructionId: '5',
|
|
221
|
+
enumZoneClimatiqueId: '4',
|
|
222
|
+
effetJoule: true,
|
|
223
|
+
expected: 0.74
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
label: 'mur année de construction 1983-1988 zone climatique h3',
|
|
227
|
+
enumPeriodeConstructionId: '5',
|
|
228
|
+
enumZoneClimatiqueId: '8',
|
|
229
|
+
effetJoule: true,
|
|
230
|
+
expected: 0.78
|
|
231
|
+
}
|
|
232
|
+
])(
|
|
233
|
+
'umur pour $label',
|
|
234
|
+
({ enumPeriodeConstructionId, enumZoneClimatiqueId, effetJoule, expected }) => {
|
|
235
|
+
const umur = tvStore.getUmur(enumPeriodeConstructionId, enumZoneClimatiqueId, effetJoule);
|
|
236
|
+
expect(umur).toBe(expected);
|
|
237
|
+
}
|
|
238
|
+
);
|
|
239
|
+
|
|
240
|
+
test('pas de valeur de umur', () => {
|
|
241
|
+
const umur = tvStore.getUmur('0', '1', true);
|
|
242
|
+
expect(umur).toBeUndefined();
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
describe('lecture des valeurs de upb0', () => {
|
|
247
|
+
test.each([
|
|
248
|
+
{ enumTypePlancherBasId: '1', expected: 2 },
|
|
249
|
+
{ enumTypePlancherBasId: '2', expected: 1.45 },
|
|
250
|
+
{ enumTypePlancherBasId: '3', expected: 1.45 },
|
|
251
|
+
{ enumTypePlancherBasId: '4', expected: 1.1 },
|
|
252
|
+
{ enumTypePlancherBasId: '5', expected: 1.6 },
|
|
253
|
+
{ enumTypePlancherBasId: '6', expected: 1.1 },
|
|
254
|
+
{ enumTypePlancherBasId: '7', expected: 1.75 },
|
|
255
|
+
{ enumTypePlancherBasId: '8', expected: 0.8 },
|
|
256
|
+
{ enumTypePlancherBasId: '9', expected: 2 },
|
|
257
|
+
{ enumTypePlancherBasId: '10', expected: 1.6 },
|
|
258
|
+
{ enumTypePlancherBasId: '11', expected: 2 },
|
|
259
|
+
{ enumTypePlancherBasId: '12', expected: 0.45 }
|
|
260
|
+
])(
|
|
261
|
+
'upb0 pour type plancher bas $enumTypePlancherBasId',
|
|
262
|
+
({ enumTypePlancherBasId, expected }) => {
|
|
263
|
+
const upb0 = tvStore.getUpb0(enumTypePlancherBasId);
|
|
264
|
+
expect(upb0).toBe(expected);
|
|
265
|
+
}
|
|
266
|
+
);
|
|
267
|
+
|
|
268
|
+
test('pas de valeur de upb0', () => {
|
|
269
|
+
const upb0 = tvStore.getUpb0('0');
|
|
270
|
+
expect(upb0).toBeUndefined();
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
describe('lecture des valeurs de upb', () => {
|
|
275
|
+
test.each([
|
|
276
|
+
{
|
|
277
|
+
label: 'pb année de construction avant 1948 zone climatique h1a',
|
|
278
|
+
enumPeriodeConstructionId: '1',
|
|
279
|
+
enumZoneClimatiqueId: '1',
|
|
280
|
+
expected: 2
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
label: 'pb année de construction 1983-1988 zone climatique h1a',
|
|
284
|
+
enumPeriodeConstructionId: '5',
|
|
285
|
+
enumZoneClimatiqueId: '1',
|
|
286
|
+
expected: 0.8
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
label: 'pb année de construction 1983-1988 zone climatique h2a',
|
|
290
|
+
enumPeriodeConstructionId: '5',
|
|
291
|
+
enumZoneClimatiqueId: '4',
|
|
292
|
+
expected: 0.74
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
label: 'pb année de construction 1983-1988 zone climatique h3',
|
|
296
|
+
enumPeriodeConstructionId: '5',
|
|
297
|
+
enumZoneClimatiqueId: '8',
|
|
298
|
+
effetJoule: false,
|
|
299
|
+
expected: 0.89
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
label: 'pb année de construction 1983-1988 zone climatique h1a',
|
|
303
|
+
enumPeriodeConstructionId: '5',
|
|
304
|
+
enumZoneClimatiqueId: '1',
|
|
305
|
+
effetJoule: true,
|
|
306
|
+
expected: 0.55
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
label: 'pb année de construction 1983-1988 zone climatique h2a',
|
|
310
|
+
enumPeriodeConstructionId: '5',
|
|
311
|
+
enumZoneClimatiqueId: '4',
|
|
312
|
+
effetJoule: true,
|
|
313
|
+
expected: 0.58
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
label: 'pb année de construction 1983-1988 zone climatique h3',
|
|
317
|
+
enumPeriodeConstructionId: '5',
|
|
318
|
+
enumZoneClimatiqueId: '8',
|
|
319
|
+
effetJoule: true,
|
|
320
|
+
expected: 0.78
|
|
321
|
+
}
|
|
322
|
+
])(
|
|
323
|
+
'upb pour $label',
|
|
324
|
+
({ enumPeriodeConstructionId, enumZoneClimatiqueId, effetJoule, expected }) => {
|
|
325
|
+
const upb = tvStore.getUpb(enumPeriodeConstructionId, enumZoneClimatiqueId, effetJoule);
|
|
326
|
+
expect(upb).toBe(expected);
|
|
327
|
+
}
|
|
328
|
+
);
|
|
329
|
+
|
|
330
|
+
test('pas de valeur de upb', () => {
|
|
331
|
+
const upb = tvStore.getUpb('0', '1', true);
|
|
332
|
+
expect(upb).toBeUndefined();
|
|
333
|
+
});
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
describe('lecture des valeurs de ue par upb', () => {
|
|
337
|
+
test.each([
|
|
338
|
+
{
|
|
339
|
+
label: 'ue non extrapolé (upb = min des ue disponibles)',
|
|
340
|
+
enumTypeAdjacenceId: '3',
|
|
341
|
+
enumPeriodeConstructionId: '1',
|
|
342
|
+
dsp: 4,
|
|
343
|
+
upb: 0.31,
|
|
344
|
+
expected: 0.25
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
label: 'ue non extrapolé (upb = max des ue disponibles)',
|
|
348
|
+
enumTypeAdjacenceId: '3',
|
|
349
|
+
enumPeriodeConstructionId: '1',
|
|
350
|
+
dsp: 4,
|
|
351
|
+
upb: 3.33,
|
|
352
|
+
expected: 0.43
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
label: 'ue extrapolé',
|
|
356
|
+
enumTypeAdjacenceId: '3',
|
|
357
|
+
enumPeriodeConstructionId: '1',
|
|
358
|
+
dsp: 4,
|
|
359
|
+
upb: 3,
|
|
360
|
+
expected: 0.42
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
label: 'ue extrapolé',
|
|
364
|
+
enumTypeAdjacenceId: '3',
|
|
365
|
+
enumPeriodeConstructionId: '1',
|
|
366
|
+
dsp: 4,
|
|
367
|
+
upb: 3,
|
|
368
|
+
expected: 0.42
|
|
369
|
+
}
|
|
370
|
+
])(
|
|
371
|
+
'ue pour $label',
|
|
372
|
+
({ enumTypeAdjacenceId, enumPeriodeConstructionId, dsp, upb, expected }) => {
|
|
373
|
+
const ue = tvStore.getUeByUpd(enumTypeAdjacenceId, enumPeriodeConstructionId, dsp, upb);
|
|
374
|
+
expect(ue).toBeCloseTo(expected);
|
|
375
|
+
}
|
|
376
|
+
);
|
|
377
|
+
|
|
378
|
+
test('pas de valeur de ue', () => {
|
|
379
|
+
const ue = tvStore.getUeByUpd('0', '1', 0, 0);
|
|
380
|
+
expect(ue).toBeUndefined();
|
|
381
|
+
});
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
describe('lecture des valeurs de uph0', () => {
|
|
385
|
+
test.each([
|
|
386
|
+
{ enumTypePlancherHautId: '1', expected: 2.5 },
|
|
387
|
+
{ enumTypePlancherHautId: '2', expected: 1.45 },
|
|
388
|
+
{ enumTypePlancherHautId: '3', expected: 1.45 },
|
|
389
|
+
{ enumTypePlancherHautId: '4', expected: 1.2 },
|
|
390
|
+
{ enumTypePlancherHautId: '5', expected: 2.5 },
|
|
391
|
+
{ enumTypePlancherHautId: '6', expected: 2.5 },
|
|
392
|
+
{ enumTypePlancherHautId: '7', expected: 1.2 },
|
|
393
|
+
{ enumTypePlancherHautId: '8', expected: 2.5 },
|
|
394
|
+
{ enumTypePlancherHautId: '9', expected: 2 },
|
|
395
|
+
{ enumTypePlancherHautId: '10', expected: 2.3 },
|
|
396
|
+
{ enumTypePlancherHautId: '11', expected: 2.5 },
|
|
397
|
+
{ enumTypePlancherHautId: '12', expected: 2.5 },
|
|
398
|
+
{ enumTypePlancherHautId: '13', expected: 0.24 },
|
|
399
|
+
{ enumTypePlancherHautId: '14', expected: 2.5 },
|
|
400
|
+
{ enumTypePlancherHautId: '15', expected: undefined },
|
|
401
|
+
{ enumTypePlancherHautId: '16', expected: 2.5 }
|
|
402
|
+
])(
|
|
403
|
+
'uph0 pour type plancher Haut $enumTypePlancherHautId',
|
|
404
|
+
({ enumTypePlancherHautId, expected }) => {
|
|
405
|
+
const uph0 = tvStore.getUph0(enumTypePlancherHautId);
|
|
406
|
+
expect(uph0).toBe(expected);
|
|
407
|
+
}
|
|
408
|
+
);
|
|
409
|
+
|
|
410
|
+
test('pas de valeur de uph0', () => {
|
|
411
|
+
const uph0 = tvStore.getUph0('0');
|
|
412
|
+
expect(uph0).toBeUndefined();
|
|
413
|
+
});
|
|
414
|
+
});
|
|
415
|
+
|
|
416
|
+
describe('lecture des valeurs de uph', () => {
|
|
417
|
+
test.each([
|
|
418
|
+
{
|
|
419
|
+
enumPeriodeConstructionId: '1',
|
|
420
|
+
typeToiture: 'terrasse',
|
|
421
|
+
enumZoneClimatiqueId: '1',
|
|
422
|
+
effetJoule: false,
|
|
423
|
+
expected: 2.5
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
enumPeriodeConstructionId: '4',
|
|
427
|
+
typeToiture: 'combles',
|
|
428
|
+
enumZoneClimatiqueId: '4',
|
|
429
|
+
effetJoule: true,
|
|
430
|
+
expected: 0.42
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
enumPeriodeConstructionId: '8',
|
|
434
|
+
typeToiture: 'combles',
|
|
435
|
+
enumZoneClimatiqueId: '6',
|
|
436
|
+
effetJoule: true,
|
|
437
|
+
expected: 0.2
|
|
438
|
+
}
|
|
439
|
+
])(
|
|
440
|
+
'uph pour type plancher Haut',
|
|
441
|
+
({ enumPeriodeConstructionId, typeToiture, enumZoneClimatiqueId, effetJoule, expected }) => {
|
|
442
|
+
expect(
|
|
443
|
+
tvStore.getUph(enumPeriodeConstructionId, typeToiture, enumZoneClimatiqueId, effetJoule)
|
|
444
|
+
).toBe(expected);
|
|
445
|
+
}
|
|
446
|
+
);
|
|
447
|
+
|
|
448
|
+
test('pas de valeur de uph', () => {
|
|
449
|
+
const uph = tvStore.getUph('0', 'terrasse', '1', false);
|
|
450
|
+
expect(uph).toBeUndefined();
|
|
451
|
+
});
|
|
452
|
+
});
|
|
453
|
+
|
|
454
|
+
describe('lecture des valeurs de debits_ventilation', () => {
|
|
455
|
+
test.each([
|
|
456
|
+
{
|
|
457
|
+
label: 'Ventilation par ouverture des fenêtres',
|
|
458
|
+
enumTypeVentilation: '1',
|
|
459
|
+
expected: {
|
|
460
|
+
qvarep_conv: '1.2',
|
|
461
|
+
qvasouf_conv: '1.2',
|
|
462
|
+
smea_conv: '0'
|
|
463
|
+
}
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
label: 'VMC SF Auto réglable de 2001 à 2012',
|
|
467
|
+
enumTypeVentilation: '5',
|
|
468
|
+
expected: {
|
|
469
|
+
qvarep_conv: '1.5',
|
|
470
|
+
qvasouf_conv: '0',
|
|
471
|
+
smea_conv: '2'
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
])(`debitsVentilation pour ventilation $label`, ({ enumTypeVentilation, expected }) => {
|
|
475
|
+
expect(tvStore.getDebitsVentilation(enumTypeVentilation)).toMatchObject(expected);
|
|
476
|
+
});
|
|
477
|
+
|
|
478
|
+
test('pas de valeur de debits_ventilation', () => {
|
|
479
|
+
const ug = tvStore.getDebitsVentilation('0');
|
|
480
|
+
expect(ug).toBeUndefined();
|
|
481
|
+
});
|
|
482
|
+
});
|
|
483
|
+
|
|
484
|
+
describe('lecture des valeurs de q4paConv', () => {
|
|
485
|
+
test.each([
|
|
486
|
+
{
|
|
487
|
+
label: 'Ventilation avant 1948, appartement',
|
|
488
|
+
periodConstruction: '1',
|
|
489
|
+
typeHabitation: TypeHabitation.APPARTEMENT,
|
|
490
|
+
isolationSurface: '0',
|
|
491
|
+
expected: {
|
|
492
|
+
q4pa_conv: '4.6'
|
|
493
|
+
}
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
label: 'Ventilation avant 1948, appartement',
|
|
497
|
+
periodConstruction: '1',
|
|
498
|
+
typeHabitation: TypeHabitation.APPARTEMENT,
|
|
499
|
+
isolationSurface: undefined,
|
|
500
|
+
expected: {
|
|
501
|
+
q4pa_conv: '4.6'
|
|
502
|
+
}
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
label: 'Ventilation 1948-1974, maison',
|
|
506
|
+
periodConstruction: '2',
|
|
507
|
+
typeHabitation: TypeHabitation.MAISON,
|
|
508
|
+
isolationSurface: undefined,
|
|
509
|
+
expected: {
|
|
510
|
+
q4pa_conv: '2.2'
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
label: 'Ventilation 1948-1974, maison surfaces isolées',
|
|
515
|
+
periodConstruction: '2',
|
|
516
|
+
typeHabitation: TypeHabitation.MAISON,
|
|
517
|
+
isolationSurface: '1',
|
|
518
|
+
expected: {
|
|
519
|
+
q4pa_conv: '1.9'
|
|
520
|
+
}
|
|
521
|
+
},
|
|
522
|
+
{
|
|
523
|
+
label: 'Ventilation avant 1948, maison avec joints',
|
|
524
|
+
periodConstruction: '1',
|
|
525
|
+
typeHabitation: TypeHabitation.MAISON,
|
|
526
|
+
isolationSurface: undefined,
|
|
527
|
+
presenceJointsMenuiserie: '1',
|
|
528
|
+
expected: {
|
|
529
|
+
q4pa_conv: '2.5'
|
|
530
|
+
}
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
label: 'Ventilation avant 1948, maison avec joints',
|
|
534
|
+
periodConstruction: '1',
|
|
535
|
+
typeHabitation: TypeHabitation.MAISON,
|
|
536
|
+
isolationSurface: '0',
|
|
537
|
+
presenceJointsMenuiserie: '1',
|
|
538
|
+
expected: {
|
|
539
|
+
q4pa_conv: '2.5'
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
])(
|
|
543
|
+
`q4paConv pour ventilation $label`,
|
|
544
|
+
({
|
|
545
|
+
periodConstruction,
|
|
546
|
+
typeHabitation,
|
|
547
|
+
isolationSurface,
|
|
548
|
+
presenceJointsMenuiserie,
|
|
549
|
+
expected
|
|
550
|
+
}) => {
|
|
551
|
+
expect(
|
|
552
|
+
tvStore.getQ4paConv(
|
|
553
|
+
periodConstruction,
|
|
554
|
+
typeHabitation,
|
|
555
|
+
isolationSurface,
|
|
556
|
+
presenceJointsMenuiserie
|
|
557
|
+
)
|
|
558
|
+
).toMatchObject(expected);
|
|
559
|
+
}
|
|
560
|
+
);
|
|
561
|
+
|
|
562
|
+
test('pas de valeur de debits_ventilation', () => {
|
|
563
|
+
const ug = tvStore.getQ4paConv('2', TypeHabitation.MAISON, '0', '1');
|
|
564
|
+
expect(ug).toBeUndefined();
|
|
565
|
+
});
|
|
566
|
+
});
|
|
567
|
+
|
|
568
|
+
describe.skip('Benchmark b', () => {
|
|
569
|
+
test('reworked', () => {
|
|
570
|
+
for (let i = 0; i < 1000; i++) {
|
|
571
|
+
const b = tvStore.getB('8');
|
|
572
|
+
expect(b).toBe(1);
|
|
573
|
+
}
|
|
574
|
+
});
|
|
575
|
+
|
|
576
|
+
test('legacy', () => {
|
|
577
|
+
const matcher = {
|
|
578
|
+
enum_type_adjacence_id: '8'
|
|
579
|
+
};
|
|
580
|
+
|
|
581
|
+
for (let i = 0; i < 1000; i++) {
|
|
582
|
+
const result = tv('coef_reduction_deperdition', matcher);
|
|
583
|
+
expect(result.b).toBe('1');
|
|
584
|
+
}
|
|
585
|
+
});
|
|
586
|
+
});
|
|
587
|
+
|
|
588
|
+
describe.skip('Benchmark uVue', () => {
|
|
589
|
+
test('reworked', () => {
|
|
590
|
+
for (let i = 0; i < 1000; i++) {
|
|
591
|
+
const uVue = tvStore.getUVue('8');
|
|
592
|
+
expect(uVue).toBe(3);
|
|
593
|
+
}
|
|
594
|
+
});
|
|
595
|
+
|
|
596
|
+
test('legacy', () => {
|
|
597
|
+
const matcher = {
|
|
598
|
+
enum_type_adjacence_id: '8'
|
|
599
|
+
};
|
|
600
|
+
|
|
601
|
+
for (let i = 0; i < 1000; i++) {
|
|
602
|
+
const result = tv('uvue', matcher);
|
|
603
|
+
expect(result.uvue).toBe('3');
|
|
604
|
+
}
|
|
605
|
+
});
|
|
606
|
+
});
|
|
607
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const PRECISION = 100000;
|