The code was not correct or very clear, and the tests were not testing what they intended to. I expanded the tests and I could add even more tests, but I was trying to stick to fixing the main problem.
Two of the new tests are to-do because Wine does not translate LDAP_OPT_ON to WLDAP32_OPT_ON in ldap_get_optionW. I haven't fixed that because to fix it properly, we would have to save the specific value that was passed to Wine's ldap_set_optionW and return that value from ldap_get_optionW instead of what was passed to OpenLDAP's ldap_set_option.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2558
First commit adds a "todo_wine" test, second commit fixes the behavior and marks the test as no longer "todo". It looks like the same logic is already implemented (and tested) for the EnumDevices method.
Commit message for the fix commit:
---
This solves an issue in ZUSI 3 settings for DirectInput devices. Delphi
defines the True value of the "C-compatible" LongBool type as -1, which
wine interpreted to mean DIENUM_STOP because it is != DIENUM_CONTINUE.
Change that logic so only an explicit DIENUM_STOP (= 0) return value
stops the enumeration of objects.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2560