aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authordirkf <fieldhouse@gmx.net>2024-12-12 04:16:07 +0000
committerdirkf <fieldhouse@gmx.net>2024-12-16 12:38:51 +0000
commit60835ca16c052eb00bb9bccd44f8843edac66a2e (patch)
tree26662aa112d0c99fcf1bed983ce32ddc80381b74 /test
parent94fd7746084d87a43e34b094c5db1325f91ce053 (diff)
[jsinterp] Fix and improve "methods"
* push, unshift return new length * impove edge cases for push/pop, shift/unshift, forEach, indexOf, charCodeAt * increase test coverage
Diffstat (limited to 'test')
-rw-r--r--test/test_jsinterp.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/test_jsinterp.py b/test/test_jsinterp.py
index b6e87e9f1..07ed481d8 100644
--- a/test/test_jsinterp.py
+++ b/test/test_jsinterp.py
@@ -544,6 +544,40 @@ class TestJSInterpreter(unittest.TestCase):
self._test('function f(){return "012345678".slice(-1, 1)}', '')
self._test('function f(){return "012345678".slice(-3, -1)}', '67')
+ def test_pop(self):
+ # pop
+ self._test('function f(){var a = [0, 1, 2, 3, 4, 5, 6, 7, 8]; return [a.pop(), a]}',
+ [8, [0, 1, 2, 3, 4, 5, 6, 7]])
+ self._test('function f(){return [].pop()}', JS_Undefined)
+ # push
+ self._test('function f(){var a = [0, 1, 2]; return [a.push(3, 4), a]}',
+ [5, [0, 1, 2, 3, 4]])
+ self._test('function f(){var a = [0, 1, 2]; return [a.push(), a]}',
+ [3, [0, 1, 2]])
+
+ def test_shift(self):
+ # shift
+ self._test('function f(){var a = [0, 1, 2, 3, 4, 5, 6, 7, 8]; return [a.shift(), a]}',
+ [0, [1, 2, 3, 4, 5, 6, 7, 8]])
+ self._test('function f(){return [].shift()}', JS_Undefined)
+ # unshift
+ self._test('function f(){var a = [0, 1, 2]; return [a.unshift(3, 4), a]}',
+ [5, [3, 4, 0, 1, 2]])
+ self._test('function f(){var a = [0, 1, 2]; return [a.unshift(), a]}',
+ [3, [0, 1, 2]])
+
+ def test_forEach(self):
+ self._test('function f(){var ret = []; var l = [4, 2]; '
+ 'var log = function(e,i,a){ret.push([e,i,a]);}; '
+ 'l.forEach(log); '
+ 'return [ret.length, ret[0][0], ret[1][1], ret[0][2]]}',
+ [2, 4, 1, [4, 2]])
+ self._test('function f(){var ret = []; var l = [4, 2]; '
+ 'var log = function(e,i,a){this.push([e,i,a]);}; '
+ 'l.forEach(log, ret); '
+ 'return [ret.length, ret[0][0], ret[1][1], ret[0][2]]}',
+ [2, 4, 1, [4, 2]])
+
if __name__ == '__main__':
unittest.main()