def test_set_target_speed(mock_inverter): """Test outgoing command called with correct parameter.""" fridge = Fridge(mock_inverter) fridge.set_target_speed(1000) mock_inverter.set_target_speed.assert_called_once_with(1000)
def test_set_target_speed(mock_inverter, expected): """Test behavior of fridge when current speed matches set speed.""" fridge = Fridge(mock_inverter) fridge.set_target_speed(expected) mock_inverter.set_target_speed.assert_called_once_with(expected)
def __init__(self): ##User Interaction #Gui self.hideGuiList = False #Show the consumers in the gui self.enableRFID = False #Enable RFID Reading self.allowHiding = False #Allow a user to hide from the gui consumer list self.onlyOneDrink = False #Hide selection for amount in the gui self.drinkLimit = 20 #Max amount of consumptions in the gui (default 20) #Web Interface self.disableWebIF = False #Disable Web Interface self.disableStats = False #Disable All Statistics ##Payment Incentives #Money Limit self.autoBlack = True #Automatically block user if money owed > limit self.autoUnblack = True #Automatically unblock user if money owed < limit self.blockLimit = 150 #Money limit for automatic blocking (default 150) #Mail Spam self.autoAnnoy = False #Automatically send payment eMails self.annoyDays = 20 #Automatically send mails every x days (default 20) self.annoyLimit = 100 #Money limit for autoAnnoy (default 100) ##Email #Login data and server self.SMTPserver = "smtp.gmail.com:587" #Mailserver URL self.mailUsername = "******" #Username for the mailserver self.mailPassword = "******" #Password for the User on the mailserver self.mailFromName = "*****@*****.**" #From filed in mail header #Standard Texts self.singleMessageStandardSubject = u"Baroness - Bierrechnung" self.singleMessageStandardText = u"Hallo %%longname%%\ndu hast %%dept%%€ Schulden.\nBitte überweise diesen Betrag an das Konto:\n\n%%if_is_black%%Weil du zu hohe Schulden hast, bist du geschwärzt%%end_if_is_black%%\nLiebe Grüße,\nDein Bierbaron" self.masMessageStandardSubject = u"Baroness - Bierrechnung" self.masMessageStandardText = u"Hallo %%longname%%\ndu hast %%dept%%€ Schulden.\nBitte überweise diesen Betrag an das Konto:\n\n%%if_is_black%%Weil du zu hohe Schulden hast, bist du geschwärzt%%end_if_is_black%%\nLiebe Grüße,\nDein Bierbaron" ##Data Logging #Fridge Temperature self.fridgeLogging = False #Log the fridge temperature (connect temp. sensors before enabling) self.fridgeTime = 300 #Write fridge temp to file every x seconds self.fridgeLength = 30 #Length of data log span in days ##Developer Settings self.debug = False #Show debug output in console ##Data Logging - Fridges self.fridges = list() #Do not edit #Create an antialcoholic fridge (Antikühlschrank) with 3 sensors (top, middle and bottom temp.) new_f = Fridge("Antikühlschrank") #make new fridge new_f.add_sensor(Sensor("Temperatur Oben", "1")) #add sensor 1 as top new_f.add_sensor(Sensor("Temperatur Mitte", "2")) #add sensor 2 as middle new_f.add_sensor(Sensor("Temperatur Unten", "3")) #add sensor 3 as bottom self.fridges.append(new_f) #append to the list of fridges #Create an alcoholic fridge with 3 sensors #add more fridges as you like new_f = Fridge("Bierkühlschrank") new_f.add_sensor(Sensor("Temperatur Oben", "4")) new_f.add_sensor(Sensor("Temperatur Mitte", "5")) new_f.add_sensor(Sensor("Temperatur Unten", "6")) self.fridges.append(new_f)
def test_raises_exception_if_curr_spd_not_target(mock_inverter): """Test behavior of fridge when current speed differs from set speed.""" with pytest.raises(ValueError, message="Unable to confirm fan speed change."): fridge = Fridge(mock_inverter) fridge.set_target_speed(1500)
def test_raises_exception_when_temp_too_low(): """Checks if exception is raised if Fridge class is instantiated with temp below 1.""" with pytest.raises(ValueError, message="Ice cream or beer Sir?"): wrong_temp_fridge = Fridge("INV2401PH", temp=0)
def __init__(self, path=None): if path is None: self.db_path = self.DEFAULT_DB_PATH else: self.db_path = path self.entries = Fridge(self.db_path) self.closed = False
def loaded_fridge_param(request): """Create Fridge object for testing with adjustable attributes.""" inverter, load, temp, base_speed = request.param _fridge = Fridge(inverter, load, temp, base_speed) return _fridge
def test_readonly(self): with Fridge(file=self.buf) as fridge: fridge['str'] = 'a' fridge['int'] = 42 self.rewind() ro = Fridge.readonly(file=self.buf) self.assertEqual(ro['str'], 'a') self.assertEqual(ro['int'], 42) self.assertTrue(ro.closed) with self.assertRaises(ValueError): fridge.load() with self.assertRaises(ValueError): fridge.save()
def test_close(self): fridge = Fridge(file=self.buf) fridge['a'] = 'a' fridge.close() self.assertTrue(fridge.closed) self.assertFalse(self.buf.closed) self.assertEqual(self.buf.getvalue(), '{"a": "a"}') with self.assertRaises(ValueError): fridge.load() with self.assertRaises(ValueError): fridge.save()
def test_can_make_recipes(self): recipe = Recipe() recipe.ingredients.append(Ingredient('peanut butter', None, '5 tablespoons')) recipe.ingredients.append(Ingredient('bread', None, '2 slices')) recipe.ingredients.append(Ingredient('jelly', None, '5 tablespoons')) fridge = Fridge() fridge.ingredients['peanut butter'] = Ingredient('peanut butter', None, '1 jar') fridge.ingredients['bread'] = Ingredient('bread', None, '1 loaf') self.assertFalse(fridge.can_make_recipe(recipe)) fridge.ingredients['jelly'] = Ingredient('jelly', None, '1 jar') self.assertTrue(fridge.can_make_recipe(recipe))
def test_get_missing_ingredients(self): recipe = Recipe() recipe.ingredients.append(Ingredient('peanut butter', None, '5 tablespoons')) recipe.ingredients.append(Ingredient('bread', None, '2 slices')) recipe.ingredients.append(Ingredient('jelly', None, '5 tablespoons')) fridge = Fridge() missing_ingredients = fridge.get_missing_ingredients(recipe) self.assertEqual(missing_ingredients, ['peanut butter', 'bread', 'jelly']) fridge.ingredients['peanut butter'] = Ingredient('peanut butter', None, '1 jar') missing_ingredients = fridge.get_missing_ingredients(recipe) self.assertEqual(missing_ingredients, ['bread', 'jelly']) fridge.ingredients['bread'] = Ingredient('bread', None, '1 loaf') missing_ingredients = fridge.get_missing_ingredients(recipe) self.assertEqual(missing_ingredients, ['jelly']) fridge.ingredients['jelly'] = Ingredient('jelly', None, '1 jar') missing_ingredients = fridge.get_missing_ingredients(recipe) self.assertEqual(missing_ingredients, [])
class Blast: DEFAULT_DB_PATH = path.expanduser(path.join("~", ".blast_db.json")) def __init__(self, path=None): if path is None: self.db_path = self.DEFAULT_DB_PATH else: self.db_path = path self.entries = Fridge(self.db_path) self.closed = False def validating_key(func): @wraps(func) def wrapper(self, args): if args.key is not None: self.validate_key(args.key) try: func(self, args) except KeyError: print("Error: Key not found!") return wrapper @staticmethod def is_valid_key(key): reg = r"[\w]+(\.[\w]+)?$" return re.match(reg, key) def clear(self, key=None): if key is not None: new_entries = {k: v for k, v in self.entries.items() if not k.startswith(key + ".")} else: new_entries = {} self.entries.clear() self.entries.update(new_entries) def get_list(self, key=None): if key is not None: keys = [name for name in self if name.startswith(key + ".")] else: keys = list(self) return sorted(keys) @classmethod def validate_key(cls, key): if not cls.is_valid_key(key): print( "Error: Invalid key: `{0}`\n".format(key) + "Expected format: `<word1>[.<word2>]` " + "where words consist of letters, numbers and underscores" ) sys.exit(1) ### Commands ### @validating_key def cmd_get(self, args): key = args.key val = self[key] print(val) @validating_key def cmd_set(self, args): key = args.key value = args.value if value is None: value = sys.stdin.read() self[key] = value @validating_key def cmd_delete(self, args): key = args.key del self[key] @validating_key def cmd_clear(self, args): key = args.key self.clear(key) @validating_key def cmd_list(self, args): key = args.key entries = self.get_list(key) if not entries: print("There are no entries!") return print("\n".join(entries)) @validating_key def cmd_open(self, args): key = args.key val = self[key] Platform.open(val) @validating_key def cmd_copy(self, args): key = args.key val = self[key] Platform.copy_to_clipboard(val) print(val) def cmd_move(self, args): key = args.key dest = args.dest self.validate_key(key) self.validate_key(dest) self[dest] = self[key] del self[key] ###^ Commands ^### ### Container interface ### def __getitem__(self, key): return self.entries[key] def __setitem__(self, key, value): self.entries[key] = value def __delitem__(self, key): del self.entries[key] def __iter__(self): return iter(self.entries) def __len__(self): return len(self.entries) def __contains__(self, item): return item in self.entries ###^ Container interface ^### ### Resource management ### def close(self): self.entries.close() self.closed = False def __enter__(self): return self def __exit__(self, *_): self.close() return False def __del__(self): self.close()
from fridge import Fridge if __name__ == '__main__': fridge = Fridge()
from fridge import Fridge from detector import Detector from electronics import Electronics from absorber import Absorber from simulated_noise import simulate_noise from scipy.optimize import minimize import numpy as np import matplotlib.pyplot as plt fSnolab = Fridge("SNOLAB", 20e-3, 145e-3, 900e-3, 4.8, 0) absorber = Absorber("Si", 1e-3, 38.1e-3, 3e-3, 2.329e3) eSnolab = Electronics(fSnolab, fSnolab.get_TCP(), fSnolab.get_TMC()) eSLAC = Electronics(fSnolab, fSnolab.get_TMC(), fSnolab.get_TMC(), 5e-3, 6e-3, 25e-9, 25e-9, 4e-12) # Name, fridge, absorber, n_channel PD2 = Detector("PD2", fSnolab, eSLAC, absorber, 1) simulate_noise(PD2) #print(a) h_fin = 600e-9 def main_func(TES_L, fin_L, overlap_L): #l_TES, l_fin, l_overlap = params #n_TES = 1185 #l_overlap = 15e-6 # TES number is garbage because will be set later. det = Detector("PD2", fSnolab, eSLAC, absorber, 1, 69, TES_L, fin_L, h_fin, overlap_L) return simulate_noise(det)
def loaded_fridge(): """Create Fridge object for testing.""" _fridge = Fridge("INV4403PH", load=10, temp=10, base_speed=1000) return _fridge
from fridge import Fridge f = Fridge('http://fridge.gr/tag/movies/') f.get_page_limit() f.loop_pages() f.loop_links()