def test_run(self, req): pr = integration.Integration('nanliu/circleci') pr.build = MagicMock() pr.update_status = MagicMock() pr.run() self.assertEqual( pr.build_param['PR_URL'], 'https://github.com/nanliu/circleci/pull/32' ) self.assertEqual( pr.build_param['CUSTOM_VALUES'], '{"circleci": {"repo": "circleci", "tag": "a96e5a6dfba3a96d27bfcbef66717ea51ffeacb8"}}' ) self.assertEqual( pr.build_param['STATUS_CONTEXT'], 'ci/circleci-integration' ) self.assertEqual( pr.build_param['STATUS_URL'], 'https://api.github.com/repos/nanliu/circleci/statuses/a96e5a6dfba3a96d27bfcbef66717ea51ffeacb8' ) pr = integration.Integration( 'nanliu/circleci', build_param={"CUSTOM_VALUES": '{"test": {"1": "2"} }' }, context='ci/circleci-int' ) pr.build = MagicMock() pr.update_status = MagicMock() pr.run() self.assertEqual( pr.build_param['PR_URL'], 'https://github.com/nanliu/circleci/pull/32' ) self.assertEqual( pr.build_param['CUSTOM_VALUES'], '{"test": {"1": "2"}, "circleci": {"repo": "circleci", "tag": "a96e5a6dfba3a96d27bfcbef66717ea51ffeacb8"}}' ) self.assertEqual( pr.build_param['STATUS_CONTEXT'], 'ci/circleci-int' ) self.assertEqual( pr.build_param['STATUS_URL'], 'https://api.github.com/repos/nanliu/circleci/statuses/a96e5a6dfba3a96d27bfcbef66717ea51ffeacb8' ) pr = integration.Integration( 'nanliu/circleci', build_param={"CUSTOM_VALUES": 'bad' } ) pr.build = MagicMock() pr.update_status = MagicMock() with self.assertRaises(ValueError) as context: pr.run()
def __init__(self, db, settings): super().__init__(Qt.Vertical) self.settings = settings self.user = settings["user"] self.engine_path = settings["engine"]["path"] self.engine = integration.Integration(stockfish_path=self.engine_path) self.db = db self.board = board.Board() self.recent_games_table = None # default recent games to display self.num_games = settings["analysis"]["num_games"] self.games = None self.current_game_moves = None self.current_game_color = None self.threshold = settings["analysis"]["threshold"] # fetch recent games to create table self.fetch_games() self.btn_wid = None self.label_widget = None self.btns_and_labels = QWidget() self.btns_and_labels_layout = QHBoxLayout() self.btns_and_labels.setLayout(self.btns_and_labels_layout) self.create_buttons() self.create_labels() self.btns_and_labels_layout.addWidget(self.label_widget) self.btns_and_labels_layout.addWidget(self.btn_wid) self.addWidget(self.btns_and_labels) self.create_table()
def test_filter_integration_branch(self, req): pr = integration.Integration('nanliu/circleci') self.assertEqual( pr.filter_integration_branch(['https://github.com/nanliu/circleci/pull/32']), [] ) self.assertEqual( pr.branch, 'test_branch' )
def test_filter_active_pr(self, req): pr = integration.Integration('nanliu/circleci') self.assertEqual( pr.filter_active_pr(['https://github.com/nanliu/circleci/pull/32']), ['https://github.com/nanliu/circleci/pull/32'] ) self.assertEqual( pr.branch, 'master' )
def test_init(self, req): pr = integration.Integration('nanliu/circleci') self.assertEqual(pr.repo, 'nanliu/circleci') self.assertEqual(pr.branch, 'master') self.assertEqual(pr.build_param, {}) self.assertEqual(pr.context, 'ci/circleci-integration')
def main(is_plot=False): # TODO: 求插值多项式 # 等节点 poly = polynomials.Polynomials(n, x_k, y_k, y_k_diff) er = error.InterpolationError(n, x_k, y_k, y_k_diff) ing = integration.Integration(n, x_k, y_k, y_k_diff) # # 切比雪夫零点 poly_c = polynomials.Polynomials(n, x_k_c, y_k_c, y_k_diff) er_c = error.InterpolationError(n, x_k_c, y_k_c, y_k_diff) ing_c = integration.Integration(n, x_k_c, y_k_c, y_k_diff) if la_debug: # # 拉格朗日等节点插值多项式 poly.lagrange_polynomials(x) # 插值余项 lagrange_e_r_n = f - poly.L_n # 估计误差 无穷范数和最大值范数 er.error_lagrange(0.95, x, lagrange_e_r_n, w=poly.w) if is_plot: # sp.plot(lagrange_e_r_n, (x, -1, 1)) # sp.plot(sp.diff(lagrange_e_r_n), (x, -1, 1), title=r"$R_n\'$") # for i in range(nodes): # print("l%d" % i) # print(sp.latex(sp.N(sp.expand(poly.l_k[i]), 6))) kexi = sp.Symbol(r'\xi') print('w:', sp.latex(sp.N(sp.expand(poly.w), 6))) f_d = f for i in range(nodes): f_d = sp.diff(f_d) print('插值余项') # lagrange_e_r_n_np_d = sp.lambdify(x, sp.diff(lagrange_e_r_n), "numpy")(x_np) # lagrange_e_r_n_np = sp.lambdify(x, lagrange_e_r_n, "numpy")(x_np) # plot_figures.num_plot(x_np, lagrange_e_r_n_np, path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\larn.svg", # x_label=r'$x$', # y_label=r'$R_n(x)$', title='拉格朗日插值余项', is_show=True,) # plot_figures.num_plot(x_np, lagrange_e_r_n_np_d, path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\larnd.svg", # x_label=r'$x$', # y_label=r'$R’_n(x)$', title='拉格朗日插值余项导数', is_show=True, ) # print(sp.latex(sp.N(f_d, 6))) # print(sp.latex(sp.N(f_d.subs(x, kexi), 6))) # print(sp.latex(sp.N(sp.diff(f_d.subs(x, sp.Symbol('\eta'))), 6))) # print(sp.latex(sp.N(sp.expand(poly.L_n), 6))) print('拉格朗日等节点插值余项:', ) print(er.L_R_n) # print(sp.latex(sp.N(sp.expand(lagrange_e_r_n), 5))) print('R\'n') # print(sp.latex(sp.N(sp.diff(sp.expand(lagrange_e_r_n)), 6))) # sp.plot(sp.diff(lagrange_e_r_n), (x, -1, 1)) print('拉格朗日等节点插值余项最大范数:', er.L_max_nor_acc) print('拉格朗日等节点插值余项2范数:', er.L_2_nor) print('*' * 100) # 积分 ing.lagrange(poly.l_k, x, poly.L_n, f) if is_plot: ing.newton_cotes() # for i in range(n + 1): # print(sp.latex(sp.N(sp.expand(poly.l_k[i]), 5))) # print(sp.latex(sp.N(sp.expand(sp.integrate(poly.l_k[i])), 5))) print("A_k") print(ing.L_A_k) print("实际积分为:", sp.integrate(poly.L_n, (x, -1, 1))) print("积分为:", ing.L_I_n) print("代数精度:", ing.L_m) print("积分余项:", ing.R_f_ac) print("手推插值余项的积分:") print(sp.latex(sp.N(ing.R_f_ac_poly, 6))) print("电脑推插值余项的积分:") print(sp.latex(sp.expand(sp.N(sp.integrate(lagrange_e_r_n), 6)))) print('*' * 100) # # 拉格朗日切比雪夫零点 poly_c.lagrange_polynomials(x) # 插值余项 la_c_r_n = f - poly_c.L_n # 估计误差 无穷范数和最大值范数 er_c.error_lagrange(0.3, x, la_c_r_n, w=poly.w, is_print=False) if 0: # sp.plot(r_n**2, (x, -1, 1), title=r'$Lagrange polynomials\' error$') np.set_printoptions(formatter={'float': '{: 0.4f}'.format}) print('w') print(sp.latex(sp.N(sp.expand(poly_c.w), 6))) print('L_n_c') print(sp.latex(sp.N(sp.expand(poly_c.L_n), 6))) # print(sp.latex(sp.N(sp.expand(poly.l_k[i]), 6))) f_d = f for i in range(nodes): f_d = sp.diff(f_d) print('插值余项') kexi = sp.Symbol(r'\xi') print(sp.latex(sp.N(f_d, 6))) print(sp.latex(sp.N(f_d.subs(x, kexi), 6))) print('R\'n') print(sp.latex(sp.N(sp.diff(sp.expand(la_c_r_n)), 6))) # la_c_r_n_d = sp.lambdify(x, sp.diff(la_c_r_n), "numpy")(x_np) # la_c_r_n = sp.lambdify(x, la_c_r_n, "numpy")(x_np) # plot_figures.num_plot(x_np, la_c_r_n, path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\lacrn.svg", # x_label=r'$x$', # y_label=r'$R_n(x)$', title='拉格朗日插值余项', is_show=True,) # plot_figures.num_plot(x_np, la_c_r_n_d, path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\lacrnd.svg", # x_label=r'$x$', # y_label=r'$R’_n(x)$', title='拉格朗日插值余项导数', is_show=True, ) print('拉格朗日切比雪夫插值余项:最大范数', er_c.L_max_nor_acc) print('拉格朗日切比雪夫插值余项:2范数', er_c.L_2_nor) print('*' * 100) # 积分 ing_c.lagrange(poly_c.l_k, x, poly_c.L_n, f) if 0: L_n_np = sp.lambdify(x, poly_c.L_n, "numpy")(x_np) # print(p_n_np) # print(f_np) # plot_figures.num_plot(x_np, f_np, L_n_np, # path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\LandFNumc.svg", # x_label=r'$x$', # y_label=r'$f(x),L_n(x)$', title='原函数与拉格朗日插值多项式', is_show=True, # label=[r'$Primitive\ Function$', r'$Lagrange\ Polynomials$']) # for i in range(n + 1): # print(sp.latex(sp.N(sp.expand(poly.l_k[i]), 5))) # print(sp.latex(sp.N(sp.expand(sp.integrate(poly.l_k[i])), 5))) # for i in range(nodes): # print("l%d" % i) # print(sp.latex(ing_c.L_A_k_poly[i])) print("实际积分为:", sp.integrate(poly_c.L_n, (x, -1, 1))) print("积分为:", ing_c.L_I_n) print("代数精度:", ing_c.L_m) print("积分余项:", ing_c.R_f_ac) print("手推插值余项的积分:") print(sp.latex(sp.N(ing_c.R_f_ac_poly, 6))) print("电脑推插值余项的积分:") print(sp.latex(sp.expand(sp.N(sp.integrate(la_c_r_n), 6)))) print('*' * 100) if new_debug: # 牛顿等节点插值 poly.newton(x) newton_r_n = f - poly.P_n er.error_lagrange(0.95, x, newton_r_n, w=poly.w) # p_n_np = sp.lambdify(x, poly.P_n, "numpy")(x_np) # # print(p_n_np) # # print(f_np) # plot_figures.num_plot(x_np, f_np, p_n_np, path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\NandFNumc.svg", # x_label=r'$x$', # y_label=r'$f(x),P_n(x)$', title='原函数与牛顿插值多项式', is_show=True, # label=[r'$Primitive\ Function$', r'$Newton\ Polynomials$']) if is_plot: print('插值多项式') print(sp.latex(sp.N(sp.expand(poly.P_n), 6))) # sp.plot(newton_r_n ** 2, (x, -1, 1), title=r'$Lagrange polynomials\' error$') print('牛顿等节点插值余项:最大范数', er.L_max_nor_acc) print('牛顿等节点插值余项:2范数', er.L_2_nor) print("*" * 100) # 积分 Newton-Cotes ing.newton_cotes() if is_plot: print("牛顿科特斯积分:", ing.nc_I_n) print("科特斯系数") print(ing.C_k) print(ing.C_k.sum()) print("*" * 100) # 牛顿切比雪夫节点插值 poly_c.newton(x) newton_c_r_n = f - poly_c.P_n er_c.error_lagrange(0.3, x, newton_c_r_n, w=poly.w) if is_plot: # p_n_np = sp.lambdify(x, poly_c.P_n, "numpy")(x_np) # # print(p_n_np) # # print(f_np) # plot_figures.num_plot(x_np, f_np, p_n_np, # path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\NandFNumc.svg", # x_label=r'$x$', # y_label=r'$f(x),P_n(x)$', title='原函数与牛顿插值多项式', is_show=True, # label=[r'$Primitive\ Function$', r'$Newton\ Polynomials$']) # sp.plot(newton_c_r_n**2, (x, -1, 1), title=r'$Lagrange polynomials\' error$') print('插值多项式') print(sp.latex(sp.N(sp.expand(poly.P_n), 6))) # print(sp.latex(sp.N(sp.expand(poly.P_n), 6))) print('牛顿切比雪夫插值余项:最大范数', er_c.L_max_nor_acc) print('牛顿切比雪夫插值余项插值余项:2范数', er_c.L_2_nor) print("*" * 100) if linear_debug: # 分段线性插值 poly.linear(x) print(sp.latex(sp.N(poly.I_n, 6))) if is_plot: ing.linear() print("线性插值函数积分:", ing.T_n) # I_n_np = sp.lambdify(x, poly.I_n, "numpy")(x_np) # plot_figures.num_plot(x_np, f_np, I_n_np, # path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\LinearandF.svg", # x_label=r'$x$', # y_label=r'$f(x),I_n(x)$', title='原函数与分段线性插值函数', is_show=True, # label=[r'$Primitive\ Function$', r'$Linear\ Splines$']) if hermite_debug: # Hermite插值 poly.hermite(x) if is_plot: ing.hermite() print("线性插值函数积分:", ing.H_T_n) I_n_np = sp.lambdify(x, poly.H_I_n, "numpy")(x_np) plot_figures.num_plot( x_np, f_np, I_n_np, path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\HandF2.svg", x_label=r'$x$', y_label=r'$f(x),I_n(x)$', title='原函数与分段Hermite插值函数', is_show=True, label=[r'$Primitive\ Function$', r'$Hermite\ Splines$']) if Gauss_debug: ing.gauss(x) print("高斯积分:", ing.G_T_n)
def update_options(self): self.engine = integration.Integration(stockfish_path=self.engine_path) self.recreate_table()