8e596d5979
1. moved scan/symbol.go to new package sym and adapted all files that reference Symbol type and its values. 2. new type interval defined by begin, end and step values. 3. replaced operator-range.go with operator-interval.go. 4. replaced range operator begin:end with begin..end..step. 5. new implementation of sub-collection extraction based on new interval literal.
53 lines
1.8 KiB
Go
53 lines
1.8 KiB
Go
// Copyright (c) 2024-2026 Celestino Amoroso (celestino.amoroso@gmail.com).
|
|
// All rights reserved.
|
|
|
|
// t_list_test.go
|
|
package expr
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"git.portale-stac.it/go-pkg/expr/types/array"
|
|
"git.portale-stac.it/go-pkg/expr/types/list"
|
|
)
|
|
|
|
func TestLinkedListParser(t *testing.T) {
|
|
section := "Linked-List"
|
|
|
|
inputs := []inputType{
|
|
/* 1 */ {`[<1,2>]`, list.NewLinkedListA(1, 2), nil},
|
|
/* 2 */ {`it=$([<1,2,3>]); it++`, int64(1), nil},
|
|
/* 3 */ {`it=$([<1,2,3>]); #($$(it))`, int64(3), nil},
|
|
/* 4 */ {`[<1,2,3>][0]`, int64(1), nil},
|
|
/* 5 */ {`[<1,2,3>][0..2]`, list.NewLinkedListA(1, 2), nil},
|
|
/* 6 */ {`[<1>] + [<2,3>]`, list.NewLinkedListA(1, 2, 3), nil},
|
|
/* 7 */ {`L=[<1>] + [<2,3>]; L[0]=100; L`, list.NewLinkedListA(100, 2, 3), nil},
|
|
/* 8 */ {`builtin "base"; L=[<1>]; isList(L)`, true, nil},
|
|
/* 9 */ {`2 IN [<1,2,3>]`, true, nil},
|
|
/* 10 */ {`2 AT [<1,2,3>]`, int64(1), nil},
|
|
/* 11 */ {`4 AT [<1,2,3>]`, int64(-1), nil},
|
|
}
|
|
|
|
// t.Setenv("EXPR_PATH", ".")
|
|
|
|
// runTestSuiteSpec(t, section, inputs, 4)
|
|
RunTestSuite(t, section, inputs)
|
|
}
|
|
|
|
func TestLinkedInsert(t *testing.T) {
|
|
section := "LinkedList-Insert"
|
|
inputs := []inputType{
|
|
/* 1 */ {`[<>] << 1`, list.NewLinkedListA(1), nil},
|
|
/* 2 */ {`[<>] << [1,2]`, list.NewLinkedListA(array.ArrayFromIntsA(1, 2)), nil},
|
|
/* 3 */ {`[<>] << [<1,2>]`, list.NewLinkedListA(list.NewLinkedListA(1, 2)), nil},
|
|
/* 4 */ {`1 >> [<>]`, list.NewLinkedListA(1), nil},
|
|
/* 5 */ {`[1,2] >> [<>]`, list.NewLinkedListA(array.ArrayFromIntsA(1, 2)), nil},
|
|
/* 6 */ {`[<1,2>] >> [<>]`, list.NewLinkedListA(list.NewLinkedListA(1, 2)), nil},
|
|
/* 7 */ {`$([1,2]) >> [<>]`, list.NewLinkedListA(1, 2), nil},
|
|
/* 8 */ {`$([<1,2>]) >> [<>]`, list.NewLinkedListA(1, 2), nil},
|
|
}
|
|
|
|
// runTestSuiteSpec(t, section, inputs, 9)
|
|
RunTestSuite(t, section, inputs)
|
|
}
|