master > master: codego initialisiert

This commit is contained in:
RD
2021-05-09 18:22:12 +02:00
parent f4ee7601fd
commit f1a957db03
17 changed files with 1255 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
package utils
import (
"sort"
"strings"
)
/* ---------------------------------------------------------------- *
* EXPORTS
* ---------------------------------------------------------------- */
func StrListContains(list []string, x string) bool {
for _, obj := range list {
if obj == x {
return true
}
}
return false
}
func Min2(x int, y int) int {
if x <= y {
return x
}
return y
}
func Max2(x int, y int) int {
if x >= y {
return x
}
return y
}
func SortStrings(list *[]string) {
sort.Slice(*list, func(i int, j int) bool {
u := strings.ToLower((*list)[i])
v := strings.ToLower((*list)[j])
cmp := strings.Compare(u, v)
return (cmp < 0)
})
}
func FilterStrings(list *[]string, f func(string) bool) []string {
var listFiltered = []string{}
for _, val := range *list {
if f(val) {
listFiltered = append(listFiltered, val)
}
}
return listFiltered
}
func UnionStrings2(list1 []string, list2 []string) []string {
var mark = make(map[string]bool)
for _, item := range list1 {
mark[item] = true
}
for _, item := range list2 {
mark[item] = true
}
var list = make([]string, len(mark))
var i int = 0
for item, _ := range mark {
list[i] = item
i++
}
return list
}
func UnionStringsTo(listTo *[]string, listFrom []string) {
var mark = make(map[string]bool)
for _, item := range listFrom {
mark[item] = true
}
for _, item := range *listTo {
mark[item] = false // signals suppression of duplicate addition
}
for item, isNew := range mark {
if isNew {
*listTo = append(*listTo, item)
}
}
}

View File

@@ -0,0 +1,57 @@
package utils_test
/* ---------------------------------------------------------------- *
* UNIT TESTING
* ---------------------------------------------------------------- */
import (
"logik/core/utils"
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
/* ---------------------------------------------------------------- *
* TESTCASE SortStrings
* ---------------------------------------------------------------- */
func TestSortStrings(test *testing.T) {
var assert = assert.New(test)
var list = []string{"katze", "Hund", "baby", "Pluto", "Saturn", "Mond"}
utils.SortStrings(&list)
assert.Equal(list, []string{"baby", "Hund", "katze", "Mond", "Pluto", "Saturn"})
}
/* ---------------------------------------------------------------- *
* TESTCASE SortStrings
* ---------------------------------------------------------------- */
func TestFilterStrings(test *testing.T) {
var assert = assert.New(test)
var list = []string{"abram", "aaron", "aardvark", "aarhus", "alaska", "eel", "aal"}
var list2 = utils.FilterStrings(&list, func(x string) bool { return strings.HasPrefix(x, "aa") })
assert.Equal(list2, []string{"aaron", "aardvark", "aarhus", "aal"})
}
/* ---------------------------------------------------------------- *
* TESTCASE UnionStrings2, UnionStringsTo
* ---------------------------------------------------------------- */
func TestUnionStrings2(test *testing.T) {
var assert = assert.New(test)
var list1 = []string{"red", "blue", "blue", "green", "blue", "grey", "black", "green"}
var list2 = []string{"yellow", "orange", "lila", "red"}
var list = utils.UnionStrings2(list1, list2)
utils.SortStrings(&list)
assert.Equal(list, []string{"black", "blue", "green", "grey", "lila", "orange", "red", "yellow"})
}
func UnionStringsTo(test *testing.T) {
var assert = assert.New(test)
var list1 = []string{"red", "blue", "blue", "green"}
var list2 = []string{"yellow", "red", "black"}
utils.UnionStringsTo(&list1, list2)
utils.SortStrings(&list1)
assert.Equal(list1, []string{"black", "blue", "green", "red", "yellow"})
}