#!/usr/bin/env python # coding: utf-8 # In[ ]: from jp_doodle import dual_canvas from IPython.display import display from jp_proxy_widget import notebook_test_helpers from canvas_test_helpers import ColorTester validators = notebook_test_helpers.ValidationSuite() # In[ ]: c = dual_canvas.DualCanvasWidget(width=220, height=220) display(c) def two_rects(c): r1 = c.rect(x=0, y=0, w=100, h=100, color="rgb(123,34,222)", events=False, name=True) r2 = c.rect(x=0, y=0, w=100, h=100, color="rgb(234,222,111)", events=True) return (r1, r2) (cr1, cr2) = two_rects(c) cr2.change(color="rgb(111,222,222)") c.fit() # In[ ]: c_tester = ColorTester(c, "change", height=220) c_tester.add_check(100, 100, [111,222,222, 255]) validators.add_validation(c, c_tester.validate) # In[ ]: #c_tester.validate() # In[ ]: f = dual_canvas.DualCanvasWidget(width=220, height=220) display(f) (fr1, fr2) = two_rects(f) fr2.forget() f.fit() # In[ ]: f_tester = ColorTester(f, "forget", height=220) f_tester.add_check(100, 100, [123,34,222, 255]) validators.add_validation(f, f_tester.validate) # In[ ]: #f_tester.validate() # In[ ]: v = dual_canvas.DualCanvasWidget(width=220, height=220) display(v) (vr1, vr2) = two_rects(v) vr2.visible(False) v.fit() # In[ ]: v_tester = ColorTester(v, "visible", height=220) v_tester.add_check(100, 100, [123,34,222, 255]) validators.add_validation(v, v_tester.validate) # In[ ]: #v_tester.validate() # In[ ]: t = dual_canvas.DualCanvasWidget(width=220, height=220) display(t) (tr1, tr2) = two_rects(t) tr2.transition(color="rgb(111,222,222)", seconds_duration=0.01) t.fit() # In[ ]: t_tester = ColorTester(t, "transition", height=220) t_tester.add_check(100, 100, [111,222,222, 255]) validators.add_validation(t, t_tester.validate) # In[ ]: #t_tester.position_to_color_found = {} #t_tester.validate() #t.js_debug() #t.element.request_redraw() # In[ ]: n = dual_canvas.DualCanvasWidget(width=220, height=220) display(n.debugging_display()) (nr1, nr2) = two_rects(n) n_info = [] def n_callback(event): print("called back " + repr(event.get("canvas_name"))) assert event["canvas_name"] == nr2.name, (event["canvas_name"], nr2.name) n_info.append(event) nr2.change(color="rgb(111,222,222)") nr2.on("click", n_callback) n.fit() # In[ ]: n_tester = ColorTester(n, "on event", height=220) n_tester.spoof_event("click", 100, 100) n_tester.add_check(100, 100, [111,222,222, 255]) validators.add_validation(n, n_tester.validate) # In[ ]: #n_tester.validate() # In[ ]: ff = dual_canvas.DualCanvasWidget(width=220, height=220) display(ff.debugging_display()) (ffr1, ffr2) = two_rects(ff) ff_info = [] def ff_callback(event): print("called back " + repr(event.get("canvas_name"))) assert event["canvas_name"] == ffr2.name ff_info.append(event) ffr2.change(color="rgb(111,222,222)") ffr2.on("click", n_callback) ffr2.off("click") ff.fit() # In[ ]: ff_tester = ColorTester(ff, "off event", height=220) ff_tester.spoof_event("click", 100, 100) ff_tester.add_check(100, 100, [234,222,111, 255]) validators.add_validation(ff, ff_tester.validate) # In[ ]: #ff_tester.validate() # In[ ]: do_validations = True if do_validations: delay_ms = 5000 display(validators.run_all_in_widget(delay_ms=delay_ms))