Files
htwkalender-pwa/backend/service/functions/string_test.go
2024-04-02 11:34:47 +02:00

99 lines
3.1 KiB
Go

//Calendar implementation for the HTWK Leipzig timetable. Evaluation and display of the individual dates in iCal format.
//Copyright (C) 2024 HTWKalender support@htwkalender.de
//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU Affero General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU Affero General Public License for more details.
//You should have received a copy of the GNU Affero General Public License
//along with this program. If not, see <https://www.gnu.org/licenses/>.
package functions
import (
"testing"
)
func TestOnlyWhitespace(t *testing.T) {
type args struct {
word string
}
tests := []struct {
name string
args args
want bool
}{
{"empty string", args{""}, true},
{"whitespace", args{" "}, true},
{"whitespaces", args{" "}, true},
{"whitespaces and tabs", args{" \t"}, true},
{"whitespaces and tabs and newlines", args{" \t\n"}, true},
{"whitespaces and tabs and newlines and non-breaking spaces", args{" \t\n\u00A0"}, true},
{"non-whitespace", args{"a"}, false},
{"non-whitespaces", args{"abc"}, false},
{"non-whitespaces and tabs", args{"abc\t"}, false},
{"non-whitespaces and tabs and newlines", args{"abc\t\n"}, false},
{"non-whitespaces and tabs and newlines and non-breaking spaces", args{"abc\t\n\u00A0"}, false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := OnlyWhitespace(tt.args.word); got != tt.want {
t.Errorf("OnlyWhitespace() = %v, want %v", got, tt.want)
}
})
}
}
func TestHashString(t *testing.T) {
type args struct {
s string
}
tests := []struct {
name string
args args
want string
}{
{"empty string", args{""}, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},
{"non-empty string", args{"abc"}, "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := HashString(tt.args.s); got != tt.want {
t.Errorf("HashString() = %v, want %v", got, tt.want)
}
})
}
}
func TestIsSeparator(t *testing.T) {
type args struct {
separator []rune
character rune
}
tests := []struct {
name string
args args
want bool
}{
{"empty separator", args{[]rune{}, 'a'}, false},
{"separator with one rune equal", args{[]rune{'a'}, 'a'}, true},
{"separator with one rune different", args{[]rune{'a'}, 'b'}, false},
{"separator with two runes equal", args{[]rune{'a', 'b'}, 'a'}, true},
{"separator with two runes equal second", args{[]rune{'a', 'b'}, 'b'}, true},
{"separator with two runes different", args{[]rune{'a', 'b'}, 'c'}, false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := IsSeparator(tt.args.separator)(tt.args.character); got != tt.want {
t.Errorf("IsSeparator()() = %v, want %v", got, tt.want)
}
})
}
}