Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 5 additions & 34 deletions test/cim/extensions/iec61968/common/test_contact_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,12 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
from hypothesis import given
from hypothesis.strategies import text, sampled_from, booleans

from cim.fill_fields import ALPHANUM, contact_details_kwargs
from cim.fill_fields import contact_details_kwargs
from cim.private_collection_validator import validate_unordered_other, DuplicateBehaviour
from util import assert_or_empty
from zepben.ewb import ContactMethodType, TelephoneNumber, ElectronicAddress, ContactDetails

contact_details_args = [
text(alphabet=ALPHANUM),
text(alphabet=ALPHANUM),
text(alphabet=ALPHANUM),
text(alphabet=ALPHANUM),
text(alphabet=ALPHANUM),
sampled_from(ContactMethodType),
booleans(),
text(alphabet=ALPHANUM),
[TelephoneNumber()],
[ElectronicAddress()],
]


def test_contact_details_constructor_default():
c = ContactDetails(id="test")
Expand All @@ -49,7 +35,7 @@ def test_contact_details_constructor_kwargs(
is_primary,
business_name,
phone_numbers,
electronic_addresses
electronic_addresses,
):
c = ContactDetails(
id=id,
Expand All @@ -61,7 +47,7 @@ def test_contact_details_constructor_kwargs(
is_primary=is_primary,
business_name=business_name,
phone_numbers=phone_numbers,
electronic_addresses=electronic_addresses
electronic_addresses=electronic_addresses,
)

assert c.contact_address == contact_address
Expand All @@ -75,21 +61,6 @@ def test_contact_details_constructor_kwargs(
assert_or_empty(c.electronic_addresses, electronic_addresses)


def test_contact_details_constructor_args():
c = ContactDetails(*contact_details_args)

assert c.id == contact_details_args[-10]
assert c.contact_address == contact_details_args[-9]
assert c.contact_type == contact_details_args[-8]
assert c.first_name == contact_details_args[-7]
assert c.last_name == contact_details_args[-6]
assert c.preferred_contact_method == contact_details_args[-5]
assert c.is_primary == contact_details_args[-4]
assert c.business_name == contact_details_args[-3]
assert list(c.phone_numbers) == contact_details_args[-2]
assert list(c.electronic_addresses) == contact_details_args[-1]


def test_phone_number_collection():
def get_phone_number(it: ContactDetails, number: str):
for tn in it.phone_numbers:
Expand All @@ -109,7 +80,7 @@ def get_phone_number(it: ContactDetails, number: str):
ContactDetails.remove_phone_number,
ContactDetails.clear_phone_numbers,
lambda it: it.local_number,
duplicate_behaviour=DuplicateBehaviour.SUPPORTED
duplicate_behaviour=DuplicateBehaviour.SUPPORTED,
)


Expand All @@ -132,5 +103,5 @@ def get_electronic_address(it: ContactDetails, number: str):
ContactDetails.remove_electronic_address,
ContactDetails.clear_electronic_addresses,
lambda it: it.email1,
duplicate_behaviour=DuplicateBehaviour.SUPPORTED
duplicate_behaviour=DuplicateBehaviour.SUPPORTED,
)
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@
from pytest import raises

from cim.fill_fields import pan_demand_response_function_kwargs
from cim.iec61968.metering.test_end_device_function import end_device_function_args, \
verify_end_device_function_constructor_default, verify_end_device_function_constructor_args
from cim.iec61968.metering.test_end_device_function import verify_end_device_function_constructor_default
from test.cim.iec61968.metering.test_end_device_function import verify_end_device_function_constructor_kwargs
from zepben.ewb import PanDemandResponseFunction, ControlledAppliance, Appliance, generate_id
from zepben.ewb.model.cim.iec61968.metering.end_device_function_kind import EndDeviceFunctionKind

pan_demand_response_function_args = [*end_device_function_args, EndDeviceFunctionKind.demandResponse, Appliance.IRRIGATION_PUMP]


def test_pan_demand_response_function_constructor_default():
pdrf = PanDemandResponseFunction(mrid=generate_id())
Expand All @@ -33,15 +30,6 @@ def test_pan_demand_response_function_constructor_kwargs(kind, appliance, **kwar
assert pdrf.appliance.bitmask == appliance


def test_pan_demand_response_function_constructor_args():
pdrf = PanDemandResponseFunction(*pan_demand_response_function_args)

verify_end_device_function_constructor_args(pdrf)

assert pan_demand_response_function_args[-2] == pdrf.kind
assert pan_demand_response_function_args[-1].bitmask == pdrf.appliance.bitmask


def test_constructor_with_controlled_appliance():
ca = ControlledAppliance([Appliance.SMART_APPLIANCE, Appliance.IRRIGATION_PUMP])
pdrf = PanDemandResponseFunction(mrid=generate_id(), appliance=ca)
Expand Down Expand Up @@ -135,19 +123,21 @@ def test_removing_appliances_initialises_bitmask():
validate_appliance(pdrf.appliance)


def validate_appliance(controlled_appliance: ControlledAppliance,
is_electric_vehicle: bool = False,
is_exterior_lighting: bool = False,
is_generation_system: bool = False,
is_hvac_compressor_or_furnace: bool = False,
is_interior_lighting: bool = False,
is_irrigation_pump: bool = False,
is_managed_commercial_industrial_load: bool = False,
is_pool_pump_spa_jacuzzi: bool = False,
is_simple_misc_load: bool = False,
is_smart_appliance: bool = False,
is_strip_and_baseboard_heater: bool = False,
is_water_heater: bool = False):
def validate_appliance(
controlled_appliance: ControlledAppliance,
is_electric_vehicle: bool = False,
is_exterior_lighting: bool = False,
is_generation_system: bool = False,
is_hvac_compressor_or_furnace: bool = False,
is_interior_lighting: bool = False,
is_irrigation_pump: bool = False,
is_managed_commercial_industrial_load: bool = False,
is_pool_pump_spa_jacuzzi: bool = False,
is_simple_misc_load: bool = False,
is_smart_appliance: bool = False,
is_strip_and_baseboard_heater: bool = False,
is_water_heater: bool = False,
):
assert controlled_appliance is not None
assert controlled_appliance.is_electric_vehicle == is_electric_vehicle
assert controlled_appliance.is_exterior_lighting == is_exterior_lighting
Expand Down
9 changes: 1 addition & 8 deletions test/cim/extensions/iec61970/base/core/test_hv_customer.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,10 @@
from hypothesis import given

from cim.fill_fields import hv_customer_kwargs
from cim.iec61970.base.core.test_equipment_container import verify_equipment_container_constructor_default, verify_equipment_container_constructor_kwargs, \
verify_equipment_container_constructor_args, equipment_container_args
from cim.iec61970.base.core.test_equipment_container import verify_equipment_container_constructor_default, verify_equipment_container_constructor_kwargs
from zepben.ewb import generate_id
from zepben.ewb.model.cim.extensions.iec61970.base.core.hv_customer import HvCustomer

hv_customer_args = equipment_container_args


def test_hv_customer_constructor_default():
verify_equipment_container_constructor_default(HvCustomer(mrid=generate_id()))
Expand All @@ -20,7 +17,3 @@ def test_hv_customer_constructor_default():
@given(**hv_customer_kwargs())
def test_hv_customer_constructor_kwargs(**kwargs):
verify_equipment_container_constructor_kwargs(HvCustomer(**kwargs), **kwargs)


def test_hv_customer_constructor_args():
verify_equipment_container_constructor_args(HvCustomer(*hv_customer_args))
8 changes: 1 addition & 7 deletions test/cim/extensions/iec61970/base/core/test_site.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,9 @@

from cim.fill_fields import site_kwargs
from cim.iec61970.base.core.test_equipment_container import verify_equipment_container_constructor_default, \
verify_equipment_container_constructor_kwargs, verify_equipment_container_constructor_args, equipment_container_args
verify_equipment_container_constructor_kwargs
from zepben.ewb import Site, TestNetworkBuilder, Equipment, AssignToLvFeeders, LvFeeder, NetworkStateOperators, generate_id

site_args = equipment_container_args


def test_site_constructor_default():
verify_equipment_container_constructor_default(Site(mrid=generate_id()))
Expand All @@ -22,10 +20,6 @@ def test_site_constructor_kwargs(**kwargs):
verify_equipment_container_constructor_kwargs(Site(**kwargs), **kwargs)


def test_site_constructor_args():
verify_equipment_container_constructor_args(Site(*site_args))


@pytest.mark.asyncio
async def test_find_lv_feeders_excludes_open_switches():
#
Expand Down
24 changes: 5 additions & 19 deletions test/cim/extensions/iec61970/base/feeder/test_loop.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,10 @@
from hypothesis import given

from cim.fill_fields import loop_kwargs
from cim.iec61970.base.core.test_identified_object import verify_identified_object_constructor_default, verify_identified_object_constructor_kwargs, \
verify_identified_object_constructor_args, identified_object_args
from cim.iec61970.base.core.test_identified_object import verify_identified_object_constructor_default, verify_identified_object_constructor_kwargs
from cim.private_collection_validator import validate_unordered
from zepben.ewb import Loop, Circuit, Substation, generate_id

loop_args = [*identified_object_args, [Circuit(mrid=generate_id())], [Substation(mrid=generate_id())], [Substation(mrid=generate_id())]]


def test_loop_constructor_default():
loop = Loop(mrid=generate_id())
Expand All @@ -28,7 +25,7 @@ def test_loop_constructor_kwargs(circuits, substations, energizing_substations,
circuits=circuits,
substations=substations,
energizing_substations=energizing_substations,
**kwargs
**kwargs,
)

verify_identified_object_constructor_kwargs(loop, **kwargs)
Expand All @@ -37,17 +34,6 @@ def test_loop_constructor_kwargs(circuits, substations, energizing_substations,
assert list(loop.energizing_substations) == energizing_substations


def test_loop_constructor_args():
loop = Loop(*loop_args)

verify_identified_object_constructor_args(loop)
assert loop_args[-3:] == [
list(loop.circuits),
list(loop.substations),
list(loop.energizing_substations)
]


def test_circuits_collection():
validate_unordered(
Loop,
Expand All @@ -57,7 +43,7 @@ def test_circuits_collection():
Loop.get_circuit,
Loop.add_circuit,
Loop.remove_circuit,
Loop.clear_circuits
Loop.clear_circuits,
)


Expand All @@ -70,7 +56,7 @@ def test_substations_collection():
Loop.get_substation,
Loop.add_substation,
Loop.remove_substation,
Loop.clear_substations
Loop.clear_substations,
)


Expand All @@ -83,5 +69,5 @@ def test_energizing_substations_collection():
Loop.get_energizing_substation,
Loop.add_energizing_substation,
Loop.remove_energizing_substation,
Loop.clear_energizing_substations
Loop.clear_energizing_substations,
)
39 changes: 7 additions & 32 deletions test/cim/extensions/iec61970/base/feeder/test_lv_feeder.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,11 @@

from cim.fill_fields import lv_feeder_kwargs
from cim.iec61970.base.core.test_equipment_container import verify_equipment_container_constructor_default, \
verify_equipment_container_constructor_kwargs, verify_equipment_container_constructor_args, equipment_container_args
verify_equipment_container_constructor_kwargs
from cim.private_collection_validator import validate_unordered
from zepben.ewb import Terminal, Equipment, LvFeeder, generate_id
from zepben.ewb.model.cim.extensions.iec61970.base.feeder.lv_substation import LvSubstation
from zepben.ewb import Equipment, LvFeeder, generate_id
from zepben.ewb.model.cim.iec61970.base.core.feeder import Feeder

lv_feeder_args = [
*equipment_container_args,
Terminal(mrid=generate_id()),
{"f": Feeder(mrid=generate_id())},
{"ce": Equipment(mrid=generate_id())},
{"cef": Feeder(mrid=generate_id())},
LvSubstation(mrid=generate_id()),
]


def test_lv_feeder_constructor_default():
lvf = LvFeeder(mrid=generate_id())
Expand All @@ -40,15 +30,15 @@ def test_lv_feeder_constructor_kwargs(
current_equipment,
current_energizing_feeders,
normal_energizing_lv_substation,
**kwargs
**kwargs,
):
lvf = LvFeeder(
normal_head_terminal=normal_head_terminal,
normal_energizing_feeders=normal_energizing_feeders,
current_equipment=current_equipment,
current_energizing_feeders=current_energizing_feeders,
normal_energizing_lv_substation=normal_energizing_lv_substation,
**kwargs
**kwargs,
)

verify_equipment_container_constructor_kwargs(lvf, **kwargs)
Expand All @@ -59,21 +49,6 @@ def test_lv_feeder_constructor_kwargs(
assert lvf.normal_energizing_lv_substation == normal_energizing_lv_substation


def test_lv_feeder_constructor_args():
lvf = LvFeeder(*lv_feeder_args)

verify_equipment_container_constructor_args(lvf)
assert lv_feeder_args[-5:-4] == [
lvf.normal_head_terminal
]
# We use a different style of matching here as the passed in args for normal_energizing_feeders and current_equipment
# are maps and the stored collections are lists.
assert list(lvf.normal_energizing_feeders) == list(lv_feeder_args[-4].values())
assert list(lvf.current_equipment) == list(lv_feeder_args[-3].values())
assert list(lvf.current_energizing_feeders) == list(lv_feeder_args[-2].values())
assert lvf.normal_energizing_lv_substation == lv_feeder_args[-1]


def test_current_equipment_collection():
validate_unordered(
LvFeeder,
Expand All @@ -83,7 +58,7 @@ def test_current_equipment_collection():
LvFeeder.get_current_equipment,
LvFeeder.add_current_equipment,
LvFeeder.remove_current_equipment,
LvFeeder.clear_current_equipment
LvFeeder.clear_current_equipment,
)


Expand All @@ -96,7 +71,7 @@ def test_normal_energizing_feeder_collection():
LvFeeder.get_normal_energizing_feeder,
LvFeeder.add_normal_energizing_feeder,
LvFeeder.remove_normal_energizing_feeder,
LvFeeder.clear_normal_energizing_feeders
LvFeeder.clear_normal_energizing_feeders,
)


Expand All @@ -109,5 +84,5 @@ def test_current_energizing_feeder_collection():
LvFeeder.get_current_energizing_feeder,
LvFeeder.add_current_energizing_feeder,
LvFeeder.remove_current_energizing_feeder,
LvFeeder.clear_current_energizing_feeders
LvFeeder.clear_current_energizing_feeders,
)
Loading
Loading