Пример #1
0
    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)))
Пример #2
0
    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
Пример #3
0
    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)
Пример #4
0
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
Пример #5
0
    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)
Пример #6
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
Пример #7
0
    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))
Пример #8
0
    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))
Пример #9
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)
Пример #10
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)
Пример #11
0
    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"}
Пример #12
0
    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'))
Пример #13
0
    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()
Пример #14
0
 def __init__(self, contentFile):
     self.steps = []
     self.answers = []
     text = open(contentFile).read()
     for stepText in json.loads(text):
         self.steps.append(step.Step(stepText))
Пример #15
0
"""
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()