int-iterator is now defined interval

This commit is contained in:
2026-07-28 07:16:49 +02:00
parent 8e596d5979
commit 648533cbe3
12 changed files with 90 additions and 70 deletions
+12 -9
View File
@@ -39,12 +39,15 @@ func TestIteratorParser(t *testing.T) {
/* 20 */ {`it=$({1:"one",2:"two",3:"three"}, "default", "value"); it++`, "one", nil},
/* 21 */ {`it=$({1:"one",2:"two",3:"three"}, "desc", "key"); it++`, int64(3), nil},
/* 22 */ {`it=$({1:"one",2:"two",3:"three"}, "asc", "item"); it++`, array.NewArray([]any{int64(1), "one"}), nil},
/* 23 */ {`$$($(1,4,0))`, nil, `step cannot be zero`},
/* 24 */ {`$$($(1,4,-1))`, nil, `step cannot be negative when start < stop`},
/* 25 */ {`$$($(4,1,1))`, nil, `step cannot be positive when start > stop`},
/* 23 */ {`$$($(1..4..0))`, nil, `[1:11] invalid interval specification: step must be positive`},
/* 24 */ {`$$($(1..4..-1))`, nil, `[1:11] invalid interval specification: step must be positive`},
/* 25 */ {`$$($(4..1..1))`, list.NewLinkedListA(4, 3, 2), nil},
/* 26 */ {`it=$(1..5..2); it++`, int64(1), nil},
/* 27 */ {`it=$(1.5..5..2); it++`, nil, `[1:13] interval expression expected integer, got float (1.5)`},
/* 28 */ {`it=$(.."z"); it++`, nil, `[1:7] interval expression expected integer, got string (z)`},
}
// runTestSuiteSpec(t, section, inputs, 25)
// RunTestSuiteSpec(t, section, inputs, 27)
RunTestSuite(t, section, inputs)
}
@@ -138,9 +141,9 @@ func TestFilterIterator(t *testing.T) {
func TestDigestIterator(t *testing.T) {
section := "Iterator-Digest"
inputs := []inputType{
/* 1 */ {`$(10) digest ${_}`, int64(9), nil},
/* 2 */ {`$(10,0) digest ${_}`, int64(1), nil},
/* 3 */ {`$(10,0,-2) digest ${_}`, int64(2), nil},
/* 1 */ {`$(..10) digest ${_}`, int64(9), nil},
/* 2 */ {`$(10..0) digest ${_}`, int64(1), nil},
/* 3 */ {`$(10..0..2) digest ${_}`, int64(2), nil},
}
// runTestSuiteSpec(t, section, inputs, 2)
@@ -166,8 +169,8 @@ func TestMapIterator(t *testing.T) {
section := "Iterator-Map"
inputs := []inputType{
/* 1 */ {`$$([3,4,5] map ${_#})`, list.NewLinkedListA(1, 2, 3), nil},
/* 2 */ {`#$$($(10) map ${_})`, int64(10), nil},
/* 3 */ {`#$$($(10,0) map ${_})`, int64(10), nil},
/* 2 */ {`#$$($(..10) map ${_})`, int64(10), nil},
/* 3 */ {`#$$($(10..0) map ${_})`, int64(10), nil},
/* 4 */ {`builtin "os.file"; $$(fileLineIterator("test-file.txt") map ${__})`, list.NewLinkedListA(0, 1), nil},
/* 5 */ {`$$(["1", "2", "3"] map int())`, nil, `int(): too few params -- expected 1, got 0`},
}