From ccb041c831d2594403a24de316247c06a893e04a Mon Sep 17 00:00:00 2001 From: Alexey Date: Wed, 25 Dec 2019 15:52:27 +0300 Subject: [PATCH] arrays: improve `range` function --- vlib/arrays/arrays.v | 11 +++++------ vlib/arrays/arrays_test.v | 32 +++++++++++++++++++++++++------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/vlib/arrays/arrays.v b/vlib/arrays/arrays.v index 5375289aef..d396d3b96a 100644 --- a/vlib/arrays/arrays.v +++ b/vlib/arrays/arrays.v @@ -1,10 +1,9 @@ module arrays -fn range(start, end T) []T { - mut res := [start] - for i := start + 1; i < end; i++ { +pub fn range(start, end T) []T { + mut res := []T + for i := start; i < end; i++ { res << i - } + } return res -} - +} diff --git a/vlib/arrays/arrays_test.v b/vlib/arrays/arrays_test.v index 2fb715a094..235f4c1b94 100644 --- a/vlib/arrays/arrays_test.v +++ b/vlib/arrays/arrays_test.v @@ -1,10 +1,28 @@ import arrays fn test_range() { - /* - TODO - a := arrays.range(1, 10) - assert a[0] == 1 - println(a) - */ -} + start_pos := 3 + end_pos := 10 + + arr1 := arrays.range(start_pos, end_pos) + assert arr1.len == end_pos - start_pos + for i, c in arr1 { + assert c == i + start_pos + } + + arr2 := arrays.range(start_pos, end_pos) + assert arr2.len == end_pos - start_pos + for i, c in arr2 { + assert c == f32(i + start_pos) + } + + arr3 := arrays.range(start_pos, start_pos - 1) + assert arr3.len == 0 + + arr4 := arrays.range(start_pos, start_pos) + assert arr4.len == 0 + + arr5 := arrays.range(start_pos, start_pos + 1) + assert arr5.len == 1 + assert arr5[0] == start_pos +}