/staging/src/k8s.io/apimachinery/pkg/util/rand/rand_test.go
Go | 114 lines | 84 code | 10 blank | 20 comment | 26 complexity | 88e534b1cfee4a989ba65e134fe2e6a1 MD5 | raw file
- /*
- Copyright 2015 The Kubernetes Authors.
- Licensed 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 rand
- import (
- "math/rand"
- "strings"
- "testing"
- )
- const (
- maxRangeTestCount = 500
- testStringLength = 32
- )
- func TestString(t *testing.T) {
- valid := "0123456789abcdefghijklmnopqrstuvwxyz"
- for _, l := range []int{0, 1, 2, 10, 123} {
- s := String(l)
- if len(s) != l {
- t.Errorf("expected string of size %d, got %q", l, s)
- }
- for _, c := range s {
- if !strings.ContainsRune(valid, c) {
- t.Errorf("expected valid characters, got %v", c)
- }
- }
- }
- }
- // Confirm that panic occurs on invalid input.
- func TestRangePanic(t *testing.T) {
- defer func() {
- if err := recover(); err == nil {
- t.Errorf("Panic didn't occur!")
- }
- }()
- // Should result in an error...
- Intn(0)
- }
- func TestIntn(t *testing.T) {
- // 0 is invalid.
- for _, max := range []int{1, 2, 10, 123} {
- inrange := Intn(max)
- if inrange < 0 || inrange > max {
- t.Errorf("%v out of range (0,%v)", inrange, max)
- }
- }
- }
- func TestPerm(t *testing.T) {
- Seed(5)
- rand.Seed(5)
- for i := 1; i < 20; i++ {
- actual := Perm(i)
- expected := rand.Perm(i)
- for j := 0; j < i; j++ {
- if actual[j] != expected[j] {
- t.Errorf("Perm call result is unexpected")
- }
- }
- }
- }
- func TestIntnRange(t *testing.T) {
- // 0 is invalid.
- for min, max := range map[int]int{1: 2, 10: 123, 100: 500} {
- for i := 0; i < maxRangeTestCount; i++ {
- inrange := IntnRange(min, max)
- if inrange < min || inrange >= max {
- t.Errorf("%v out of range (%v,%v)", inrange, min, max)
- }
- }
- }
- }
- func TestInt63nRange(t *testing.T) {
- // 0 is invalid.
- for min, max := range map[int64]int64{1: 2, 10: 123, 100: 500} {
- for i := 0; i < maxRangeTestCount; i++ {
- inrange := Int63nRange(min, max)
- if inrange < min || inrange >= max {
- t.Errorf("%v out of range (%v,%v)", inrange, min, max)
- }
- }
- }
- }
- func BenchmarkRandomStringGeneration(b *testing.B) {
- b.ResetTimer()
- var s string
- for i := 0; i < b.N; i++ {
- s = String(testStringLength)
- }
- b.StopTimer()
- if len(s) == 0 {
- b.Fatal(s)
- }
- }