NodeRegistrationTests.setup()   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 5
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 5
nop 1
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
# -*- coding: utf-8 -
2
3
""" Tests pertaining to :obj:`node {}` registration via
4
:attr:`Node.registry <oemof.network.network.Node.registry>`.
5
6
This test suite (eventually) collects all tests revolving around automatically
7
registering :obj:`nodes <oemof.network.network.Node>` in an
8
:obj:`energy system <oemof.network.EnergySystem>`. Since this feature is
9
deprecated, having all tests pertaining to it in one file makes it easier to
10
remove them all at once, when the feature is romved.
11
12
This file is part of project oemof (github.com/oemof/oemof). It's copyrighted
13
by the contributors recorded in the version control history of the file,
14
available from its original location oemof/tests/basic_tests.py
15
16
SPDX-License-Identifier: MIT
17
""".format(
18
    "<oemof.network.network.Node>"
19
)
20
21
import warnings
22
23
import pandas as pd
24
import pytest
25
26
from oemof.network.energy_system import EnergySystem
27
from oemof.network.network import Bus
28
from oemof.network.network import Node
29
from oemof.network.network import Transformer
30
31
32
class NodeRegistrationTests:
33
34
    # TODO: Move all other registration tests into this test suite.
35
36
    @classmethod
37
    def setup_class(cls):
38
        cls.timeindex = pd.date_range("1/1/2012", periods=5, freq="H")
39
40
    def setup(self):
41
        self.es = EnergySystem()
42
        with warnings.catch_warnings():
43
            warnings.simplefilter("ignore")
44
            Node.registry = None
45
46
    def test_entity_registration(self):
47
        with warnings.catch_warnings():
48
            warnings.simplefilter("ignore")
49
            Node.registry = self.es
50
            bus = Bus(label="bus-uid", type="bus-type")
51
            assert self.es.nodes[0] == bus
52
            bus2 = Bus(label="bus-uid2", type="bus-type")
53
            assert self.es.nodes[1] == bus2
54
            t1 = Transformer(label="pp_gas", inputs=[bus], outputs=[bus2])
55
            assert t1 in self.es.nodes
56
            self.es.timeindex = self.timeindex
57
            assert len(self.es.timeindex) == 5
58
59
    def test_that_setting_a_node_registry_emits_a_warning(self):
60
        with pytest.warns(FutureWarning):
61
            Node.registry = 1
62
63
    def test_that_accessing_the_node_registry_emits_a_warning(self):
64
        with pytest.warns(FutureWarning):
65
            Node.registry
66
67
    def test_that_node_creation_does_not_emit_a_warning(self):
68
        with pytest.warns(None) as record:
69
            Node()
70
71
        recorded = [w for w in record.list if w.category is FutureWarning]
72
        if recorded:
73
            pytest.fail(
74
                "Creating a node emitted the following `FutureWarning`s\n"
75
                "although no warning was expected:\n{}".format(
76
                    "\n---\n".join([str(w.message) for w in recorded])
77
                )
78
            )
79
80
    def test_that_node_creation_emits_a_warning_if_registry_is_not_none(self):
81
        with warnings.catch_warnings():
82
            warnings.simplefilter("ignore")
83
            Node.registry = EnergySystem()
84
85
        with pytest.warns(FutureWarning):
86
            Node()
87