def test_isValid(): bx = recipeReader.bsmxStages(simpleBsmx(), ctrlBsmxList()) assert bx.getRecipeName() == "18 Rune Stone IPA 2.5G" assert not bx.isValid() cx = recipeReader.bsmxStages(elaborateBsmx(), ctrl.setupControllers(False, True, True)) assert not cx.isValid() cp = os.path.dirname(__file__) print cp rp = cp + "/../../beersmith/18RuneStoneIPA.bsmx" print rp dx = recipeReader.bsmxStages(rp, ctrl.setupControllers(False, True, True)) assert dx.isValid() print myname(), "OK"
def updateRecipes(rl, bsmxfile): """ Update Recipe list by removing all recipes that does not work. This is checked by doing a check against recipe and equipment """ rl.readBeerSmith(bsmxfile) iterlist = rl.getlist() deleteList = [] for recipeName in iterlist: recipeObjBsmx = rl.getRecipe(recipeName) recipeBSMX = recipeObjBsmx.getBSMXstring() recipeObjParsed = recipeReader.bsmxStages(recipeBSMX, controllers) if not recipeObjParsed.isValid(): deleteList.append(recipeName) logging.info("**********Fail on parseBSMX:" + recipeName) else: ce = checker.equipment(controllers, recipeObjParsed.getStages()) if not ce.check(): deleteList.append(recipeName) logging.info("**********Fail on equipment check:" + recipeName) for deleteName in deleteList: logging.info("deleting" + deleteName) rl.deleteRecipe(deleteName) #rl.nameListToMemcache() return(rl)
def test_isValid(): bx = recipeReader.bsmxStages(simpleBsmx(), ctrlBsmxList()) assert bx.getRecipeName() == "18 Rune Stone IPA 2.5G" assert not bx.isValid() print(os.getcwd()) e = equipment.allEquipment('src/equipment/*.yaml') myequipment = e.get('Grain 2.5G, 5Gcooler, 4Gpot') cx = recipeReader.bsmxStages(elaborateBsmx(), ctrl.setupControllers(False, True, True, myequipment)) assert not cx.isValid() cp = os.path.dirname(__file__) print cp rp = cp + "/../../beersmith/18RuneStoneIPA.bsmx" print rp dx = recipeReader.bsmxStages(rp, ctrl.setupControllers(False, True, True, myequipment)) assert dx.isValid() print myname(), "OK"
def test_GoodRecipe(): print(os.getcwd()) e = equipment.allEquipment('src/equipment/*.yaml') myequipment = e.get('Grain 3G, 5Gcooler, 5Gpot') bx = recipeReader.bsmxStages(goodRecipe(), ctrl.setupControllers(False, True, True, myequipment)) assert bx.isValid() print myname(), "OK"
def updateStages(self): """ A helper function that should be in the recipeClass or recipeListClass creates a bsmxStages object """ bsmx = self.recipelist.getRecipe(self.selectedRecipeName).getBSMXdoc() self.recipeObject = recipeReader.bsmxStages(bsmx, self.controllers) self.stages = self.recipeObject.getStages()
def test_init_bsmxStages_string(): bx = recipeReader.bsmxStages(simpleBsmx(), ctrlBsmxList()) assert bx.getRecipeName() == "18 Rune Stone IPA 2.5G" doc = bx.getDocTree() equipmentName = recipeReader.bsmxReadString(doc, "F_E_NAME") assert equipmentName == "Grain 2.5G, 5Gcooler, 4Gpot" assert bx.getEquipment() == "Grain 2.5G, 5Gcooler, 4Gpot" assert bx.getStages() == {} print myname(), "OK"
def test_badTunDeadSpace(): bx = recipeReader.bsmxStages(badTunDeadSpaceBsmx(), ctrl.setupControllers(False, True, True)) print bx.getTunDeadSpace() print bx.getRecipeName() print bx.isValid() assert not bx.isValid() print str(bx.getStages()) print myname(), "OK"
def test_badProfile(): bx = recipeReader.bsmxStages(badMashProfile(), ctrlBsmxList()) assert bx.getRecipeName() == "BadProfile" doc = bx.getDocTree() profileName = recipeReader.bsmxReadString(doc, "F_R_NAME") print profileName equipmentName = recipeReader.bsmxReadString(doc, "F_E_NAME") print equipmentName assert equipmentName == "Grain 2.5G, 5Gcooler, 4Gpot" assert bx.getEquipment() == "Grain 2.5G, 5Gcooler, 4Gpot" assert bx.getStages() == {} print myname(), "OK"
def test_badTunDeadSpace(): print(os.getcwd()) e = equipment.allEquipment('src/equipment/*.yaml') myequipment = e.get('Grain 3G, 5Gcooler, 5Gpot, platechiller') bx = recipeReader.bsmxStages(badTunDeadSpaceBsmx(), ctrl.setupControllers(False, True, True, myequipment)) print bx.getTunDeadSpace() print bx.getRecipeName() print bx.isValid() assert not bx.isValid() print str(bx.getStages()) print myname(), "OK"
def test_init_bsmxStages_file(): cp = os.path.dirname(__file__) print cp rp = cp + "/../../beersmith/18RuneStoneIPA.bsmx" print rp bx = recipeReader.bsmxStages(rp, ctrlBsmxList()) assert bx.getRecipeName() == "18 Rune Stone IPA 2.5G" doc = bx.getDocTree() equipmentName = recipeReader.bsmxReadString(doc, "F_E_NAME") assert equipmentName == "Grain 2.5G, 5Gcooler, 4Gpot" assert bx.getEquipment() == "Grain 2.5G, 5Gcooler, 4Gpot" #print bx.getStages() assert bx.getStages() != {} print myname(), "OK"
def test_getDispenserAtTime(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) d1 = bx.getDispenserAtTime(60) assert isinstance(d1, str) assert d1 == 'dispenser1' d2 = bx.getDispenserAtTime(15.1) assert isinstance(d2, str) assert d2 == 'dispenser2' d3 = bx.getDispenserAtTime(0.0) assert isinstance(d3, str) assert d3 == 'error' print myname(), "OK"
def testElaborateBSMX(): rl = getElaborateBSMX() controllers = ctrlBsmxList() assert len(rl.getNameList()) > 0 print "Number of recipes:", len(rl.getNameList()) for name in rl.getNameList(): print "...", name recipeObjBsmx = rl.getRecipe(name) recipeBSMX = recipeObjBsmx.getBSMXdoc() recipeObjParsed = recipeReader.bsmxStages(recipeBSMX, controllers) Tstrike = recipeReader.strikeTemp(recipeObjParsed, 60) print "Strike temperature ", Tstrike print myname(), "OK"
def test_testcold(): cp = os.path.dirname(__file__) print cp rp = cp + "/../../beersmith/testcold.bsmx" print rp bx = recipeReader.bsmxStages(rp, ctrlBsmxList()) assert bx.getRecipeName() == "testcold" doc = bx.getDocTree() equipmentName = recipeReader.bsmxReadString(doc, "F_E_NAME") print equipmentName assert equipmentName == "Grain 3G, 5Gcooler, 5Gpot" assert bx.getEquipment() == "Grain 3G, 5Gcooler, 5Gpot" #print bx.getStages() assert bx.getStages() != {} print myname(), "OK"
def test_testbatchsparge(): cp = os.path.dirname(__file__) print cp rp = cp + "/../../beersmith/SilverDollarPorter.bsmx" print rp bx = recipeReader.bsmxStages(rp, ctrlBsmxList()) print bx.getRecipeName() assert bx.getRecipeName() == "Silver Dollar Porter 2.5 gallons" doc = bx.getDocTree() equipmentName = recipeReader.bsmxReadString(doc, "F_E_NAME") print equipmentName assert equipmentName == "Pot and Cooler ( 5 Gal/19 L) - All Grain" assert bx.getEquipment() == "Pot and Cooler ( 5 Gal/19 L) - All Grain" #print bx.getStages() assert bx.getStages() != {} print myname(), "OK"
def testOneFullBSMX(): rl = getTestRecipeList() controllers = ctrl.setupControllers(False, True, True) assert len(rl.getNameList()) > 0 print "Number of recipes:", len(rl.getNameList()) recipeObj = rl.getRecipe('17 Falconers Flight IPA') recipeBSMX = recipeObj.getBSMXstring() print recipeBSMX recipeObjParsed = recipeReader.bsmxStages(recipeBSMX, controllers) print recipeObjParsed.getEquipment() s = recipeObjParsed.getStages() assert(s != {}) assert len(s) > 0 assert(recipeObjParsed.isValid()) print myname(), "OK"
def testOneFullBSMX(): rl = getTestRecipeList() print(os.getcwd()) e = equipment.allEquipment('src/equipment/*.yaml') myequipment = e.get('Grain 2.5G, 5Gcooler, 4Gpot') controllers = ctrl.setupControllers(False, True, True, myequipment) assert len(rl.getNameList()) > 0 print "Number of recipes:", len(rl.getNameList()) recipeObj = rl.getRecipe('17 Falconers Flight IPA') recipeBSMX = recipeObj.getBSMXstring() print recipeBSMX recipeObjParsed = recipeReader.bsmxStages(recipeBSMX, controllers) print recipeObjParsed.getEquipment() s = recipeObjParsed.getStages() assert(s != {}) assert len(s) > 0 assert(recipeObjParsed.isValid()) print myname(), "OK"
def test_prettyPrintStages(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) bx.prettyPrintStages() print myname(), "OK"
if controllers.HWOK(): logging.info('USB devices connected') else: logging.info('ERROR: Missing USB devices, exiting') sys.exit(1) # Read one of the recipe files if recipeFile != "": j = recipeReader.jsonStages(recipeFile, controllers) if not j.isValid(): logging.error("Error: bad json recipe") else: recipeName = j.getRecipeName() stages = j.getStages() elif bsmxFile != "": b = recipeReader.bsmxStages(bsmxFile, controllers) if not b.isValid(): logging.error("Error: bad bsmx recipe") else: recipeName = b.getRecipeName() stages = b.getStages() else: recipeName = "" stages = {} equipmentchecker = checker.equipment(controllers, stages) if not equipmentchecker.check(): logging.error("Error: equipment vs recipe validation failed") logging.info("Running " + recipeName)
def test_getTunDeadSpace(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) ds = bx.getTunDeadSpace() assert isinstance(ds, float) assert abs(ds - 0.2) < 0.01 print myname(), "OK"
def test_getTempF(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) t = bx.getTempF('F_MH_GRAIN_TEMP') assert isinstance(t, float) assert abs(t - 68.0) < 0.1 print myname(), "OK"
def test_getTimeMin(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) t = bx.getTimeMin('F_MS_STEP_TIME') assert isinstance(t, float) assert abs(t - 60.0) < 0.1 print myname(), "OK"
def test_getVolQt(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) v = bx.getVolQt('F_E_MASH_VOL') assert isinstance(v, float) assert abs(v - 20.0) < 0.1 print myname(), "OK"
def test_getWeightLb(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) w = bx.getWeightLb('F_MH_GRAIN_WEIGHT') assert isinstance(w, float) assert abs(w - 7.25) < 0.1 print myname(), "OK"
def test_getPreBoilVolume(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) ds = bx.getPreBoilVolume() assert isinstance(ds, float) assert abs(ds - 13.648) < 0.01 print myname(), "OK"
def test_getStrikeVolume(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) ds = bx.getStrikeVolume() assert isinstance(ds, float) assert abs(ds - 9.2625) < 0.01 print myname(), "OK"
def test_getFieldStr(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) v = bx.getFieldStr('F_E_MASH_VOL') assert isinstance(v, str) or isinstance(v, unicode) assert v == '640.0000000' print myname(), "OK"
def test_getSpargeVolume(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) ds = bx.getSpargeVolume() assert isinstance(ds, float) assert abs(ds - 8.07947590361) < 0.01 print myname(), "OK"
def test_getDispense(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) d = bx.getDispense() assert isinstance(d, list) assert d == [60.0, 15.0] print myname(), "OK"
def test_getMisc(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) m = bx.getMisc() assert isinstance(m, list) assert m == [15.0] print myname(), "OK"
def test_getHops(): bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList()) h = bx.getHops() assert isinstance(h, list) assert h == [60] print myname(), "OK"