@@ -531,6 +531,33 @@ void RegisterTests_Inputs(ImGuiTestEngine* e)
531531 IM_CHECK (io.InputQueueCharacters .Size == 1 && io.InputQueueCharacters [0 ] == ' B' );
532532 ctx->Yield ();
533533 IM_CHECK (io.InputQueueCharacters .Size == 0 );
534+
535+ // Test analog values with trickling
536+ // ImGuiTestEngine_ApplyInputToImGuiContext() currently sets _HasGamepad even in ImGuiTestRunFlags_EnableRawInputs mode
537+ io.AddKeyAnalogEvent (ImGuiKey_GamepadLStickUp, false , 0 .0f );
538+ ctx->Yield ();
539+ IM_CHECK_EQ (ImGui::IsKeyPressed (ImGuiKey_GamepadLStickUp), false );
540+ io.AddKeyAnalogEvent (ImGuiKey_GamepadLStickUp, true , 0 .5f );
541+ ctx->Yield ();
542+ IM_CHECK_EQ (ImGui::IsKeyPressed (ImGuiKey_GamepadLStickUp), true );
543+ IM_CHECK_EQ (ImGui::GetKeyData (ImGuiKey_GamepadLStickUp)->AnalogValue , 0 .5f );
544+ io.AddKeyAnalogEvent (ImGuiKey_GamepadLStickUp, true , 0 .6f );
545+ io.AddKeyAnalogEvent (ImGuiKey_GamepadLStickUp, true , 0 .7f );
546+ io.AddKeyAnalogEvent (ImGuiKey_GamepadLStickUp, true , 0 .8f );
547+ ctx->Yield ();
548+ IM_CHECK_EQ (ImGui::IsKeyDown (ImGuiKey_GamepadLStickUp), true );
549+ IM_CHECK_EQ (ImGui::GetKeyData (ImGuiKey_GamepadLStickUp)->AnalogValue , 0 .8f );
550+ #if IMGUI_VERSION_NUM >= 19192
551+ io.AddMousePosEvent (0 .0f , 0 .0f );
552+ io.AddKeyAnalogEvent (ImGuiKey_GamepadLStickUp, true , 0 .81f );
553+ io.AddMousePosEvent (10 .0f , 10 .0f );
554+ io.AddMousePosEvent (20 .0f , 20 .0f );
555+ io.AddKeyAnalogEvent (ImGuiKey_GamepadLStickUp, true , 0 .82f );
556+ ctx->Yield ();
557+ IM_CHECK_EQ (ImGui::GetMousePos (), ImVec2 (20 .0f , 20.0 ));
558+ IM_CHECK_EQ (ImGui::IsKeyDown (ImGuiKey_GamepadLStickUp), true );
559+ IM_CHECK_EQ (ImGui::GetKeyData (ImGuiKey_GamepadLStickUp)->AnalogValue , 0 .82f );
560+ #endif
534561 };
535562
536563 // ## Test IO with multiple-context (#6199, #6256)
0 commit comments