Esempio n. 1
0
 def process_phase_sequence(self, phase_sequence):
     program_a = Program(self.program, default_inputs=[phase_sequence[0], 0])
     program_b = Program(self.program, default_inputs=[phase_sequence[1], program_a.outputs.pop()])
     program_c = Program(self.program, default_inputs=[phase_sequence[2], program_b.outputs.pop()])
     program_d = Program(self.program, default_inputs=[phase_sequence[3], program_c.outputs.pop()])
     program_e = Program(self.program, default_inputs=[phase_sequence[4], program_d.outputs.pop()])
     return program_e.outputs.pop()
Esempio n. 2
0
def calc(log, values, mode, debug=False, draw=False):
    from program import Program
    if mode == 1:
        prog = Program(values, log if debug else None)
        while not prog.seen_pc():
            prog.step()
        return prog.acc
    else:
        prog = Program(values)
        swap = {"jmp": "nop", "nop": "jmp"}
        to_test = []
        for i in range(len(values)):
            if prog.instructions[i].op in swap:
                to_test.append(i)

        for i in to_test:
            prog = Program(values)
            prog.instructions[i].op = swap[prog.instructions[i].op]
            backup = prog.clone()
            hit_end = True
            while prog.step():
                if prog.seen_pc():
                    hit_end = False
                    break
            if hit_end:
                if draw:
                    while True:
                        print(f"Drawing frame {backup.steps} of {prog.steps}")
                        backup.show()
                        if not backup.step():
                            break
                return prog.acc

    return 0
Esempio n. 3
0
def main():
    logging.basicConfig(level=logging.DEBUG)
    logging.info('Started')
    lv = LoadValues()
    lines = lv.strip_lines()

    instr = get_instructions(lines)
    prog = Program(instr)
    (_, ip, acc) = prog.does_terminate()
    print("Star 1 : ", acc)

    finished = None
    for (i, cur_instr) in enumerate(instr):
        if cur_instr[0] == 'nop' or cur_instr[0] == 'jmp':
            instr2 = instr.copy()
            if cur_instr[0] == 'nop':
                instr2[i] = ('jmp', cur_instr[1])
            else:
                instr2[i] = ('nop', cur_instr[1])
            (res, ip, acc) = Program(instr2).does_terminate()
            if res:
                finished = (ip, acc)
                break

    print("Star 2 : ", acc)

    logging.info('Finished')
Esempio n. 4
0
    def test_profit_04_notProfit(self):

        Nackadmein = School("Nackademin")
        iot = Program("IoT")
        java = Program("Java")
        Nackadmein.addProgram(iot)
        Nackadmein.addProgram(java)

        studentx = Student("john", "gatan 12", "iot", 17, 50)
        studenty = Student("peter", "gatan 2", "iot", 17, 50)
        studentz = Student("peter", "gatan 2", "iot", 17, 40)
        iot.addStudent(studentx)
        iot.addStudent(studenty)
        java.addStudent(studentz)

        staff1 = Staff("Mark", "Tomteboda 1", "Nackademin", 50)
        staff2 = Staff("Pike", "Tomteboda 3", "Nackademin", 50)
        staff3 = Staff("Moa", "Tomteboda 1", "Nackademin", 50)
        Nackadmein.addStaff(staff1)
        Nackadmein.addStaff(staff2)
        Nackadmein.addStaff(staff3)

        self.assertEqual(
            Nackadmein.getProfit(Nackadmein.sumOfPay(), Nackadmein.totalFee()),
            False)
Esempio n. 5
0
    def test_failed_build(self):
        vert = VertexShader("A")
        frag = FragmentShader("B")

        program = Program(verts = vert)
        with self.assertRaises(ValueError):
            program.activate()

        program = Program(frags = frag)
        with self.assertRaises(ValueError):
            program.activate()
Esempio n. 6
0
def test_load_inter_fpga_connections():
    program = Program([])
    mapping = ProgramMapping([program], {
        "n1:f1": program,
        "n1:f2": program,
        "n2:f1": program
    })

    connections = {
        ("n1:f1", 0): ("n1:f2", 0),
        ("n1:f2", 1): ("n2:f1", 1),
        ("n2:f1", 0): ("n1:f1", 1),
    }

    graph = networkx.Graph()
    fpgas = load_inter_fpga_connections(graph, connections, mapping)

    assert len(fpgas) == 3
    fpgas = sorted(fpgas, key=lambda f: f.key())
    assert fpgas[0].program is program

    assert list(graph.edges(fpgas[0].channels[0])) == [(fpgas[0].channels[0],
                                                        fpgas[1].channels[0])]
    assert list(graph.edges(fpgas[0].channels[1])) == [(fpgas[0].channels[1],
                                                        fpgas[2].channels[0])]
    assert list(graph.edges(fpgas[1].channels[1])) == [(fpgas[1].channels[1],
                                                        fpgas[2].channels[1])]
    assert list(graph.edges(fpgas[2].channels[0])) == [(fpgas[2].channels[0],
                                                        fpgas[0].channels[1])]
def P15():
    p = Program(num_prog_inputs=2)
    p.create_add_component()
    p.create_and_component()
    p.create_xor_component()
    p.create_bitshiftright_component(1)
    return ProgramSynthesis(p, BVT.P15, 'P15')
Esempio n. 8
0
def run_program(action, name):
    global p_running, s, p
    ret = {
        "type": "program",
        "response": {
            "action": action,
            "name": name,
            "status": ""
        }
    }
    if action == "run":
        for program in s.setup['programs']:
            if program['name'] == name:
                logger.debug(f"runProgram({name})")
                p = Program(program, s.setup, t.hist, program_complete)
                p.start()
                ret['response']['status'] = "success"
                return ret, 200
    elif action == "cancel":
        if p.running:
            p.cancel()
            ret['response']['status'] = "success"
            return ret, 200
    ret['response'][
        'status'] = f"error: program[{name}] does not exist or no program running"
    return ret, 200
def youtubeProgram():

    # Creating Youtube Keword
    yt = Program('snowboy.umdl')

    def yt_callback(x):  # called before recorder
        print("-----OPEN YOUTUBE CALLBACK-----")

    def recorder_callback(fname):  # recieves recorded file
        print("Proccessing request...")
        r = sr.Recognizer()
        with sr.AudioFile(fname) as source:
            audio = r.record(source)  # read the entire audio file

        try:
            # can use gdp
            text = r.recognize_google(audio)
            webbrowser.open('https://www.youtube.com/results?search_query=' +
                            "+".join(text.split(' ')))
        except sr.UnknownValueError:
            print("No query recieved. Going to home page -->")
            webbrowser.open('https://www.youtube.com/')  # default / home page
        except sr.RequestError as e:
            print(
                "Could not request results from Google Speech Recognition service; {0}"
                .format(e))

        os.remove(fname)

        yt.callback = yt_callback

    return yt, recorder_callback
Esempio n. 10
0
def rspdownload(args):
    datadir = getDataDir(args)
    log = Logger('Program')
    direction = S3Operation.Direction.DOWN
    program = Program(args.program)

    log.title('STARTING PYTHON DOWNLOADER', "=")

    downloadPath = menuwalk(program)
    assert downloadPath, "No Product chosen. Exiting"

    keyprefix = '/'.join(downloadPath)
    conf = {
        "delete": args.delete,
        "force": args.force,
        "direction": direction,
        "localroot": path.join(datadir, keyprefix),
        "keyprefix": keyprefix,
        "bucket": program.Bucket
    }

    s3ops = s3BuildOps(conf)

    log.title('Please Confirm that you wish to proceed?')
    result = query_yes_no("Begin?")

    if result:
        for key in s3ops:
            s3ops[key].execute()
    else:
        log.info("\n<EXITING> No sync performed\n")
Esempio n. 11
0
def send_program():
    json_data = request.args.get('json_data')
    print("======>>>json_data" + json_data)
    program = Program(json_data)
    prog_name = program.send_program()
    print("send program:" + prog_name)
    return {"code": "200", "program_name": prog_name}
Esempio n. 12
0
def test_allocation_get_channel():
    program = Program([Push(0), Pop(0), Push(1), Push(2), Pop(2)])

    assert program.get_channel_for_port_key(0, KEY_CKS_DATA) == 0
    assert program.get_channel_for_port_key(0, KEY_CKS_CONTROL) == 3
    assert program.get_channel_for_port_key(1, KEY_CKR_DATA) is None
    assert program.get_channel_for_port_key(2, KEY_CKS_DATA) == 2
Esempio n. 13
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('-t', action='store_true')
    parser.add_argument('-d', action='store_true')
    arg = parser.parse_args()

    program = Program()
    cap = program.init_cap()

    if arg.t:
        program.show_trackbars()

    ret = True
    cnt = 0
    while ret:
        ret, img = cap.read()
        if cnt > 10000:
            break
        cnt += 1
        yellow_mask, x_yellow, y_yellow = program.filter_color(img, 'YELLOW')
        print(cnt, x_yellow, y_yellow)


        if arg.d:
            cv.circle(img, (x_yellow, y_yellow), 5, (0, 255, 0), -1)
            cv.putText(img, f"x : {int(x_yellow)} y : {int(y_yellow)}", (10, 100 - 25),
                       cv.FONT_HERSHEY_COMPLEX_SMALL, 0.8, (10, 255, 10))
            cv.imshow("image", img)
            cv.imshow("mask", yellow_mask)

        k = cv.waitKey(1) & 0xFF
        if k == 27:
            program._setting.write()
            cv.destroyAllWindows()
            break
Esempio n. 14
0
def parse(tokens):
    tkGen = TokenStream(tokens)
    program = Program()

    while tkGen.index < len(tokens):
        token = tkGen.peek()
        if token.type == "CLASS_SYMBOL":
            nextToken(tkGen)

            nextTk = nextToken(tkGen)
            if nextTk.type != "IDENT":
                throwErr(SOURCE_FILE, nextTk.pos, "Expected IC name", 2)

            curIC = IC(nextTk.value)

            nextTk = nextToken(tkGen)
            if nextTk.type != "OPEN_BRACE":
                throwErr(SOURCE_FILE, nextTk.pos, "Expected IC defintion", 2)

            while tkGen.peek().type != "CLOSE_BRACE":
                local, op, arg = parseExpr(tkGen)
                curIC.addTreeExpr(local, op, arg)

            nextToken(tkGen)
            program.addIC(curIC)

        else:
            _global, op, arg = parseExpr(tkGen)

            program.addTreeExpr(_global, op, arg)

    return program
Esempio n. 15
0
def main():
    INSTRUCTION = """
0 - exit
1 - sort by name in non-decreasing order
2 - sort by name in non-increasing order
3 - sort by destination in non-decreasing order
4 - sort by destination in non-increasing order
5 - sort by flight number in non-decreasing order
6 - sort by flight number in non-increasing order
7 - sort by price in non-decreasing order
8 - sort by price in non-increasing order
9 - find aeroflots with provided destination
10 - find aeroflots with provided name
11 - find aeroflots with provided departure day
12 - add new aeroflot
13 - delete aeroflot by index
14 - edit aeroflot(enter index and field which you want to change)
15 - print aeroflots
"""
    print(INSTRUCTION)
    path_read = input("enter path_read: ")
    path_write = input("enter path_write: ")
    reader = ReadFromFile(path_read)
    file = FileEditor(path_write)


    collection = reader.read()
    menu = Program(collection)
    while True:
        try:
            menu.menu(file)
        except Exception as s:
            print(s)
Esempio n. 16
0
    def learn_ASP_constraints(self,
                              script_name,
                              config=None,
                              print_results=False):
        if self.config["debug"]:
            print("DEBUGGING MODE IS ON")
        asp_output_program_name = "tmp_asp_script.asp"

        program = Program(script_name, config=self.config)

        generator = Generator(program, asp_output_program_name)
        generator.include_original_sketch()
        generator.generate_program()

        self.asp_engine.run(asp_output_program_name)
        before_dominance_check = self.asp_engine.get_number_of_solutions()
        print("before dominance models:", before_dominance_check)
        # bp()
        self.asp_engine.remove_dominated(program)
        if print_results:
            self.asp_engine.print_result()
        solutions = self.asp_engine.get_set_of_atoms()
        print('after dominance models:', len(solutions))

        if self.config.get("debug", False):
            print("DEBUGGING MODE: END OF THE OUTPUT")
        return solutions, before_dominance_check
Esempio n. 17
0
def test_cks_table_double_rail2():
    program = Program([Push(0), Pop(0), Push(1), Pop(1)])
    ctx = get_routing_ctx(
        program, {
            ("N:F0", 1): ("N:F1", 0),
            ("N:F0", 3): ("N:F1", 2),
            ("N:F1", 1): ("N:F2", 0),
            ("N:F1", 3): ("N:F2", 2),
            ("N:F2", 1): ("N:F3", 0),
            ("N:F2", 3): ("N:F3", 2),
            ("N:F3", 1): ("N:F4", 0),
            ("N:F3", 3): ("N:F4", 2),
            ("N:F4", 1): ("N:F5", 0),
            ("N:F4", 3): ("N:F5", 2),
            ("N:F5", 1): ("N:F0", 0),
            ("N:F5", 3): ("N:F0", 2),
        })

    graph, routes, fpgas = (ctx.graph, ctx.routes, ctx.fpgas)

    fpga = get_fpga(fpgas, "N:F4")
    tables = cks_routing_tables(fpga, fpgas, routes)
    check_fpga_tables(fpga, tables,
                      [[['0->1', '0->1'], ['QSFP', 'QSFP'], ['QSFP', 'QSFP'],
                        ['0->2', 'QSFP'], ['CKR', 'CKR'], ['0->3', '0->1']],
                       [['QSFP', 'QSFP'], ['QSFP', '1->0'], ['1->0', '1->0'],
                        ['1->0', '1->2'], ['CKR', 'CKR'], ['QSFP', 'QSFP']],
                       [['2->1', '2->1'], ['QSFP', 'QSFP'], ['QSFP', 'QSFP'],
                        ['QSFP', 'QSFP'], ['CKR', 'CKR'], ['2->3', '2->1']],
                       [['QSFP', 'QSFP'], ['QSFP', 'QSFP'], ['3->0', '3->0'],
                        ['3->0', '3->0'], ['CKR', 'CKR'], ['QSFP', 'QSFP']]])
Esempio n. 18
0
def test_cks_table_double_rail():
    program = Program([Push(0), Pop(0), Push(1), Pop(1)])
    ctx = get_routing_ctx(
        program, {
            ("N1:F0", 1): ("N1:F1", 0),
            ("N1:F0", 3): ("N1:F1", 2),
            ("N1:F1", 1): ("N2:F0", 0),
            ("N1:F1", 3): ("N2:F0", 2),
            ("N2:F0", 1): ("N2:F1", 0),
            ("N2:F0", 3): ("N2:F1", 2),
            ("N2:F1", 1): ("N1:F0", 0),
            ("N2:F1", 3): ("N1:F0", 2),
        })

    graph, routes, fpgas = (ctx.graph, ctx.routes, ctx.fpgas)

    fpga = get_fpga(fpgas, "N1:F0")
    tables = cks_routing_tables(fpga, fpgas, routes)
    check_fpga_tables(fpga, tables, [
        [["CKR", "CKR"], ["0->1", "0->1"], ["QSFP", "QSFP"], ["0->2", "QSFP"]],
        [["CKR", "CKR"], ["QSFP", "1->3"], ["QSFP", "1->0"], ["1->0", "1->0"]],
        [["CKR", "CKR"], ["2->1", "2->1"], ["QSFP", "QSFP"], ["QSFP", "QSFP"]],
        [["CKR", "CKR"], ["QSFP", "QSFP"], ["QSFP", "QSFP"], ["3->0", "3->0"]]
    ])

    fpga = get_fpga(fpgas, "N1:F1")
    tables = cks_routing_tables(fpga, fpgas, routes)
    check_fpga_tables(fpga, tables, [
        [["QSFP", "QSFP"], ["CKR", "CKR"], ["0->1", "0->1"], ["QSFP", "QSFP"]],
        [["1->0", "1->2"], ["CKR", "CKR"], ["QSFP", "1->3"], ["QSFP", "QSFP"]],
        [["QSFP", "QSFP"], ["CKR", "CKR"], ["2->1", "2->1"], ["QSFP", "QSFP"]],
        [["3->0", "3->0"], ["CKR", "CKR"], ["QSFP", "QSFP"], ["QSFP", "QSFP"]]
    ])
Esempio n. 19
0
def get_programs(dir,
                 tmpdir,
                 pattern='.*',
                 allow_validation_scripts=False,
                 includedir=None,
                 error_handler=logging):
    if not os.path.isdir(dir):
        return []
    ret = []
    for f in sorted(os.listdir(dir)):
        path = os.path.join(dir, f)
        added = False
        if allow_validation_scripts:
            try:
                ret.append(ValidationScript(path))
                continue
            except ProgramWarning as e:
                pass
        try:
            if re.match(pattern, f):
                ret.append(Program(path, tmpdir, includedir=includedir))
            else:
                error_handler.info("Ignoring '%s'; invalid filename" % f)
        except ProgramError as e:
            error_handler.error('%s: %s' % (f, e))
        except ProgramWarning as e:
            error_handler.warning('%s: %s' % (f, e))
        except Exception as e:
            raise
    return ret
Esempio n. 20
0
 def test_detach(self):
     vert = VertexShader("A")
     frag = FragmentShader("B")
     program = Program(vert, frag)
     program.detach(frag)
     assert len(program.shaders) == 1
     assert program.shaders[0].code == "A"
    def __init__(self, test_utility, model, serial_manager, report):
        super().__init__()
        self.abort_btn = QPushButton("Abort")
        self.abort_btn.clicked.connect(self.abort)
        self.setButton(QWizard.CustomButton1, self.abort_btn)
        self.button(QWizard.FinishButton).clicked.connect(self.finish)

        qbtn_layout = [
            QWizard.Stretch, QWizard.NextButton, QWizard.FinishButton,
            QWizard.CustomButton1
        ]
        self.setButtonLayout(qbtn_layout)

        self.button(QWizard.NextButton).setEnabled(False)

        # This fixes a bug in the default style which hides the QWizard
        # buttons until the window is resized.
        self.setWizardStyle(0)

        setup_id = self.addPage(
            Setup(self, test_utility, serial_manager, model, report))
        program_id = self.addPage(
            Program(self, test_utility, serial_manager, model, report))
        interfaces_id = self.addPage(
            Interfaces(self, test_utility, serial_manager, model, report))
        final_id = self.addPage(FinalPage(self, test_utility, report))

        self.setup_page = self.page(setup_id)
        self.program_page = self.page(program_id)
        self.interfaces_page = self.page(interfaces_id)
        self.final_page = self.page(final_id)

        self.tu = test_utility
        self.report = report
Esempio n. 22
0
def build():
    inputFileName = sys.argv[1]
    inputFile = open(inputFileName, 'r', encoding='UTF-8')
    program = Program()

    for lineNumber, line in enumerate(inputFile, 1):
        line = clean(line)

        if line:
            try:
                if (line.startswith(common.PREFIX_LABEL)):
                    program.addLabel(parseLabel(line))
                else:
                    program.addInstruction(parseInstruction(line))
            except (ParserException, ProgramException) as e:
                print('Error on line: %s' % lineNumber)
                print('Content: %s' % line)
                print('Message: %s' % e)
                sys.exit(1)

    if re.search(r'\.asm$', inputFileName):
        outputFileName = re.sub(r'\.asm$', '.hack', inputFileName)
    else:
        outputFileName = inputFileName + '.hack'

    outputFile = open(outputFileName, 'w')
    outputFile.write(program.getBinary())
    outputFile.write('\n')
Esempio n. 23
0
def test_codegen_device(file_tester):
    program = Program([
        Push(0, "short", 8),
        Pop(0),
        Push(1),
        Pop(2, "char", 8),
        Broadcast(3, "float", 64),
        Broadcast(4, "int"),
        Push(5, "double", 32),
        Reduce(6, "float", 16, "add"),
        Scatter(7, "double"),
        Gather(8, "char")
    ])

    mapping = ProgramMapping([program], {
        "n1:f1": program,
        "n1:f2": program,
        "n2:f1": program,
        "n3:f1": program
    })

    connections = {
        ("n1:f1", 0): ("n1:f2", 0),
        ("n1:f2", 1): ("n2:f1", 1),
        ("n1:f2", 2): ("n3:f1", 1),
        ("n2:f1", 0): ("n1:f1", 1),
    }

    ctx = create_routing_context(connections, mapping)

    file_tester.check(
        "smi-device-1.h",
        generate_program_device(ctx.fpgas[0], ctx.fpgas, ctx.graph, 4))
Esempio n. 24
0
def search_next(cur, program, fo_remain, ho_remain, target_len):
    if len(program) == target_len:
        p = Program()
        for s in program:
            p.append_step(Step(*s))
        PROGRAMs.append(p)
        # print p
        return
    else:
        valid_fo_funcs = filter(lambda x: FUNCs['FO'][x][1][0] == cur[2] \
                if len(FUNCs['FO'][x][1]) == 1 \
                else FUNCs['FO'][x][1][1] == cur[2], fo_remain)
        # len(FUNCs['HO'][x][1]) == 2 \ and
        valid_ho_funcs = filter(lambda x: FUNCs['HO'][x][1][1] == cur[2],
                                ho_remain)
        for func in valid_fo_funcs:
            search_next(FUNCs['FO'][func], \
                    program+[(func,)], \
                    filter(lambda x: x!=func, valid_fo_funcs), \
                    valid_ho_funcs, \
                    target_len)
        for func in valid_ho_funcs:
            for lambs in filter(lambda x: (Lambdas[x][3], Lambdas[x][2])\
                    ==FUNCs['HO'][func][1][0], \
                    [l for l in Lambdas]):
                search_next(FUNCs['HO'][func], \
                        program+[(func, lambs)], \
                        valid_fo_funcs, \
                        filter(lambda x: x!=func, valid_ho_funcs), \
                        target_len)
Esempio n. 25
0
 def __init__(self, name, command, positions, verbose):
     Thread.__init__(self)
     self._name = name
     self._positions = positions
     self._verbose = verbose
     command = command + " --logfile-name=" + name + ".log"
     self._program = Program(command, verbose)
Esempio n. 26
0
    def test_incrementer(self):
        p = Program()
        p.add("R0+ -> L1")
        p.add("HALT")

        state = p.execute([0])
        self.assertEqual(state, [1])
Esempio n. 27
0
    def read_file(self):
        """Populate the simulation attrubutes"""
        with open(self.filename, encoding='utf-8') as file:
            json_file = json.load(file)

        cache_dict = json_file["Cache"]
        cache_params = get_param_list(cache_dict, CACHE_PARAMS)
        self.cache = Cache(*cache_params)

        tlb_dict = json_file["TLB"]
        tlb_params = get_param_list(tlb_dict, TLB_PARAMS)
        self.tlb = TLB(*tlb_params)

        memory_dict = json_file["MemoriaFisica"]
        memory_params = get_param_list(memory_dict, MEM_PARAMS)
        self.memory = Memory(*memory_params)

        disk_write = self.memory.write_speed * 10
        disk_read = self.memory.read_speed * 10
        self.disk = Disk(disk_write, disk_read)

        self.page_table_size = self.memory.frames * 2
        self.virtual_size = self.memory.size * 2
        self.bits_address = int(log(self.virtual_size, 2))
        self.bits_page = int(log(self.page_table_size, 2))

        programs = json_file["Programas"]
        for program_dic in programs:
            program_parameters = get_param_list(program_dic,
                                                ["Nombre", "Secuencia"])
            new_program = Program(*program_parameters, self.page_table_size)
            self.programs.append(new_program)
            self.program_map[new_program.id] = new_program
            self.stats[new_program.id] = ProgramStats()
Esempio n. 28
0
def main():
    app = None

    try:
        from program import Program

        app = Program()
        app.run()

    except Exception as exc:
        traceback.print_exc(file=open(ERROR_LOG, "w"))

        class Error(App):
            theme_cls = kivymd.theming.ThemeManager()

            def report_callback(self, *args):
                try:
                    import webbrowser
                    webbrowser.open(PROJ_REPO + "/issues/new?body=" + str(exc))
                except Exception:
                    traceback.print_exc(file=open(ERROR_LOG, "w"))
                    sys.exit(1)

            def build(self):
                return BugReporter(report_callback=self.report_callback)

        Error().run()
Esempio n. 29
0
def main():
    glutInit()
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH)
    glutInitWindowSize(1000, 800)
    glutInitContextVersion(4, 1)
    glutInitContextProfile(GLUT_CORE_PROFILE)
    wnd = glutCreateWindow('OpenGL 4')

    # model = Model(*icosphere(6))
    model = Model(*sphere(480, 240))
    cam = Camera(sensivity=0.1)

    program = Program(vertex='vertex.glsl',
                      tess_control='tess_control.glsl',
                      tess_eval='tess_eval.glsl',
                      geometry='geometry.glsl',
                      fragment='fragment.glsl')
    engine = Engine(wnd, program, model, cam)

    glutDisplayFunc(engine.display)
    glutIdleFunc(glutPostRedisplay)
    glutReshapeFunc(engine.reshape)
    glutKeyboardFunc(engine.keyDown)
    glutKeyboardUpFunc(engine.keyUp)
    glutMouseFunc(engine.mouse)
    glutMotionFunc(engine.motion)

    glEnable(GL_DEPTH_TEST)

    glutMainLoop()
Esempio n. 30
0
    def test_setitem(self):
        vert = VertexShader("")
        frag = FragmentShader("")

        program = Program(vert,frag)
        with self.assertRaises(ValueError):
            program["A"] = 1