Desktop Pet (eSheep 64bit)

Add a screen mate to your desktop

View the Project on GitHub Adrianotiger/desktopPet


Motion regression checks

Motion regression checks

These Windows desktop checks use the stock, embedded eSheep animation XML. They create an isolated temporary runtime and configuration; they do not read or modify an installed pet’s configuration. Interactive checks briefly show test pets and a topmost support window. Do not run them on a locked/headless desktop.

Run

Prerequisites: Visual Studio Build Tools with desktop MSBuild and Roslyn, NuGet, and the .NET Framework 4.7.2 targeting pack.

nuget restore src/DesktopPet_Portable.sln
powershell -NoProfile -File tests/run-motion-tests.ps1

If reference assemblies are supplied through the Microsoft.NETFramework.ReferenceAssemblies.net472 NuGet package instead of an installed targeting pack, pass its build/.NETFramework/v4.7.2 directory using -FrameworkPath. -MSBuildPath can select a particular desktop MSBuild executable.

The default matrix is Release x64/x86, scale 1/3, and every connected display. -Platforms, -Scales, and -Displays accept arrays when invoked directly from PowerShell. The script prints the temporary output location and retains it for inspection. Package restore is a separate prerequisite; the test runner itself does not download packages or access an installed pet.

Coverage

  • Removed-display indices in XML expressions and pet bounds, relocation from a removed monitor, and display-change recovery callbacks after disposal.
  • Interpolation endpoints, direction changes, negative desktop coordinates, window resize transforms, and timestamp-based drag velocity.
  • Real WinForms movement between animation ticks, immediate drag positioning, unchanged stock walking distance and sprite cadence, and idle timer shutdown.
  • Window location events with the high-rate timer disabled, support-window closure, real window landing, wall rebound without a stopped vertical step, taskbar landing, and equal flight trajectories at different render cadences.
  • Lazy sprite mirroring, respawn resets, child initialization, concurrent pets, and disposal while dragging, including timer and hook cleanup.

The 8 ms timer is a scheduling request, not a frame-rate guarantee. Presentation uses integer window positions and remains subject to the Windows message loop. The existing XML still controls sprite frames and animation timing. The temporary 1 ms timer-resolution request is released when motion stops or the pet is disposed; stationary window attachment uses events with a 100 ms polling fallback. Timer resolution can affect power use, especially on older Windows versions.

These checks are not a certification of all pets, mixed-DPI transitions, Windows versions, or Store packaging. Additional manual checks: drag across monitors, release while the cursor is outside the pet, close/minimize the supporting window, and exercise a pet with child animations. Test long sessions and battery use separately before making power-consumption claims.

Validation on this change

The Portable Release x64/x86 matrix passed using stock eSheep at scales 1 and 3 on two connected displays. Both architectures also passed the pure motion tests. The .NET Framework 4.8 desktop/Store source project compiled for x64 and x86 after restoring its individually referenced legacy NuGet versions, supplying the locally installed Windows SDK with ReferencePath, and disabling the Store-copy PostBuildEvent. This is a source compile check; assembly-resolution warnings remain and Store packaging/installation were not validated.