• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

RAMP-project / RAMP / 9364900772

04 Jun 2024 09:46AM UTC coverage: 77.375%. First build
9364900772

Pull #150

github

web-flow
Merge df93fb41e into 8b66734bb
Pull Request #150: Release v0.5.2

285 of 316 new or added lines in 17 files covered. (90.19%)

1409 of 1821 relevant lines covered (77.38%)

0.77 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.32
/tests/test_input_file_conversion.py
1
import os
1✔
2
import pytest
1✔
3
import numpy as np
1✔
4
import importlib
1✔
5

6
from ramp import UseCase, User
1✔
7

8
from ramp.ramp_convert_old_input_files import convert_old_user_input_file
1✔
9

10

11
def load_py_usecase(j=None):
1✔
12
    file_module = importlib.import_module(f"ramp.example.input_file_{j}")
1✔
13
    user_list = file_module.User_list
1✔
14
    return user_list
1✔
15

16

17
def load_xlsx_usecase(fname=None):
1✔
18
    usecase = UseCase()
1✔
19
    usecase.initialize(num_days=1)
1✔
20
    usecase.load(fname)
1✔
21
    user_list = usecase.users
1✔
22
    return user_list
1✔
23

24

25
class TestConversion:
1✔
26
    def setup_method(self):
1✔
27
        self.input_files_to_run = [1, 2, 3]
1✔
28
        self.file_suffix = "_test"
1✔
29
        self.py_fnames = [
1✔
30
            os.path.join("ramp", "example", f"input_file_{i}.py")
31
            for i in self.input_files_to_run
32
        ]
33
        self.xlsx_fnames = [
1✔
34
            os.path.join("ramp", "test", f"input_file_{i}{self.file_suffix}.xlsx")
35
            for i in self.input_files_to_run
36
        ]
37
        for fname in self.xlsx_fnames:
1✔
38
            if os.path.exists(fname):
1✔
39
                os.remove(fname)
×
40

41
    def teardown_method(self):
1✔
42
        auto_code_proof = (
1✔
43
            "# Code automatically added by ramp_convert_old_input_files.py\n"
44
        )
45
        # remove created files
46
        for fname in self.xlsx_fnames:
1✔
47
            if os.path.exists(fname):
1✔
48
                os.remove(fname)
1✔
49
        # remove additional code in legacy input files to get the appliance name from python variable names
50
        for fname in self.py_fnames:
1✔
51
            with open(fname, "r") as fp:
1✔
52
                lines = fp.readlines()
1✔
53
                if auto_code_proof in lines:
1✔
54
                    idx = lines.index(auto_code_proof)
1✔
55
            with open(fname, "w") as fp:
1✔
56
                fp.writelines(lines[: idx - 1])
1✔
57

58
    def test_convert_py_to_xlsx(self):
1✔
59
        """Convert the 3 example .py input files to xlsx and compare each appliance of each user"""
60
        for i, j in enumerate(self.input_files_to_run):
1✔
61
            old_user_list = load_py_usecase(j=j)
1✔
62
            convert_old_user_input_file(
1✔
63
                self.py_fnames[i],
64
                output_path=os.path.join("ramp", "test"),
65
                suffix=self.file_suffix,
66
            )
67
            new_user_list = load_xlsx_usecase(fname=self.xlsx_fnames[i])
1✔
68
            for old_user, new_user in zip(old_user_list, new_user_list):
1✔
69
                if old_user != new_user:
1✔
70
                    pytest.fail()
×
71

72
    def test_convert_py_to_xlsx_command_line(self):
1✔
73
        """Convert the 3 example .py input files to xlsx and compare each appliance of each user"""
74
        for i, j in enumerate(self.input_files_to_run):
1✔
75
            old_user_list = load_py_usecase(j=j)
1✔
76
            output_path = os.path.join("ramp", "test")
1✔
77
            os.system(
1✔
78
                f"ramp_convert -i {self.py_fnames[i]} -o {output_path} --suffix {self.file_suffix}"
79
            )
80
            new_user_list = load_xlsx_usecase(fname=self.xlsx_fnames[i])
1✔
81
            for old_user, new_user in zip(old_user_list, new_user_list):
1✔
82
                if old_user != new_user:
1✔
NEW
83
                    pytest.fail()
×
84

85

86
def test_define_appliance_window_directly_equivalent_to_use_windows_method():
1✔
87
    user = User("test user", 1)
1✔
88

89
    params = dict(number=1, power=200, num_windows=1, func_time=0)
1✔
90
    win_start = 390
1✔
91
    win_stop = 540
1✔
92
    appliance1 = user.add_appliance(**params)
1✔
93
    appliance1.windows(window_1=[win_start, win_stop])
1✔
94

95
    params.update({"window_1": np.array([win_start, win_stop])})
1✔
96
    appliance2 = user.add_appliance(**params)
1✔
97

98
    assert appliance1 == appliance2
1✔
99

100

101
def test_define_appliance_duty_cycle_directly_equivalent_to_use_specific_cycle_method():
1✔
102
    user = User("test user", 1)
1✔
103

104
    params = dict(
1✔
105
        number=1,
106
        power=200,
107
        num_windows=1,
108
        func_time=0,
109
        window_1=[390, 540],
110
        fixed_cycle=1,
111
    )
112

113
    appliance1 = user.add_appliance(**params)
1✔
114
    cycle_params = {"p_11": 20, "t_11": 10, "cw11": np.array([400, 500])}
1✔
115
    appliance1.specific_cycle_1(**cycle_params)
1✔
116

117
    params.update(cycle_params)
1✔
118
    appliance2 = user.add_appliance(**params)
1✔
119

120
    assert appliance1 == appliance2
1✔
121

122

123
def test_provide_only_one_appliance_window_when_declaring_two():
1✔
124
    user = User("test user", 1)
1✔
125

126
    params = dict(number=1, power=200, num_windows=2, func_time=0)
1✔
127
    win_start = 390
1✔
128
    win_stop = 540
1✔
129
    with pytest.raises(ValueError):
1✔
130
        appliance1 = user.add_appliance(**params)
1✔
131
        appliance1.windows(window_1=[win_start, win_stop])
1✔
132
    with pytest.raises(ValueError):
1✔
133
        params.update({"window_1": np.array([win_start, win_stop])})
1✔
134
        user.add_appliance(**params)
1✔
135

136

137
def test_provide_no_appliance_window_when_declaring_one():
1✔
138
    user = User("test user", 1)
1✔
139

140
    params = dict(number=1, power=200, num_windows=1, func_time=0)
1✔
141
    with pytest.warns(UserWarning):
1✔
142
        appliance1 = user.add_appliance(**params)
1✔
143
        appliance1.windows()
1✔
144
    with pytest.warns(UserWarning):
1✔
145
        params.update({"window_1": None})
1✔
146
        user.add_appliance(**params)
1✔
147

148

149
def test_A():
1✔
150
    user = User("test user", 1)
1✔
151

152
    old_params = dict(power=200, num_windows=1, func_time=0)
1✔
153
    win_start = 390
1✔
154
    win_stop = 540
1✔
155
    appliance1 = user.Appliance(user, **old_params)
1✔
156
    appliance1.windows(window_1=[win_start, win_stop])
1✔
157

158
    params = dict(
1✔
159
        number=1,
160
        power=200,
161
        num_windows=1,
162
        func_time=0,
163
        window_1=np.array([win_start, win_stop]),
164
    )
165
    appliance2 = user.add_appliance(**params)
1✔
166

167
    assert appliance1 == appliance2
1✔
168

169

170
def test_B():
1✔
171
    user = User("test user", 1)
1✔
172

173
    params = dict(
1✔
174
        number=1,
175
        power=200,
176
        num_windows=1,
177
        func_time=0,
178
        window_1=[390, 540],
179
        fixed_cycle=1,
180
    )
181

182
    appliance1 = user.add_appliance(**params)
1✔
183
    cycle_params = {"p_11": 20, "t_11": 10, "cw11": np.array([400, 500])}
1✔
184
    appliance1.specific_cycle_1(**cycle_params)
1✔
185

186
    params.update(cycle_params)
1✔
187
    appliance2 = user.add_appliance(**params)
1✔
188

189
    assert appliance1 == appliance2
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc