Skip to content

Commit 84f8412

Browse files
enhanced tests
1 parent ab460ca commit 84f8412

File tree

1 file changed

+174
-6
lines changed

1 file changed

+174
-6
lines changed

tests/python/test_arrays.py

Lines changed: 174 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,30 @@ def test_includes():
649649
pm.eval("(result, arr) => {result[0] = arr.includes(1)}")(result, items)
650650
assert result[0] == True
651651

652+
def test_includes_start_index():
653+
items = [1,2,3]
654+
result = [None]
655+
pm.eval("(result, arr) => {result[0] = arr.includes(1, 1)}")(result, items)
656+
assert result[0] == False
657+
658+
def test_includes_start_index_negative():
659+
items = [1,2,3]
660+
result = [None]
661+
pm.eval("(result, arr) => {result[0] = arr.includes(1, -1)}")(result, items)
662+
assert result[0] == False
663+
664+
def test_includes_start_index_negative_large():
665+
items = [1,2,3]
666+
result = [None]
667+
pm.eval("(result, arr) => {result[0] = arr.includes(1, -10)}")(result, items)
668+
assert result[0] == True
669+
670+
def test_includes_start_index_large():
671+
items = [1,2,3]
672+
result = [None]
673+
pm.eval("(result, arr) => {result[0] = arr.includes(1, 10)}")(result, items)
674+
assert result[0] == False
675+
652676
def test_includes_other_type():
653677
items = [1,2,'Hi']
654678
result = [None]
@@ -844,7 +868,25 @@ def test_forEach_check_this_arg_wrong_type():
844868
# returnResult = [0]
845869
# pm.eval("(returnResult, arr, func) => {returnResult[0] = arr.forEach(func)}")(returnResult, items, func)
846870
# assert items == ['to each his own', 'to each his own', 'to each his own']
847-
# assert returnResult == [None]
871+
# assert returnResult == [None]
872+
873+
#def test_forEach_self():
874+
# items = ['Four', 'Three', 'One']
875+
# class Counter:
876+
# def __init__(self):
877+
# self.count = 0
878+
# def increment(self):
879+
# self.count += 1
880+
881+
# obj = Counter()
882+
# result = pm.eval("""
883+
# (arr, increment, result) => {
884+
# let jsObj = {count: 0}
885+
# arr.forEach(increment, jsObj);
886+
# return jsObj.count;
887+
# }
888+
# """)(items, obj.increment)
889+
# assert result == 3
848890

849891

850892
# TODO should not pass
@@ -936,6 +978,24 @@ def test_map_check_array_mutation():
936978
pm.eval("(result, arr) => {arr.map((element, index, array) => {array[0] = 'Ten'; result[0] = array})}")(result, items)
937979
assert result[0] == ['Ten', 'Three', 'One']
938980
assert items == ['Ten', 'Three', 'One']
981+
982+
#def test_map_self():
983+
# items = ['Four', 'Three', 'One']
984+
# class Counter:
985+
# def __init__(self):
986+
# self.count = 0
987+
# def increment(self):
988+
# self.count += 1
989+
990+
# obj = Counter()
991+
# result = pm.eval("""
992+
# (arr, increment, result) => {
993+
# let jsObj = {count: 0}
994+
# arr.map(increment, jsObj);
995+
# return jsObj.count;
996+
# }
997+
# """)(items, obj.increment)
998+
# assert result == 3
939999

9401000
#filter
9411001
def test_filter():
@@ -989,7 +1049,25 @@ def test_filter_too_few_args():
9891049
assert (False)
9901050
except Exception as e:
9911051
assert str(type(e)) == "<class 'pythonmonkey.SpiderMonkeyError'>"
992-
assert str(e).__contains__("TypeError: filter: At least 1 argument required, but only 0 passed")
1052+
assert str(e).__contains__("TypeError: filter: At least 1 argument required, but only 0 passed")
1053+
1054+
#def test_filter_self():
1055+
# items = ['Four', 'Three', 'One']
1056+
# class Counter:
1057+
# def __init__(self):
1058+
# self.count = 0
1059+
# def increment(self):
1060+
# self.count += 1
1061+
1062+
# obj = Counter()
1063+
# result = pm.eval("""
1064+
# (arr, increment, result) => {
1065+
# let jsObj = {count: 0}
1066+
# arr.filter(increment, jsObj);
1067+
# return jsObj.count;
1068+
# }
1069+
# """)(items, obj.increment)
1070+
# assert result == 3
9931071

9941072
#reduce
9951073
def test_reduce():
@@ -1164,6 +1242,24 @@ def test_some_truthy_conversion():
11641242
""")(result)
11651243
assert result[0] == True
11661244

1245+
#def test_some_self():
1246+
# items = ['Four', 'Three', 'One']
1247+
# class Counter:
1248+
# def __init__(self):
1249+
# self.count = 0
1250+
# def increment(self):
1251+
# self.count += 1
1252+
1253+
# obj = Counter()
1254+
# result = pm.eval("""
1255+
# (arr, increment, result) => {
1256+
# let jsObj = {count: 0}
1257+
# arr.some(increment, jsObj);
1258+
# return jsObj.count;
1259+
# }
1260+
# """)(items, obj.increment)
1261+
# assert result == 3
1262+
11671263
#every
11681264
def test_every_true():
11691265
items = [2,4,6]
@@ -1213,7 +1309,25 @@ class Counter {
12131309
}
12141310
"""
12151311
)(result, items)
1216-
assert result == [1]
1312+
assert result == [1]
1313+
1314+
#def test_every_self():
1315+
# items = ['Four', 'Three', 'One']
1316+
# class Counter:
1317+
# def __init__(self):
1318+
# self.count = 0
1319+
# def increment(self):
1320+
# self.count += 1
1321+
1322+
# obj = Counter()
1323+
# result = pm.eval("""
1324+
# (arr, increment, result) => {
1325+
# let jsObj = {count: 0}
1326+
# arr.every(increment, jsObj);
1327+
# return jsObj.count;
1328+
# }
1329+
# """)(items, obj.increment)
1330+
# assert result == 3
12171331

12181332
#find
12191333
def test_find_found_once():
@@ -1270,7 +1384,25 @@ class Counter {
12701384
}
12711385
"""
12721386
)(result, items)
1273-
assert result == [3]
1387+
assert result == [3]
1388+
1389+
#def test_find_self():
1390+
# items = ['Four', 'Three', 'One']
1391+
# class Counter:
1392+
# def __init__(self):
1393+
# self.count = 0
1394+
# def increment(self):
1395+
# self.count += 1
1396+
1397+
# obj = Counter()
1398+
# result = pm.eval("""
1399+
# (arr, increment, result) => {
1400+
# let jsObj = {count: 0}
1401+
# arr.find(increment, jsObj);
1402+
# return jsObj.count;
1403+
# }
1404+
# """)(items, obj.increment)
1405+
# assert result == 3
12741406

12751407
#findIndex
12761408
def test_findIndex_found_once():
@@ -1327,7 +1459,25 @@ class Counter {
13271459
}
13281460
"""
13291461
)(result, items)
1330-
assert result == [3]
1462+
assert result == [3]
1463+
1464+
#def test_findIndex_self():
1465+
# items = ['Four', 'Three', 'One']
1466+
# class Counter:
1467+
# def __init__(self):
1468+
# self.count = 0
1469+
# def increment(self):
1470+
# self.count += 1
1471+
1472+
# obj = Counter()
1473+
# result = pm.eval("""
1474+
# (arr, increment, result) => {
1475+
# let jsObj = {count: 0}
1476+
# arr.findIndex(increment, jsObj);
1477+
# return jsObj.count;
1478+
# }
1479+
# """)(items, obj.increment)
1480+
# assert result == 3
13311481

13321482
#flat
13331483
def test_flat():
@@ -1442,7 +1592,25 @@ class Counter {
14421592
}
14431593
"""
14441594
)(result, items)
1445-
assert result == [3]
1595+
assert result == [3]
1596+
1597+
#def test_flatMap_self():
1598+
# items = ['Four', 'Three', 'One']
1599+
# class Counter:
1600+
# def __init__(self):
1601+
# self.count = 0
1602+
# def increment(self):
1603+
# self.count += 1
1604+
1605+
# obj = Counter()
1606+
# result = pm.eval("""
1607+
# (arr, increment, result) => {
1608+
# let jsObj = {count: 0}
1609+
# arr.flatMap(increment, jsObj);
1610+
# return jsObj.count;
1611+
# }
1612+
# """)(items, obj.increment)
1613+
# assert result == 3
14461614

14471615
#valueOf
14481616
def test_valueOf():

0 commit comments

Comments
 (0)