blob: 4950ea5b34a2b3ef97475efa4b1a6353dcc7aaeb [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package util
import (
"os"
"testing"
"github.com/stretchr/testify/assert"
)
func TestInt16ToInt64(t *testing.T) {
bs := []int16{0, 0, 0, 1}
i := Int16ToInt64(bs)
if i != 1 {
t.Fatalf("Int16ToInt64 failed, %v %d != %d", bs, i, 1)
}
bs = []int16{1, 0, 0, 0}
i = Int16ToInt64(bs)
if i != 1<<(3*16) {
t.Fatalf("Int16ToInt64 failed, %v %d != %d", bs, i, 1<<(3*16))
}
bs = []int16{1}
i = Int16ToInt64(bs)
if i != 1 {
t.Fatalf("Int16ToInt64 failed, %v %d != %d", bs, i, 1)
}
bs = []int16{1, 0}
i = Int16ToInt64(bs)
if i != 1<<16 {
t.Fatalf("Int16ToInt64 failed, %v %d != %d", bs, i, 1<<16)
}
}
func TestStringJoin(t *testing.T) {
if StringJoin([]string{"a", "b", "c"}, ",") != "a,b,c" {
t.Fatalf("TestStringJoin failed")
}
if StringJoin([]string{"a"}, ",") != "a" {
t.Fatalf("TestStringJoin failed")
}
if StringJoin([]string{"a", "b", "c"}, "") != "abc" {
t.Fatalf("TestStringJoin failed")
}
if StringJoin([]string{}, ",") != "" {
t.Fatalf("TestStringJoin failed")
}
if StringJoin(nil, ",") != "" {
t.Fatalf("TestStringJoin failed")
}
}
func TestStringToBytesWithNoCopy(t *testing.T) {
b := StringToBytesWithNoCopy("ab")
if b[0] != 'a' || b[1] != 'b' {
t.Fatalf("TestStringToBytesWithNoCopy failed")
}
}
func TestListToMap(t *testing.T) {
m := ListToMap(nil)
if m == nil || len(m) > 0 {
t.Fatalf("TestListToMap falied")
}
m = ListToMap([]string{})
if m == nil || len(m) > 0 {
t.Fatalf("TestListToMap falied")
}
m = ListToMap([]string{"a"})
if m == nil || len(m) != 1 || m["a"] != struct{}{} {
t.Fatalf("TestListToMap falied")
}
}
func TestSafeCloseChan(t *testing.T) {
var ch chan struct{}
SafeCloseChan(ch)
ch = make(chan struct{})
SafeCloseChan(ch)
SafeCloseChan(ch)
}
func TestSystemPackage(t *testing.T) {
if HostName() == "" {
t.Fatalf("TestSystemPackage failed")
}
if !PathExist("../../etc/conf/app.conf") {
t.Fatalf("TestSystemPackage failed")
}
}
func TestGetEnvInt(t *testing.T) {
os.Unsetenv("a")
if GetEnvInt("a", 1) != 1 {
t.Fatalf("TestGetEnvInt failed")
}
os.Setenv("a", "")
if GetEnvInt("a", 1) != 1 {
t.Fatalf("TestGetEnvInt failed")
}
os.Setenv("a", "x")
if GetEnvInt("a", 1) != 1 {
t.Fatalf("TestGetEnvInt failed")
}
os.Setenv("a", "2")
if GetEnvInt("a", 1) != 2 {
t.Fatalf("TestGetEnvInt failed")
}
}
func TestGetEnvString(t *testing.T) {
os.Unsetenv("a")
if GetEnvString("a", "1") != "1" {
t.Fatalf("TestGetEnvInt failed")
}
os.Setenv("a", "")
if GetEnvString("a", "1") != "" {
t.Fatalf("TestGetEnvInt failed")
}
os.Setenv("a", "2")
if GetEnvString("a", "1") != "2" {
t.Fatalf("TestGetEnvInt failed")
}
}
func TestBytesToStringWithNoCopy(t *testing.T) {
s := BytesToStringWithNoCopy(nil)
if s != "" {
t.Fatal("TestBytesToStringWithNoCopy failed")
}
}
func TestIsVersionOrHealthPattern(t *testing.T) {
assert.True(t, IsVersionOrHealthPattern("/version"))
assert.True(t, IsVersionOrHealthPattern("/v4/a/registry/version"))
assert.False(t, IsVersionOrHealthPattern("/version/a"))
assert.True(t, IsVersionOrHealthPattern("/health"))
assert.True(t, IsVersionOrHealthPattern("/v4/a/registry/health"))
assert.False(t, IsVersionOrHealthPattern("/health/a"))
}
func TestToSnake(t *testing.T) {
type args struct {
name string
}
tests := []struct {
name string
args args
want string
}{
{"single word", args{"a"}, "a"},
{"2 words", args{"a-b"}, "aB"},
{"3 words", args{"a-b-cc"}, "aBCc"},
{"invalid", args{"a.b"}, "a.b"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := ToSnake(tt.args.name); got != tt.want {
t.Errorf("ToSnake() = %v, want %v", got, tt.want)
}
})
}
}
func TestGeneratePassword(t *testing.T) {
password, err := GeneratePassword()
assert.NoError(t, err)
assert.Equal(t, 8, len(password), password)
}