-
Notifications
You must be signed in to change notification settings - Fork 724
Fixes #3947 Adds Fake driver and fixes fluent tests (iteration-zero) #4225
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…lt unless user explicitly forces 16
… for 16 color mode
Fixes for VTS enabled
Something is trying to load windows kernel32 in linux, not sure what |
Some method is calling Win32 API in Linux. If it's calling inside a try/catch then it's only reporting that and doesn't fail in the unit tests, but if it isn't calling inside a try/catch then the unit test will fail. |
@tznind please fix conficts |
Done |
@tig have addressed feedback and fixed the warnings from xmldoc and also put each class in its own file (tidyup). And always green ticks from CI 💪 - no more random failures And as added bonus the fluent tests now finish in only ~9s now that frame limiter off |
…zero) (gui-cs#4225) * Consider width2 chars that are not IsBmp * Apply same fix in WindowsDriver * Explicitly use type of local variable * Revert changes to WindowsDriver * Assume we are running in a terminal that supports true color by default unless user explicitly forces 16 * Switch to SetAttribute and WriteConsole instead of WriteConsoleOutput for 16 color mode * Fix some cursor issues (WIP) * Remove concept of 'dirty rows' from v2 as its never actually used * Remove damageRegion as it does nothing * Make string builder to console writing simpler * Radically simplify Write method * Simplify conditional logic * Simplify restoring cursor position * Reference local variable for console buffer * Reduce calls to ConsoleWrite by accumulating till attribute changes * When resizing v2 16 color mode on windows, recreate the back buffer to match its size * Fixes for VTS enabled * Fix _lastSize never being assigned * Fixes VTS for Force16Colors * Fixes force16Colors in VTS * Fixes escape sequences always echoing in non-VTS * Force Force16Colors in non-VTS. It have a bug in adding a newline in the last line * WIP Add base class for NetOutput * Abstract away how we change attribute * WIP - Make WindowsOutput use base class * WIP working to fix set cursor position * Remove commented out code * Fixes legacy output mode * Fixes size with no alt buffer supported on VTS and size restore after maximized. * Fix set cursor which also fixes the broken surrogate pairs * Add force parameter * Fixes an issue that only happens with Windows Terminal when paste surrogate pairs by press Ctrl+V * In Windows escape sequences must be sent during the lifetime of the console which is created in input handle * Ensure flush the input buffer before reset the console * Flush input buffer before reset console in v2win * Fixes issue in v2net not being refreshing the menu bar at start * Only force layout and draw on size changed. * Fix v2net issue not draw first line by forcing set cursor position * Set _lastCursorPosition nullable and remove bool force from set cursor position * Remove force parameter * Add v2 version of fake driver attribute * Make direct replacement and wire up window resizing events * Update casts to use V2 fake driver instead * Adjust interfaces to expose less internals * Fix not raising iteration event in v2 * WIP investigate what it takes to do resize and redraw using TextAlignment_Centered as example * Sketch adding component factory * Create relevant fake component factories * Add window size monitor into factory * Fake size monitor injecting * Add helper for faking console resize in AutoInitShutdown tests * Fix size setting in FakeDriverV2 * Switch to new method * Fix IsLegacy becoming false when using blank constructor * Fix for Ready not being raised when showing same top twice also fixes garbage collection issue if running millions of top levels * Fix tests * Remove auto init * Restore conditional compilation stuff * Restore 'if running unit tests' logic * Check only for the output being specific classes for the suppression * Fix ShadowView blowing up with index out of bounds error * Fix resize in fluent tests * Fix for people using Iteration call directly * Fix more calls to iteration to use AutoInitShutdownAttribute.RunIteration (); * Add comment * Remove assumption that Run with prior view not disposed should throw * Fix timings in Dialog_Opened_From_Another_Dialog * Fix Zero_Buttons_Works * Standardize and fix Button_IsDefault_True_Return_His_Index_On_Accepting * Fix iteration counts on MessageBoxTests * Fix WizartTests and DrawTests_Ruler * Implement SendKeys into ConsoleDriverFacade * Fix SendKeys in console driver facade such that FileDialogTests works Fix when Clip is null in popover * Add missing dispose call to test * Fix support for Esc in facade SendKeys * Fix AutocompleteTests * Fix various tests * Replace LayoutAndDraw with run iteration * Fix draw issues * fix draw order * Fix run iteration calls * Fix unit tests * Fix SendKeys in facade. * Manipulate upper and lower cases. * Add IsValidInput method to the interface. * Fix SendKeys scenario * Fixes surrogate pairs in the label * Make tests more sensible - they are testing draw functionality. Callbacks do not need to happen in Iteration method * Fix tests and harden cleanup in AutoInitShutdownAttribute v2 lifecycle dispose * Delete extra create input call * Fix mocks and order of exceptions thrown in Run when things are not initialized * Revert use of `MapConsoleKeyInfoToKeyCode` * Ignore casing as it is not what test is really about * Clear application top and top levels before each auto init shutdown test * Fix for unstable tests * Restore actually working SendKeys code * option to pass logger in fluent ctor * restore ToArray * Fix SendKeys method and add extension to unit test * Leverage the EscSeqUtils.MapConsoleKeyInfo method to avoid duplicate code * Remove unnecessary hack * Using only KeyCode for rKeys * Recover modifier keys in surrogate pairs * Reformat * Remove iteration limit for benchmarking in v2 * remove iteration delay to identify bugs * Remove nudge to unique key and make Then run on UI thread * fix fluid assertions * Ensure UI operations all happen on UI thread * Add explicit error for WaitIteration during an invoke * Remove timeout added for debug * Catch failing asserts better * Fix screenshot * Fix null ref * Fix race condition in processing input * Test fixing * Standardize asserts * Remove calls to layout and draw, remove pointless lock and enable reading Cancelled from Dialog even if it is disposed * fix bad merge * Make logs access threadsafe * add extra wait to remove race between iteration end and assert * Code cleanup * Remove test for crash on access Cancelled after dispose as this is no longer a restriction * Change resize console to run on UI thread - fixing race condition with redrawing * Restore original frame rate after test * Restore nudge to unique key * Code Cleanup * Fix for cascading failures when an assert fails in a specific test * fix for bad merge * Address PR feedback * Move classes to seperate files and add xmldoc * xml doc warnings * More xml comments docs * Fix spelling --------- Co-authored-by: BDisp <bd.bdisp@gmail.com>
…te pairs (#4224) * Fixes #4223. SendKeys scenario is broken and does not support surrogate pairs * Fix v2 application tests * Fixes v2 _input being null before initialization * Add a limit of iterations to avoid loop forever * Simplify unit tests failure fix * Fixes #3947 Adds Fake driver and fixes fluent tests (iteration-zero) (#4225) * Consider width2 chars that are not IsBmp * Apply same fix in WindowsDriver * Explicitly use type of local variable * Revert changes to WindowsDriver * Assume we are running in a terminal that supports true color by default unless user explicitly forces 16 * Switch to SetAttribute and WriteConsole instead of WriteConsoleOutput for 16 color mode * Fix some cursor issues (WIP) * Remove concept of 'dirty rows' from v2 as its never actually used * Remove damageRegion as it does nothing * Make string builder to console writing simpler * Radically simplify Write method * Simplify conditional logic * Simplify restoring cursor position * Reference local variable for console buffer * Reduce calls to ConsoleWrite by accumulating till attribute changes * When resizing v2 16 color mode on windows, recreate the back buffer to match its size * Fixes for VTS enabled * Fix _lastSize never being assigned * Fixes VTS for Force16Colors * Fixes force16Colors in VTS * Fixes escape sequences always echoing in non-VTS * Force Force16Colors in non-VTS. It have a bug in adding a newline in the last line * WIP Add base class for NetOutput * Abstract away how we change attribute * WIP - Make WindowsOutput use base class * WIP working to fix set cursor position * Remove commented out code * Fixes legacy output mode * Fixes size with no alt buffer supported on VTS and size restore after maximized. * Fix set cursor which also fixes the broken surrogate pairs * Add force parameter * Fixes an issue that only happens with Windows Terminal when paste surrogate pairs by press Ctrl+V * In Windows escape sequences must be sent during the lifetime of the console which is created in input handle * Ensure flush the input buffer before reset the console * Flush input buffer before reset console in v2win * Fixes issue in v2net not being refreshing the menu bar at start * Only force layout and draw on size changed. * Fix v2net issue not draw first line by forcing set cursor position * Set _lastCursorPosition nullable and remove bool force from set cursor position * Remove force parameter * Add v2 version of fake driver attribute * Make direct replacement and wire up window resizing events * Update casts to use V2 fake driver instead * Adjust interfaces to expose less internals * Fix not raising iteration event in v2 * WIP investigate what it takes to do resize and redraw using TextAlignment_Centered as example * Sketch adding component factory * Create relevant fake component factories * Add window size monitor into factory * Fake size monitor injecting * Add helper for faking console resize in AutoInitShutdown tests * Fix size setting in FakeDriverV2 * Switch to new method * Fix IsLegacy becoming false when using blank constructor * Fix for Ready not being raised when showing same top twice also fixes garbage collection issue if running millions of top levels * Fix tests * Remove auto init * Restore conditional compilation stuff * Restore 'if running unit tests' logic * Check only for the output being specific classes for the suppression * Fix ShadowView blowing up with index out of bounds error * Fix resize in fluent tests * Fix for people using Iteration call directly * Fix more calls to iteration to use AutoInitShutdownAttribute.RunIteration (); * Add comment * Remove assumption that Run with prior view not disposed should throw * Fix timings in Dialog_Opened_From_Another_Dialog * Fix Zero_Buttons_Works * Standardize and fix Button_IsDefault_True_Return_His_Index_On_Accepting * Fix iteration counts on MessageBoxTests * Fix WizartTests and DrawTests_Ruler * Implement SendKeys into ConsoleDriverFacade * Fix SendKeys in console driver facade such that FileDialogTests works Fix when Clip is null in popover * Add missing dispose call to test * Fix support for Esc in facade SendKeys * Fix AutocompleteTests * Fix various tests * Replace LayoutAndDraw with run iteration * Fix draw issues * fix draw order * Fix run iteration calls * Fix unit tests * Fix SendKeys in facade. * Manipulate upper and lower cases. * Add IsValidInput method to the interface. * Fix SendKeys scenario * Fixes surrogate pairs in the label * Make tests more sensible - they are testing draw functionality. Callbacks do not need to happen in Iteration method * Fix tests and harden cleanup in AutoInitShutdownAttribute v2 lifecycle dispose * Delete extra create input call * Fix mocks and order of exceptions thrown in Run when things are not initialized * Revert use of `MapConsoleKeyInfoToKeyCode` * Ignore casing as it is not what test is really about * Clear application top and top levels before each auto init shutdown test * Fix for unstable tests * Restore actually working SendKeys code * option to pass logger in fluent ctor * restore ToArray * Fix SendKeys method and add extension to unit test * Leverage the EscSeqUtils.MapConsoleKeyInfo method to avoid duplicate code * Remove unnecessary hack * Using only KeyCode for rKeys * Recover modifier keys in surrogate pairs * Reformat * Remove iteration limit for benchmarking in v2 * remove iteration delay to identify bugs * Remove nudge to unique key and make Then run on UI thread * fix fluid assertions * Ensure UI operations all happen on UI thread * Add explicit error for WaitIteration during an invoke * Remove timeout added for debug * Catch failing asserts better * Fix screenshot * Fix null ref * Fix race condition in processing input * Test fixing * Standardize asserts * Remove calls to layout and draw, remove pointless lock and enable reading Cancelled from Dialog even if it is disposed * fix bad merge * Make logs access threadsafe * add extra wait to remove race between iteration end and assert * Code cleanup * Remove test for crash on access Cancelled after dispose as this is no longer a restriction * Change resize console to run on UI thread - fixing race condition with redrawing * Restore original frame rate after test * Restore nudge to unique key * Code Cleanup * Fix for cascading failures when an assert fails in a specific test * fix for bad merge * Address PR feedback * Move classes to seperate files and add xmldoc * xml doc warnings * More xml comments docs * Fix spelling --------- Co-authored-by: BDisp <bd.bdisp@gmail.com> * Fixes #4231. NativeAot project throws when running the published executable (#4232) * Fixes #4231. NativeAot project throws when running the published executable * Code cleanup --------- Co-authored-by: Tig <tig@users.noreply.github.com> * Fixes #4236. CursesDriver erase the previous text under the cursor when moving if Force16Colors is true (#4237) * Fixes #4236. CursesDriver erase the previous text under the cursor when moving if Force16Colors is true * Still trying to fix fluent unit tests * Fix nullable issue --------- Co-authored-by: Tig <tig@users.noreply.github.com> * Need to use KeyCode to return the desired effect with control keys * Revert v2 drivers changes * Fix nullable warnings * Fixes #4025. Application.Driver.SendKeys should be retired --------- Co-authored-by: Tig <tig@users.noreply.github.com> Co-authored-by: Thomas Nind <31306100+tznind@users.noreply.github.com>
Removes iteration timer on fluent tests to reveal multi threading issues and fixes them
Note this is super set of #4222
Fixes
FakeDriver
with av2fake
or equivalent #3947Proposed Changes/Todos
Support creating
Application
andDriver
level tests for v2.[SetupFakeDriver]
[AutoInitShutdown]
These tests need:
Implementation
To enable this workflow we first need to pull all the Dependency Injection elements out into a shared provider factory. This lets us create classes but swap out Mocks and fakes as needed.
Pull Request checklist:
CTRL-K-D
to automatically reformat your files before committing.dotnet test
before commit///
style comments)