// Copyright 2018 The Hugo Authors. All rights reserved. // // 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 transform import ( "bytes" "strings" "testing" "github.com/stretchr/testify/assert" ) func TestChainZeroTransformers(t *testing.T) { tr := New() in := new(bytes.Buffer) out := new(bytes.Buffer) if err := tr.Apply(in, out); err != nil { t.Errorf("A zero transformer chain returned an error.") } } func TestChaingMultipleTransformers(t *testing.T) { f1 := func(ct FromTo) error { _, err := ct.To().Write(bytes.Replace(ct.From().Bytes(), []byte("f1"), []byte("f1r"), -1)) return err } f2 := func(ct FromTo) error { _, err := ct.To().Write(bytes.Replace(ct.From().Bytes(), []byte("f2"), []byte("f2r"), -1)) return err } f3 := func(ct FromTo) error { _, err := ct.To().Write(bytes.Replace(ct.From().Bytes(), []byte("f3"), []byte("f3r"), -1)) return err } f4 := func(ct FromTo) error { _, err := ct.To().Write(bytes.Replace(ct.From().Bytes(), []byte("f4"), []byte("f4r"), -1)) return err } tr := New(f1, f2, f3, f4) out := new(bytes.Buffer) if err := tr.Apply(out, strings.NewReader("Test: f4 f3 f1 f2 f1 The End.")); err != nil { t.Errorf("Multi transformer chain returned an error: %s", err) } expected := "Test: f4r f3r f1r f2r f1r The End." if out.String() != expected { t.Errorf("Expected %s got %s", expected, out.String()) } } func TestNewEmptyTransforms(t *testing.T) { transforms := NewEmpty() assert.Equal(t, 20, cap(transforms)) }