diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2024-05-16 02:51:41 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-15 20:51:41 +0200 |
commit | c08356865da1386a4c999e7d2df23f13979a5c05 (patch) | |
tree | a9a631287024db825af82b6346d209d182c99ab5 | |
parent | b42f1ca8a4d574b087af9d86b7627a5817dad9b0 (diff) | |
download | Nim-c08356865da1386a4c999e7d2df23f13979a5c05.tar.gz |
closes #15778; adds a test case (#23613)
closes #15778
-rw-r--r-- | tests/views/tviews2.nim | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/tests/views/tviews2.nim b/tests/views/tviews2.nim index 36ba58993..9405ec9ea 100644 --- a/tests/views/tviews2.nim +++ b/tests/views/tviews2.nim @@ -4,12 +4,34 @@ discard """ {.experimental: "views".} -type - Foo = object - id: openArray[char] +block: + type + Foo = object + id: openArray[char] -proc foo(): Foo = - var source = "1245" - result = Foo(id: source.toOpenArray(0, 1)) + proc foo(): Foo = + var source = "1245" + result = Foo(id: source.toOpenArray(0, 1)) + + doAssert foo().id == @['1', '2'] + +block: # bug #15778 + type + Reader = object + data: openArray[char] + current: int + + var count = 0 + + proc read(data: var Reader, length: int): openArray[char] = + inc count + let start = data.current + data.current.inc length + return data.data.toOpenArray(start, data.current-1) + + var data = "hello there" + var reader = Reader(data: data.toOpenArray(0, data.len-1), current: 0) + doAssert @(reader.read(2)) == @['h', 'e'] + doAssert @(reader.read(3)) == @['l', 'l', 'o'] + doAssert count == 2 -doAssert foo().id == @['1', '2'] |