コード例 #1
0
    def test_line_split(self):
        '''
        not(x1) or x1 and x2
        '''
        comp = self.c
        line = self.l
        input = [comp(1, function_in) for i in range(2)]
        lines = [line(str(i)) for i in range(7)]
        c_neg = comp(1, function_neg)
        c_and = comp(2, function_and)
        c_or = comp(2, function_or)

        input[0].attach_output_line(lines[0])
        input[1].attach_output_line(lines[1])

        lines[0].attach_output_line(lines[2])
        lines[0].attach_output_line(lines[3])

        c_neg.attach_input_line(0, lines[2])
        c_neg.attach_output_line(lines[4])

        c_and.attach_input_line(0, lines[3])
        c_and.attach_input_line(1, lines[1])
        c_and.attach_output_line(lines[5])

        c_or.attach_input_line(0, lines[4])
        c_or.attach_input_line(1, lines[5])
        c_or.attach_output_line(lines[6])

        components = [c_neg, c_and, c_or]
        output = perform_modelling(input, lines[6], components)
        self.assertEqual([i[1] for i in output[0]], [1, 1, 0, 1])
コード例 #2
0
    def test_line_split(self):
        '''
        not(x1) or x1 and x2
        '''
        comp = self.c
        line = self.l
        input = [comp(1, function_in) for i in range(2)]
        lines = [line(str(i)) for i in range(7)]
        c_neg = comp(1, function_neg)
        c_and = comp(2, function_and)
        c_or = comp(2, function_or)

        input[0].attach_output_line(lines[0])
        input[1].attach_output_line(lines[1])

        lines[0].attach_output_line(lines[2])
        lines[0].attach_output_line(lines[3])

        c_neg.attach_input_line(0, lines[2])
        c_neg.attach_output_line(lines[4])

        c_and.attach_input_line(0, lines[3])
        c_and.attach_input_line(1, lines[1])
        c_and.attach_output_line(lines[5])

        c_or.attach_input_line(0, lines[4])
        c_or.attach_input_line(1, lines[5])
        c_or.attach_output_line(lines[6])

        components = [c_neg, c_and, c_or]
        output = perform_modelling(input, lines[6], components)
        self.assertEqual([ i[1] for i in output[0]], [1, 1, 0, 1])
コード例 #3
0
    def test_base_modeling(self):
        comp = self.c
        line = self.l

        c_in1 = comp(1, function_in, "in1")
        c_in2 = comp(1, function_in, "in2")
        c_and = comp(2, function_and, "and")

        l_1 = line("l1")
        l_2 = line("l2")
        l_out = line("lout")

        c_in1.attach_output_line(l_1)
        c_in2.attach_output_line(l_2)
        c_and.attach_input_line(0, l_1)
        c_and.attach_input_line(1, l_2)
        c_and.attach_output_line(l_out)

        components = [c_and]
        output = perform_modelling([c_in1, c_in2], l_out, components)
        self.assertEqual([ i[1] for i in output[0]], [0, 0, 0, 1])
コード例 #4
0
    def test_base_modeling(self):
        comp = self.c
        line = self.l

        c_in1 = comp(1, function_in, "in1")
        c_in2 = comp(1, function_in, "in2")
        c_and = comp(2, function_and, "and")

        l_1 = line("l1")
        l_2 = line("l2")
        l_out = line("lout")

        c_in1.attach_output_line(l_1)
        c_in2.attach_output_line(l_2)
        c_and.attach_input_line(0, l_1)
        c_and.attach_input_line(1, l_2)
        c_and.attach_output_line(l_out)

        components = [c_and]
        output = perform_modelling([c_in1, c_in2], l_out, components)
        self.assertEqual([i[1] for i in output[0]], [0, 0, 0, 1])
コード例 #5
0
    def test_more_components(self):
        '''
        not(x1) and x2 or x3
        '''
        comp = self.c
        line = self.l
        in1 = comp(1, function_in, "in1")
        in2 = comp(1, function_in, "in2")
        in3 = comp(1, function_in, "in3")
        c_neg = comp(1, function_neg, "neg")
        c_and = comp(2, function_and, "and")
        c_or = comp(2, function_or, "or")
        l1 = line("l1")
        l2 = line("l2")
        l3 = line("l3")
        l4 = line("l4")
        l5 = line("l5")
        l6 = line("l6") #out

        in1.attach_output_line(l1)
        in2.attach_output_line(l2)
        in3.attach_output_line(l3)

        c_neg.attach_input_line(0, l1)
        c_neg.attach_output_line(l4)

        c_and.attach_input_line(0, l4)
        c_and.attach_input_line(1, l2)
        c_and.attach_output_line(l5)

        c_or.attach_input_line(0, l5)
        c_or.attach_input_line(1, l3)
        c_or.attach_output_line(l6)

        components = [c_neg, c_and, c_or]
        output = perform_modelling([in1, in2, in3], l6, components)
        self.assertEqual([ i[1] for i in output[0]], [0, 1, 1, 1, 0, 1, 0, 1])
コード例 #6
0
    def test_more_components(self):
        '''
        not(x1) and x2 or x3
        '''
        comp = self.c
        line = self.l
        in1 = comp(1, function_in, "in1")
        in2 = comp(1, function_in, "in2")
        in3 = comp(1, function_in, "in3")
        c_neg = comp(1, function_neg, "neg")
        c_and = comp(2, function_and, "and")
        c_or = comp(2, function_or, "or")
        l1 = line("l1")
        l2 = line("l2")
        l3 = line("l3")
        l4 = line("l4")
        l5 = line("l5")
        l6 = line("l6")  #out

        in1.attach_output_line(l1)
        in2.attach_output_line(l2)
        in3.attach_output_line(l3)

        c_neg.attach_input_line(0, l1)
        c_neg.attach_output_line(l4)

        c_and.attach_input_line(0, l4)
        c_and.attach_input_line(1, l2)
        c_and.attach_output_line(l5)

        c_or.attach_input_line(0, l5)
        c_or.attach_input_line(1, l3)
        c_or.attach_output_line(l6)

        components = [c_neg, c_and, c_or]
        output = perform_modelling([in1, in2, in3], l6, components)
        self.assertEqual([i[1] for i in output[0]], [0, 1, 1, 1, 0, 1, 0, 1])
コード例 #7
0
# -*- coding: utf-8 -*-

import sys
from functions import *

def print_usage(prog_name):
    print("Usage: " + prog_name + " [parallel|concurrent] json_file html_file")

if __name__ == '__main__':
    if len(sys.argv) != 4:
        print_usage(sys.argv[0])
        sys.exit(1)
    if sys.argv[1] == "parallel":
        from parallel_modelling import perform_modelling
        from components import BaseComponent, BaseLine
    elif sys.argv[1] == "concurrent":
        from concurrent_modelling import perform_modelling
        from concurrent_modelling import ConcurrentComponent as BaseComponent, ConcurrentLine as BaseLine
    else:
        print_usage(sys.argv[0])
        sys.exit(1)
    html_file_name = sys.argv[3]

    [all_inputs, output_line, all_components] = generate_scheme_from_json(sys.argv[2], BaseLine, BaseComponent)

    output = perform_modelling(all_inputs, output_line, all_components)
    if sys.argv[1] == "parallel":
        make_html_output_parallel(output, html_file_name)
    elif sys.argv[1] == "concurrent":
        make_html_output_concurrent(output, html_file_name, len(all_inputs))