def test_equipment_lockability():
    """Test the lockability of ElectricEquipment objects."""
    weekday_office = ScheduleDay(
        'Weekday Office Equip', [0, 1, 0],
        [Time(0, 0), Time(9, 0), Time(17, 0)])
    saturday_office = ScheduleDay(
        'Saturday Office Equip', [0, 0.25, 0],
        [Time(0, 0), Time(9, 0), Time(17, 0)])
    weekend_rule = ScheduleRule(saturday_office)
    weekend_rule.apply_weekend = True
    schedule = ScheduleRuleset('Office Equip', weekday_office, [weekend_rule],
                               schedule_types.fractional)
    equipment = ElectricEquipment('Open Office Zone Equip', 10, schedule)

    equipment.watts_per_area = 6
    equipment.lock()
    with pytest.raises(AttributeError):
        equipment.watts_per_area = 8
    with pytest.raises(AttributeError):
        equipment.schedule.default_day_schedule.remove_value_by_time(
            Time(17, 0))
    equipment.unlock()
    equipment.watts_per_area = 8
    with pytest.raises(AttributeError):
        equipment.schedule.default_day_schedule.remove_value_by_time(
            Time(17, 0))
def test_equipment_setability():
    """Test the setting of properties of ElectricEquipment."""
    simple_office = ScheduleDay(
        'Simple Weekday Equip', [0, 1, 0],
        [Time(0, 0), Time(9, 0), Time(17, 0)])
    schedule = ScheduleRuleset('Office Equip', simple_office, None,
                               schedule_types.fractional)
    constant = ScheduleRuleset.from_constant_value('Constant Equip', 1,
                                                   schedule_types.fractional)
    equipment = ElectricEquipment('Open Office Zone Equip', 8, schedule)

    equipment.name = 'Office Zone Equip'
    assert equipment.name == 'Office Zone Equip'
    equipment.watts_per_area = 6
    assert equipment.watts_per_area == 6
    equipment.schedule = constant
    assert equipment.schedule == constant
    assert equipment.schedule.values() == [1] * 8760
    equipment.radiant_fraction = 0.4
    assert equipment.radiant_fraction == 0.4
    equipment.latent_fraction = 0.2
    assert equipment.latent_fraction == 0.2
    equipment.lost_fraction = 0.1
    assert equipment.lost_fraction == 0.1