@@ -531,6 +531,33 @@ void RegisterTests_Inputs(ImGuiTestEngine* e)
531
531
IM_CHECK (io.InputQueueCharacters .Size == 1 && io.InputQueueCharacters [0 ] == ' B' );
532
532
ctx->Yield ();
533
533
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
534
561
};
535
562
536
563
// ## Test IO with multiple-context (#6199, #6256)
0 commit comments