hugo

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

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

encoding_test.go (2697B)

    1 // Copyright 2020 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 encoding
   15 
   16 import (
   17 	"html/template"
   18 	"math"
   19 	"testing"
   20 
   21 	qt "github.com/frankban/quicktest"
   22 )
   23 
   24 type tstNoStringer struct{}
   25 
   26 func TestBase64Decode(t *testing.T) {
   27 	t.Parallel()
   28 	c := qt.New(t)
   29 
   30 	ns := New()
   31 
   32 	for _, test := range []struct {
   33 		v      any
   34 		expect any
   35 	}{
   36 		{"YWJjMTIzIT8kKiYoKSctPUB+", "abc123!?$*&()'-=@~"},
   37 		// errors
   38 		{t, false},
   39 	} {
   40 
   41 		result, err := ns.Base64Decode(test.v)
   42 
   43 		if b, ok := test.expect.(bool); ok && !b {
   44 			c.Assert(err, qt.Not(qt.IsNil))
   45 			continue
   46 		}
   47 
   48 		c.Assert(err, qt.IsNil)
   49 		c.Assert(result, qt.Equals, test.expect)
   50 	}
   51 }
   52 
   53 func TestBase64Encode(t *testing.T) {
   54 	t.Parallel()
   55 	c := qt.New(t)
   56 
   57 	ns := New()
   58 
   59 	for _, test := range []struct {
   60 		v      any
   61 		expect any
   62 	}{
   63 		{"YWJjMTIzIT8kKiYoKSctPUB+", "WVdKak1USXpJVDhrS2lZb0tTY3RQVUIr"},
   64 		// errors
   65 		{t, false},
   66 	} {
   67 
   68 		result, err := ns.Base64Encode(test.v)
   69 
   70 		if b, ok := test.expect.(bool); ok && !b {
   71 			c.Assert(err, qt.Not(qt.IsNil))
   72 			continue
   73 		}
   74 
   75 		c.Assert(err, qt.IsNil)
   76 		c.Assert(result, qt.Equals, test.expect)
   77 	}
   78 }
   79 
   80 func TestJsonify(t *testing.T) {
   81 	t.Parallel()
   82 	c := qt.New(t)
   83 	ns := New()
   84 
   85 	for _, test := range []struct {
   86 		opts   any
   87 		v      any
   88 		expect any
   89 	}{
   90 		{nil, []string{"a", "b"}, template.HTML(`["a","b"]`)},
   91 		{map[string]string{"indent": "<i>"}, []string{"a", "b"}, template.HTML("[\n<i>\"a\",\n<i>\"b\"\n]")},
   92 		{map[string]string{"prefix": "<p>"}, []string{"a", "b"}, template.HTML("[\n<p>\"a\",\n<p>\"b\"\n<p>]")},
   93 		{map[string]string{"prefix": "<p>", "indent": "<i>"}, []string{"a", "b"}, template.HTML("[\n<p><i>\"a\",\n<p><i>\"b\"\n<p>]")},
   94 		{nil, tstNoStringer{}, template.HTML("{}")},
   95 		{nil, nil, template.HTML("null")},
   96 		// errors
   97 		{nil, math.NaN(), false},
   98 		{tstNoStringer{}, []string{"a", "b"}, false},
   99 	} {
  100 		args := []any{}
  101 
  102 		if test.opts != nil {
  103 			args = append(args, test.opts)
  104 		}
  105 
  106 		args = append(args, test.v)
  107 
  108 		result, err := ns.Jsonify(args...)
  109 
  110 		if b, ok := test.expect.(bool); ok && !b {
  111 			c.Assert(err, qt.Not(qt.IsNil))
  112 			continue
  113 		}
  114 
  115 		c.Assert(err, qt.IsNil)
  116 		c.Assert(result, qt.Equals, test.expect)
  117 	}
  118 }