Total Complexity | 1 |
Total Lines | 61 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | import logging |
||
2 | import os |
||
3 | from decimal import Decimal |
||
4 | from itertools import repeat, chain |
||
5 | from satcfdi.create.compute import aggregate |
||
6 | |||
7 | module = 'satcfdi' |
||
8 | current_dir = os.path.dirname(__file__) |
||
9 | |||
10 | logging.basicConfig(level=logging.INFO) |
||
11 | |||
12 | |||
13 | def test_aggregate(): |
||
14 | vals = repeat({ |
||
15 | "k1": "A", |
||
16 | "k2": "B", |
||
17 | "v1": 10, |
||
18 | "v2": 20 |
||
19 | }, 3) |
||
20 | res = aggregate( |
||
21 | vals, |
||
22 | keys=("k1", 'k2'), |
||
23 | values=("v1", "v2"), |
||
24 | ) |
||
25 | assert res == [{'k1': 'A', 'k2': 'B', 'v1': 30, 'v2': 60}] |
||
26 | |||
27 | vals = repeat({ |
||
28 | "k1": "A", |
||
29 | "k2": "B", |
||
30 | "v1": Decimal(10), |
||
31 | "v2": Decimal(20) |
||
32 | }, 3) |
||
33 | res = aggregate( |
||
34 | vals, |
||
35 | keys=("k1", 'k2'), |
||
36 | values=("v1", "v2"), |
||
37 | project=("p1", "p2", "p3", "p4") |
||
38 | ) |
||
39 | assert res == [{'p1': 'A', 'p2': 'B', 'p3': Decimal('30'), 'p4': Decimal('60')}] |
||
40 | |||
41 | vals = repeat({ |
||
42 | "k1": "A", |
||
43 | "k2": "B", |
||
44 | "v1": Decimal(10), |
||
45 | "v2": Decimal(20) |
||
46 | }, 3) |
||
47 | vals2 = repeat({ |
||
48 | "k1": "C", |
||
49 | "k2": "B", |
||
50 | "v1": Decimal(10), |
||
51 | "v2": Decimal(20) |
||
52 | }, 3) |
||
53 | res = aggregate( |
||
54 | chain(vals, vals2), |
||
55 | keys=("k1", 'k2'), |
||
56 | values=("v1", "v2"), |
||
57 | project=("p1", "p2", "p3", "p4") |
||
58 | ) |
||
59 | assert res == [{'p1': 'A', 'p2': 'B', 'p3': Decimal('30'), 'p4': Decimal('60')}, |
||
60 | {'p1': 'C', 'p2': 'B', 'p3': Decimal('30'), 'p4': Decimal('60')}] != [{'p1': 'A', 'p2': 'B', 'p3': Decimal('30'), 'p4': Decimal('60')}] |
||
61 |