예제 #1
0
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"
예제 #2
0
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)
예제 #3
0
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"
예제 #4
0
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"
예제 #5
0
 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()
예제 #6
0
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"
예제 #7
0
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"
예제 #8
0
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"
예제 #9
0
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"
예제 #10
0
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"
예제 #11
0
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"
예제 #12
0
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"
예제 #13
0
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"
예제 #14
0
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"
예제 #15
0
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"
예제 #16
0
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"
예제 #17
0
def test_prettyPrintStages():
    bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList())
    bx.prettyPrintStages()
    print myname(), "OK"
예제 #18
0
        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)
예제 #19
0
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"
예제 #20
0
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"
예제 #21
0
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"
예제 #22
0
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"
예제 #23
0
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"
예제 #24
0
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"
예제 #25
0
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"
예제 #26
0
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"
예제 #27
0
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"
예제 #28
0
def test_getDispense():
    bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList())
    d = bx.getDispense()
    assert isinstance(d, list)
    assert d == [60.0, 15.0]
    print myname(), "OK"
예제 #29
0
def test_getMisc():
    bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList())
    m = bx.getMisc()
    assert isinstance(m, list)
    assert m == [15.0]
    print myname(), "OK"
예제 #30
0
def test_getHops():
    bx = recipeReader.bsmxStages(elaborateBsmx(), ctrlBsmxList())
    h = bx.getHops()
    assert isinstance(h, list)
    assert h == [60]
    print myname(), "OK"