def test_text_init(self): "Test the Step object creation from text" # 1. Create Step object from text myobj = step.Step(text=EXAMPLE_TEXT) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 30) self.assertEqual(myobj.turn_on, False) self.assertEqual(myobj.x_beg_end, (10, 12)) self.assertEqual(myobj.y_beg_end, (-1, 2)) self.assertEqual(myobj.z_beg_end, (-60, 60)) # 3. Check methods self.assertEqual(myobj.limited(), ((10, 12), (-1, 2), (-50, 50))) self.assertEqual(myobj.size(), 3 * 4 * 101) self.assertEqual(myobj.dim_overlap((0, 3), (4, 7)), None) self.assertEqual(myobj.dim_overlap((0, 3), (-2, -1)), None) self.assertEqual(myobj.dim_overlap((0, 3), (2, 7)), (2, 3)) self.assertEqual(myobj.dim_overlap((4, 7), (0, 3)), None) self.assertEqual(myobj.dim_overlap((-2, -1), (0, 3)), None) self.assertEqual(myobj.dim_overlap((2, 7), (0, 3)), (2, 3)) other = step.Step(text="off x=10..12,y=-1..2,z=-60..60") self.assertEqual(myobj.overlap(other), ((10, 12), (-1, 2), (-50, 50))) other = step.Step(text="off x=8..9,y=-1..2,z=-60..60") self.assertEqual(myobj.overlap(other), None) other = step.Step(text="off x=10..14,y=5..9,z=-60..60") self.assertEqual(myobj.overlap(other), None) other = step.Step(text="off x=11..14,y=-1..3,z=-60..40") self.assertEqual(myobj.overlap(other), ((11, 12), (-1, 2), (-50, 40)))
def step_two(self, inst, insts): "Execute a single instruction step" # 1. Start with entire area and no conflicts result = inst.size() overlaps = [] # 2. Processing limited dimension can cause wonky results if result <= 0: return 0 # 3. Loop for the remaining instruction steps for inst2 in insts: # 4. Do these two instructions overlap? overlap = inst.overlap(inst2) # 5. No, nothing to see here if not overlap: continue # 6. Else, Record the overlap -- Spent way too much time debugging, needed part2!!!! overlaps.append( step.Step(on=inst2.turn_on, ranges=overlap, part2=inst.part2)) # 7. Loop for all of the conflicts for indx, overlap in enumerate(overlaps): # 8. Subtract out the holes (on or off -- we just don't care) result -= self.step_two(overlap, overlaps[indx + 1:]) # 9. Return the size of area (minus any holes) return result
def processText(self, text): # 1. Start with nothing self.steps = {} self.completed = set() self.ordered = [] self.letters = set() # 2. Loop for every line of the text for line in text: # 3. Get the prerequisite and step from the line parts = line.split(' ') before = parts[1] letter = parts[7] # 4. If this is a new letter or step, add it if letter not in self.letters: self.letters.add(letter) if before not in self.letters: self.letters.add(before) if letter not in self.steps: self.steps[letter] = step.Step(letter=letter) # 5. Add the prerequisite self.steps[letter].add_before(before)
def setup(db='*.cfd database'): print 'Restoring expressions using a visit session' RestoreSession("~/sessions/visit_setup.session", 0) print 'opening *.cfd database in current directory' OpenDatabase('*.cfd database') print "Use 'tt' variable to control time" tt = step.Step() return tt
def test_empty_init(self): "Test the default Step creation" # 1. Create default Step object myobj = step.Step() # 2. Make sure it has the default values self.assertEqual(myobj.letter, None) self.assertEqual(len(myobj.before), 0)
def loadSteps(self, data): steps = {} for stepData in data: steps[stepData["id"]] = step.Step(stepData["id"], stepData["to"], stepData["app"], stepData["device"], stepData["action"], stepData["in"], stepData["error"], optional="optional") return steps
def __init__(self, text=None, part2=False): # 1. Set the initial values self.part2 = part2 self.text = text self.steps = [] self.state = set() # 2. Process text (if any) if text is not None and len(text) > 0: for line in text: self.steps.append(step.Step(text=line, part2=part2))
def test_empty_init(self): "Test the default Step creation" # 1. Create default Step object myobj = step.Step() # 2. Make sure it has the default values self.assertEqual(myobj.part2, False) self.assertEqual(myobj.text, None) self.assertEqual(myobj.turn_on, True) self.assertEqual(myobj.x_beg_end, (0, 0)) self.assertEqual(myobj.y_beg_end, (0, 0)) self.assertEqual(myobj.z_beg_end, (0, 0))
def test_text_init_out_of_bounds(self): "Test the Step object creation from ranges" # 1. Create Step object from text myobj = step.Step(text="on x=-54112..-39298,y=-85059..-49293,z=-27449..7877") # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 51) self.assertEqual(myobj.turn_on, True) self.assertEqual(myobj.x_beg_end, (-54112, -39298)) self.assertEqual(myobj.y_beg_end, (-85059, -49293)) self.assertEqual(myobj.z_beg_end, (-27449, 7877)) self.assertEqual(myobj.size(), 0)
def test_ranges_init(self): "Test the Step object creation from ranges" # 1. Create Step object from range values myobj = step.Step(on=False, ranges=((10, 12), (-1, 2), (-60, 60))) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(myobj.text, None) self.assertEqual(myobj.turn_on, False) self.assertEqual(myobj.x_beg_end, (10, 12)) self.assertEqual(myobj.y_beg_end, (-1, 2)) self.assertEqual(myobj.z_beg_end, (-60, 60)) self.assertEqual(myobj.size(), 3 * 4 * 101)
def addStep(self, id=None, to=[], app="", device="", action="", input={}, error=[]): if id == None: id = str(len(self.steps)) if len(self.steps) == 0: id = "start" self.steps[id] = step.Step(id, to, app, device, action, input, error) return {"status": "added new step"}
def test_init_with_letter(self): "Test the Step creation with an argument" # 1. Create default Step object myobj = step.Step(letter='A') # 2. Make sure it has the expected values self.assertEqual(myobj.letter, 'A') self.assertEqual(len(myobj.before), 0) # 3. Add a prereq myobj.add_before('C') self.assertEqual(myobj.letter, 'A') self.assertEqual(len(myobj.before), 1) self.assertEqual(myobj.before, set('C'))
def __init__(self): self.name = input("What is the title of this Recipe? ") self.author = input("Who is the author? ") self.description = input("Please give a description: ") self.cooktime = input("Approximate cook time? ") self.ingredients = {} self.date = time.strftime("%d/%m/%y") while True: more = input("Do you have an ingredient to add?") more = more.lower() if more == "yes": ingredient = input("What is the name of the ingredient? ") quantity = input("How much " + ingredient + " do you use?") self.ingredients[ingredient] = quantity elif more == "no": break else: print("I did not understand please say (yes/no)") self.steps = step.Step()
def __init__(self, contentFile): self.steps = [] self.answers = [] text = open(contentFile).read() for stepText in json.loads(text): self.steps.append(step.Step(stepText))
""" Entry to the 'pi-thrum' program. @author arosspope """ import step if __name__ == "__main__": print("Welcome to pi-thrum! An interactive 12-step sequencer for" " drum samples!\nTo stop program press CTRL+C\n") program = step.Step() try: program.run() except KeyboardInterrupt: print("\nThanks for Playing!") program.cleanup() exit()