Skip to content

Commit c06f177

Browse files
authored
Merge pull request #23 from briangu/hoa9wr-codex/fix-issue-8-in-klongpy
Add reshape string regression tests
2 parents 23a2f11 + a0e3029 commit c06f177

File tree

2 files changed

+43
-2
lines changed

2 files changed

+43
-2
lines changed

klongpy/dyads.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,11 @@ def eval_dyad_at_index(klong, a, b):
181181
j = False
182182
else:
183183
r = a
184-
return "".join(r) if j else r
184+
if j:
185+
if np.isarray(r) and r.ndim > 1:
186+
return np.asarray(["".join(x) for x in r], dtype=object)
187+
return "".join(r)
188+
return r
185189

186190

187191
def eval_dyad_define(klong, n, v):
@@ -834,7 +838,11 @@ def eval_dyad_reshape(a, b):
834838
r = np.concatenate((np.tile(b,ns), b[:a - b.shape[0]*ns[0]]))
835839
else:
836840
r = np.full((a,), b)
837-
return "".join(r) if j else r
841+
if j:
842+
if np.isarray(r) and r.ndim > 1:
843+
return np.asarray(["".join(x) for x in r], dtype=object)
844+
return "".join(r)
845+
return r
838846

839847

840848
def eval_dyad_rotate(a, b):

tests/test_reshape_strings.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import unittest
2+
import numpy as np
3+
4+
from klongpy import KlongInterpreter
5+
from tests.utils import kg_equal
6+
7+
class TestReshapeStrings(unittest.TestCase):
8+
def setUp(self):
9+
self.klong = KlongInterpreter()
10+
11+
def test_reshape_string_len1(self):
12+
r = self.klong('[2 2]:^"a"')
13+
self.assertTrue(kg_equal(r, np.asarray(["aa", "aa"], dtype=object)))
14+
15+
def test_reshape_string_len2(self):
16+
r = self.klong('[2 2]:^"ab"')
17+
self.assertTrue(kg_equal(r, np.asarray(["ab", "ab"], dtype=object)))
18+
19+
def test_reshape_string_len3(self):
20+
r = self.klong('[2 2]:^"abc"')
21+
self.assertTrue(kg_equal(r, np.asarray(["ab", "ca"], dtype=object)))
22+
23+
def test_reshape_string_len4(self):
24+
r = self.klong('[2 2]:^"abcd"')
25+
self.assertTrue(kg_equal(r, np.asarray(["ab", "cd"], dtype=object)))
26+
27+
def test_reshape_string_larger_shape(self):
28+
r = self.klong('[3 3]:^"abcd"')
29+
self.assertTrue(kg_equal(r, np.asarray(["abc", "dab", "cda"], dtype=object)))
30+
31+
32+
if __name__ == '__main__':
33+
unittest.main()

0 commit comments

Comments
 (0)