[Scummvm-git-logs] scummvm master -> f8f3c49df31d32a50ab2058f32e8c2176f624464
sev-
noreply at scummvm.org
Thu Jan 23 18:04:54 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
f8f3c49df3 DIRECTOR: LINGO: Fix implementation of findPosNear, add relevant tests
Commit: f8f3c49df31d32a50ab2058f32e8c2176f624464
https://github.com/scummvm/scummvm/commit/f8f3c49df31d32a50ab2058f32e8c2176f624464
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-01-23T19:04:27+01:00
Commit Message:
DIRECTOR: LINGO: Fix implementation of findPosNear, add relevant tests
Changed paths:
engines/director/lingo/lingo-builtins.cpp
engines/director/lingo/tests/lists.lingo
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 26028e94506..d60010d16e8 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -799,12 +799,17 @@ void LB::b_findPos(int nargs) {
void LB::b_findPosNear(int nargs) {
Common::String prop = g_lingo->pop().asString();
Datum list = g_lingo->pop();
- Datum res(0);
+ Datum res;
TYPECHECK(list, PARRAY);
// FIXME: Integrate with compareTo framework
prop.toLowercase();
+ // This requires more testing, but D4-D6 test show that it does not work as described.
+ // The example:
+ // findPosNear([#Nile:2, #Pharaoh:4, #Raja:0], #Ni) supposed to return 1, for #Nile, but it returns 4
+ res = Datum((int)list.u.parr->arr.size() + 1); // Set it to the end of array by default
+
for (uint i = 0; i < list.u.parr->arr.size(); i++) {
Datum p = list.u.parr->arr[i].p;
Common::String tgt = p.asString();
diff --git a/engines/director/lingo/tests/lists.lingo b/engines/director/lingo/tests/lists.lingo
index 7471885ad48..3e76fda9634 100644
--- a/engines/director/lingo/tests/lists.lingo
+++ b/engines/director/lingo/tests/lists.lingo
@@ -228,11 +228,13 @@ scummvmAssertEqual(testList, [5, "URGH", 3, 1])
-- findPos
-set testList to [#a: 1, #b: 2, #c: 3, #d: 4, #e: 5]
+set testList to [#a: 1, #b: 2, #bb: 3, #d: 4, #e: 5]
scummvmAssertEqual(findPos(testList, #b), 2)
scummvmAssertEqual(findPos(testList, #f), VOID)
-- findPosNear
+scummvmAssertEqual(findPosNear(testList, #f), 6)
+scummvmAssertEqual(findPosNear(testList, #d), 4)
-- getaProp
More information about the Scummvm-git-logs
mailing list