From be0262786e55bb2dbfda334603cc28f2fc30f403 Mon Sep 17 00:00:00 2001 From: bep Date: Tue, 19 May 2015 22:00:48 +0200 Subject: [PATCH] Add benchmark test for replaceShortcodeTokens --- hugolib/shortcode_test.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/hugolib/shortcode_test.go b/hugolib/shortcode_test.go index 3aa9b1ed2..12302c327 100644 --- a/hugolib/shortcode_test.go +++ b/hugolib/shortcode_test.go @@ -323,6 +323,43 @@ func collectAndSortShortcodes(shortcodes map[string]shortcode) []string { } +func BenchmarkReplaceShortcodeTokens(b *testing.B) { + + data := []struct { + input string + replacements map[string]string + expect interface{} + }{ + {"Hello HUGOSHORTCODE-1.", map[string]string{"HUGOSHORTCODE-1": "World"}, "Hello World."}, + {strings.Repeat("A", 100) + " HUGOSHORTCODE-1.", map[string]string{"HUGOSHORTCODE-1": "Hello World"}, strings.Repeat("A", 100) + " Hello World."}, + {strings.Repeat("A", 500) + " HUGOSHORTCODE-1.", map[string]string{"HUGOSHORTCODE-1": "Hello World"}, strings.Repeat("A", 500) + " Hello World."}, + {strings.Repeat("ABCD ", 500) + " HUGOSHORTCODE-1.", map[string]string{"HUGOSHORTCODE-1": "Hello World"}, strings.Repeat("ABCD ", 500) + " Hello World."}, + {strings.Repeat("A", 500) + " HUGOSHORTCODE-1." + strings.Repeat("BC", 500) + " HUGOSHORTCODE-1.", map[string]string{"HUGOSHORTCODE-1": "Hello World"}, strings.Repeat("A", 500) + " Hello World." + strings.Repeat("BC", 500) + " Hello World."}, + } + b.ResetTimer() + for i := 0; i < b.N; i++ { + for i, this := range data { + results, err := replaceShortcodeTokens([]byte(this.input), "HUGOSHORTCODE", false, this.replacements) + + if expectSuccess, ok := this.expect.(bool); ok && !expectSuccess { + if err == nil { + b.Fatalf("[%d] replaceShortcodeTokens didn't return an expected error", i) + } + } else { + if err != nil { + b.Fatalf("[%d] failed: %s", i, err) + continue + } + if !reflect.DeepEqual(results, []byte(this.expect.(string))) { + b.Fatalf("[%d] replaceShortcodeTokens, got \n%q but expected \n%q", i, results, this.expect) + } + } + + } + + } +} + func TestReplaceShortcodeTokens(t *testing.T) { for i, this := range []struct { input string