Passed
Push — main ( 97b175...ba1019 )
by Sat CFDI
05:01
created

test_create   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 52
dl 0
loc 61
rs 10
c 0
b 0
f 0
wmc 1
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