def test_ui_radio_button_initial_state(interactive=False): filename = "test_ui_radio_button" recording_filename = pjoin(DATA_DIR, filename + ".log.gz") expected_events_counts_filename = pjoin(DATA_DIR, filename + ".json") radio_button_test = ui.RadioButton( labels=["option 1", "option 2\nOption 2", "option 3", "option 4"], position=(100, 100), checked_labels=['option 4']) selected_option = [] def _on_change(radio_button): selected_option.append(radio_button.checked_labels) # Set up a callback when selection changes radio_button_test.on_change = _on_change event_counter = EventCounter() event_counter.monitor(radio_button_test) # Create a show manager and record/play events. show_manager = window.ShowManager(size=(600, 600), title="FURY Checkbox") show_manager.scene.add(radio_button_test) # Recorded events: # 1. Click on button of option 1. # 2. Click on button of option 2. # 3. Click on button of option 2. # 4. Click on text of option 2. # 5. Click on button of option 1. # 6. Click on text of option 3. # 7. Click on button of option 4. # 8. Click on text of option 4. show_manager.play_events_from_file(recording_filename) expected = EventCounter.load(expected_events_counts_filename) event_counter.check_counts(expected) # Check if the right options were selected. expected = [['option 1'], ['option 2\nOption 2'], ['option 2\nOption 2'], ['option 2\nOption 2'], ['option 1'], ['option 3'], ['option 4'], ['option 4']] npt.assert_equal(len(selected_option), len(expected)) assert_arrays_equal(selected_option, expected) del show_manager if interactive: radio_button_test = ui.RadioButton( labels=["option 1", "option 2\nOption 2", "option 3", "option 4"], position=(100, 100), checked_labels=[]) showm = window.ShowManager(size=(600, 600)) showm.scene.add(radio_button_test) showm.start()
def test_ui_file_menu_2d(interactive=False): filename = "test_ui_file_menu_2d" recording_filename = pjoin(DATA_DIR, filename + ".log.gz") expected_events_counts_filename = pjoin(DATA_DIR, filename + ".json") # Create temporary directory and files os.mkdir(os.path.join(os.getcwd(), "testdir")) os.chdir("testdir") os.mkdir(os.path.join(os.getcwd(), "tempdir")) for i in range(10): open(os.path.join(os.getcwd(), "tempdir", "test" + str(i) + ".txt"), 'wt').close() open("testfile.txt", 'wt').close() filemenu = ui.FileMenu2D(size=(500, 500), extensions=["txt"], directory_path=os.getcwd()) # We will collect the sequence of files that have been selected. selected_files = [] def _on_change(): selected_files.append(list(filemenu.listbox.selected)) # Set up a callback when selection changes. filemenu.listbox.on_change = _on_change # Assign the counter callback to every possible event. event_counter = EventCounter() event_counter.monitor(filemenu) # Create a show manager and record/play events. show_manager = window.ShowManager(size=(600, 600), title="FURY FileMenu") show_manager.scene.add(filemenu) # Recorded events: # 1. Click on 'testfile.txt' # 2. Click on 'tempdir/' # 3. Click on 'test0.txt'. # 4. Shift + Click on 'test6.txt'. # 5. Click on '../'. # 2. Click on 'testfile.txt'. show_manager.play_events_from_file(recording_filename) expected = EventCounter.load(expected_events_counts_filename) event_counter.check_counts(expected) # Check if the right files were selected. expected = [["testfile.txt"], ["tempdir"], ["test0.txt"], ["test0.txt", "test1.txt", "test2.txt", "test3.txt", "test4.txt", "test5.txt", "test6.txt"], ["../"], ["testfile.txt"]] npt.assert_equal(len(selected_files), len(expected)) assert_arrays_equal(selected_files, expected) # Remove temporary directory and files os.remove("testfile.txt") for i in range(10): os.remove(os.path.join(os.getcwd(), "tempdir", "test" + str(i) + ".txt")) os.rmdir(os.path.join(os.getcwd(), "tempdir")) os.chdir("..") os.rmdir("testdir") if interactive: filemenu = ui.FileMenu2D(size=(500, 500), directory_path=os.getcwd()) show_manager = window.ShowManager(size=(600, 600), title="FURY FileMenu") show_manager.scene.add(filemenu) show_manager.start()
def test_ui_listbox_2d(interactive=False): filename = "test_ui_listbox_2d" recording_filename = pjoin(DATA_DIR, filename + ".log.gz") expected_events_counts_filename = pjoin(DATA_DIR, filename + ".json") # Values that will be displayed by the listbox. values = list(range(1, 42 + 1)) values.append("A Very Very Long Item To Test Text Overflow of List Box 2D") if interactive: listbox = ui.ListBox2D(values=values, size=(500, 500), multiselection=True, reverse_scrolling=False, background_opacity=0.3) listbox.center = (300, 300) listbox.panel.opacity = 0.2 show_manager = window.ShowManager(size=(600, 600), title="FURY ListBox") show_manager.initialize() show_manager.scene.add(listbox) show_manager.start() # Recorded events: # 1. Click on 1 # 2. Ctrl + click on 2, # 3. Ctrl + click on 2. # 4. Use scroll bar to scroll to the bottom. # 5. Click on "A Very Very Long Item...". # 6. Use scroll bar to scroll to the top. # 7. Click on 1 # 8. Use mouse wheel to scroll down. # 9. Shift + click on "A Very Very Long Item...". # 10. Use mouse wheel to scroll back up. listbox = ui.ListBox2D(values=values, size=(500, 500), multiselection=True, reverse_scrolling=False) listbox.center = (300, 300) # We will collect the sequence of values that have been selected. selected_values = [] def _on_change(): selected_values.append(list(listbox.selected)) # Set up a callback when selection changes. listbox.on_change = _on_change # Assign the counter callback to every possible event. event_counter = EventCounter() event_counter.monitor(listbox) show_manager = window.ShowManager(size=(600, 600), title="FURY ListBox") show_manager.scene.add(listbox) show_manager.play_events_from_file(recording_filename) expected = EventCounter.load(expected_events_counts_filename) event_counter.check_counts(expected) # Check if the right values were selected. expected = [[1], [1, 2], [1], ["A Very Very Long Item To \ Test Text Overflow of List Box 2D"], [1], values] npt.assert_equal(len(selected_values), len(expected)) assert_arrays_equal(selected_values, expected) # Test without multiselection enabled. listbox.multiselection = False del selected_values[:] # Clear the list. show_manager.play_events_from_file(recording_filename) # Check if the right values were selected. expected = [[1], [2], [2], ["A Very Very Long Item To \ Test Text Overflow of List Box 2D"], [1], ["A Very Very Long Item To Test \ Text Overflow of List Box 2D"]] npt.assert_equal(len(selected_values), len(expected)) assert_arrays_equal(selected_values, expected)
def test_ui_checkbox(interactive=False): filename = "test_ui_checkbox" recording_filename = pjoin(DATA_DIR, filename + ".log.gz") expected_events_counts_filename = pjoin(DATA_DIR, filename + ".json") checkbox_test = ui.Checkbox(labels=["option 1", "option 2\nOption 2", "option 3", "option 4"], position=(10, 10)) old_positions = [] for option in checkbox_test.options: old_positions.append(option.position) old_positions = np.asarray(old_positions) checkbox_test.position = (100, 100) new_positions = [] for option in checkbox_test.options: new_positions.append(option.position) new_positions = np.asarray(new_positions) npt.assert_allclose(new_positions - old_positions, 90.0 * np.ones((4, 2))) # Collect the sequence of options that have been checked in this list. selected_options = [] def _on_change(checkbox): selected_options.append(list(checkbox.checked)) # Set up a callback when selection changes checkbox_test.on_change = _on_change event_counter = EventCounter() event_counter.monitor(checkbox_test) # Create a show manager and record/play events. show_manager = window.ShowManager(size=(600, 600), title="FURY Checkbox") show_manager.scene.add(checkbox_test) # Recorded events: # 1. Click on button of option 1. # 2. Click on button of option 2. # 3. Click on button of option 1. # 4. Click on text of option 3. # 5. Click on text of option 1. # 6. Click on button of option 4. # 7. Click on text of option 1. # 8. Click on text of option 2. # 9. Click on text of option 4. # 10. Click on button of option 3. show_manager.play_events_from_file(recording_filename) expected = EventCounter.load(expected_events_counts_filename) event_counter.check_counts(expected) # Check if the right options were selected. expected = [['option 1'], ['option 1', 'option 2\nOption 2'], ['option 2\nOption 2'], ['option 2\nOption 2', 'option 3'], ['option 2\nOption 2', 'option 3', 'option 1'], ['option 2\nOption 2', 'option 3', 'option 1', 'option 4'], ['option 2\nOption 2', 'option 3', 'option 4'], ['option 3', 'option 4'], ['option 3'], []] npt.assert_equal(len(selected_options), len(expected)) assert_arrays_equal(selected_options, expected) del show_manager if interactive: checkbox_test = ui.Checkbox(labels=["option 1", "option 2\nOption 2", "option 3", "option 4"], position=(100, 100)) showm = window.ShowManager(size=(600, 600)) showm.scene.add(checkbox_test) showm.start()
def test_ui_radio_button(interactive=False): filename = "test_ui_radio_button" recording_filename = pjoin(DATA_DIR, filename + ".log.gz") expected_events_counts_filename = pjoin(DATA_DIR, filename + ".pkl") radio_button_test = ui.RadioButton( labels=["option 1", "option 2\nOption 2", "option 3", "option 4"], position=(10, 10)) old_positions = [] for option in radio_button_test.options: old_positions.append(option.position) old_positions = np.asarray(old_positions) radio_button_test.position = (100, 100) new_positions = [] for option in radio_button_test.options: new_positions.append(option.position) new_positions = np.asarray(new_positions) npt.assert_allclose(new_positions - old_positions, 90 * np.ones((4, 2))) selected_option = [] def _on_change(radio_button): selected_option.append(radio_button.checked) # Set up a callback when selection changes radio_button_test.on_change = _on_change event_counter = EventCounter() event_counter.monitor(radio_button_test) # Create a show manager and record/play events. show_manager = window.ShowManager(size=(600, 600), title="FURY Checkbox") show_manager.ren.add(radio_button_test) # Recorded events: # 1. Click on button of option 1. # 2. Click on button of option 2. # 3. Click on button of option 2. # 4. Click on text of option 2. # 5. Click on button of option 1. # 6. Click on text of option 3. # 7. Click on button of option 4. # 8. Click on text of option 4. show_manager.play_events_from_file(recording_filename) expected = EventCounter.load(expected_events_counts_filename) event_counter.check_counts(expected) # Check if the right options were selected. expected = [['option 1'], ['option 2\nOption 2'], ['option 2\nOption 2'], ['option 2\nOption 2'], ['option 1'], ['option 3'], ['option 4'], ['option 4']] assert len(selected_option) == len(expected) assert_arrays_equal(selected_option, expected) del show_manager if interactive: radio_button_test = ui.RadioButton( labels=["option 1", "option 2\nOption 2", "option 3", "option 4"], position=(100, 100)) showm = window.ShowManager(size=(600, 600)) showm.ren.add(radio_button_test) showm.start()
def test_ui_radio_button_default(recording=False): filename = "test_ui_radio_button_initial" recording_filename = pjoin(DATA_DIR, filename + ".log.gz") expected_events_counts_filename = pjoin(DATA_DIR, filename + ".json") radio_button_test = ui.RadioButton( labels=["option 1", "option 2\nOption 2", "option 3", "option 4"], position=(10, 10), checked_labels=[]) old_positions = [] for option in radio_button_test.options.values(): old_positions.append(option.position) old_positions = np.asarray(old_positions) radio_button_test.position = (100, 100) new_positions = [] for option in radio_button_test.options.values(): new_positions.append(option.position) new_positions = np.asarray(new_positions) npt.assert_allclose(new_positions - old_positions, 90 * np.ones((4, 2))) selected_option = [] def _on_change(radio_button): selected_option.append(radio_button.checked_labels) # Set up a callback when selection changes radio_button_test.on_change = _on_change event_counter = EventCounter() event_counter.monitor(radio_button_test) # Create a show manager and record/play events. show_manager = window.ShowManager(size=(600, 600), title="FURY Checkbox") show_manager.scene.add(radio_button_test) if recording: show_manager.record_events_to_file(recording_filename) print(list(event_counter.events_counts.items())) event_counter.save(expected_events_counts_filename) else: # Recorded events: # 1. Click on button of option 1. # 2. Click on button of option 2. # 3. Click on button of option 2. # 4. Click on text of option 2. # 5. Click on button of option 1. # 6. Click on text of option 3. # 7. Click on button of option 4. # 8. Click on text of option 4. show_manager.play_events_from_file(recording_filename) expected = EventCounter.load(expected_events_counts_filename) event_counter.check_counts(expected) # Check if the right options were selected. expected = [['option 1'], ['option 2\nOption 2'], ['option 2\nOption 2'], ['option 2\nOption 2'], ['option 1'], ['option 3'], ['option 4'], ['option 4']] npt.assert_equal(len(selected_option), len(expected)) assert_arrays_equal(selected_option, expected)
def test_ui_checkbox_initial_state(recording=False): filename = "test_ui_checkbox_initial_state" recording_filename = pjoin(DATA_DIR, filename + ".log.gz") expected_events_counts_filename = pjoin(DATA_DIR, filename + ".json") checkbox_test = ui.Checkbox(labels=["option 1", "option 2\nOption 2", "option 3", "option 4"], position=(100, 100), checked_labels=["option 1", "option 4"]) # Collect the sequence of options that have been checked in this list. selected_options = [] def _on_change(checkbox): selected_options.append(list(checkbox.checked_labels)) # Set up a callback when selection changes checkbox_test.on_change = _on_change event_counter = EventCounter() event_counter.monitor(checkbox_test) # Create a show manager and record/play events. show_manager = window.ShowManager(size=(600, 600), title="FURY Checkbox") show_manager.scene.add(checkbox_test) if recording: show_manager.record_events_to_file(recording_filename) print(list(event_counter.events_counts.items())) event_counter.save(expected_events_counts_filename) print(selected_options) else: show_manager.play_events_from_file(recording_filename) expected = EventCounter.load(expected_events_counts_filename) event_counter.check_counts(expected) # Recorded events: # 1. Click on button of option 1. # 2. Click on button of option 2. # 3. Click on button of option 1. # 4. Click on text of option 3. # 5. Click on text of option 1. # 6. Click on button of option 4. # 7. Click on text of option 1. # 8. Click on text of option 2. # 9. Click on text of option 4. # 10. Click on button of option 3. # Check if the right options were selected. expected = [['option 4'], ['option 4', 'option 2\nOption 2'], ['option 4', 'option 2\nOption 2', 'option 1'], ['option 4', 'option 2\nOption 2', 'option 1', 'option 3'], ['option 4', 'option 2\nOption 2', 'option 3'], ['option 2\nOption 2', 'option 3'], ['option 2\nOption 2', 'option 3', 'option 1'], ['option 3', 'option 1'], ['option 3', 'option 1', 'option 4'], ['option 1', 'option 4']] npt.assert_equal(len(selected_options), len(expected)) assert_arrays_equal(selected_options, expected)