hugo

Fork of github.com/gohugoio/hugo with reverse pagination support

git clone git://git.shimmy1996.com/hugo.git

helpers_test.go (2030B)

    1 // Copyright 2019 The Hugo Authors. All rights reserved.
    2 //
    3 // Licensed under the Apache License, Version 2.0 (the "License");
    4 // you may not use this file except in compliance with the License.
    5 // You may obtain a copy of the License at
    6 // http://www.apache.org/licenses/LICENSE-2.0
    7 //
    8 // Unless required by applicable law or agreed to in writing, software
    9 // distributed under the License is distributed on an "AS IS" BASIS,
   10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   11 // See the License for the specific language governing permissions and
   12 // limitations under the License.
   13 
   14 package hreflect
   15 
   16 import (
   17 	"reflect"
   18 	"testing"
   19 	"time"
   20 
   21 	qt "github.com/frankban/quicktest"
   22 )
   23 
   24 func TestIsTruthful(t *testing.T) {
   25 	c := qt.New(t)
   26 
   27 	c.Assert(IsTruthful(true), qt.Equals, true)
   28 	c.Assert(IsTruthful(false), qt.Equals, false)
   29 	c.Assert(IsTruthful(time.Now()), qt.Equals, true)
   30 	c.Assert(IsTruthful(time.Time{}), qt.Equals, false)
   31 }
   32 
   33 func TestGetMethodByName(t *testing.T) {
   34 	c := qt.New(t)
   35 	v := reflect.ValueOf(&testStruct{})
   36 	tp := v.Type()
   37 
   38 	c.Assert(GetMethodIndexByName(tp, "Method1"), qt.Equals, 0)
   39 	c.Assert(GetMethodIndexByName(tp, "Method3"), qt.Equals, 2)
   40 	c.Assert(GetMethodIndexByName(tp, "Foo"), qt.Equals, -1)
   41 }
   42 
   43 func BenchmarkIsTruthFul(b *testing.B) {
   44 	v := reflect.ValueOf("Hugo")
   45 
   46 	b.ResetTimer()
   47 	for i := 0; i < b.N; i++ {
   48 		if !IsTruthfulValue(v) {
   49 			b.Fatal("not truthful")
   50 		}
   51 	}
   52 }
   53 
   54 type testStruct struct{}
   55 
   56 func (t *testStruct) Method1() string {
   57 	return "Hugo"
   58 }
   59 
   60 func (t *testStruct) Method2() string {
   61 	return "Hugo"
   62 }
   63 
   64 func (t *testStruct) Method3() string {
   65 	return "Hugo"
   66 }
   67 
   68 func (t *testStruct) Method4() string {
   69 	return "Hugo"
   70 }
   71 
   72 func (t *testStruct) Method5() string {
   73 	return "Hugo"
   74 }
   75 
   76 func BenchmarkGetMethodByName(b *testing.B) {
   77 	v := reflect.ValueOf(&testStruct{})
   78 	methods := []string{"Method1", "Method2", "Method3", "Method4", "Method5"}
   79 
   80 	b.ResetTimer()
   81 	for i := 0; i < b.N; i++ {
   82 		for _, method := range methods {
   83 			_ = GetMethodByName(v, method)
   84 		}
   85 	}
   86 }