2015-07-01 15:35:44 +00:00
/ *
2016-06-03 00:25:58 +00:00
Copyright 2015 The Kubernetes Authors .
2015-07-01 15:35:44 +00:00
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 main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func Test_buildTOC ( t * testing . T ) {
var cases = [ ] struct {
2015-07-20 16:45:58 +00:00
in string
expected string
2015-07-01 15:35:44 +00:00
} {
2015-07-20 16:45:58 +00:00
{ "" , "" } ,
{ "Lorem ipsum\ndolor sit amet\n" , "" } ,
2015-07-11 04:50:56 +00:00
{
"# Title\nLorem ipsum \n## Section Heading\ndolor sit amet\n" ,
2015-07-20 16:45:58 +00:00
"\n- [Title](#title)\n - [Section Heading](#section-heading)\n\n" ,
2015-07-13 16:26:44 +00:00
} ,
{
"# Title\nLorem ipsum \n## Section Heading\ndolor sit amet\n```bash\n#!/bin/sh\n```" ,
2015-07-20 16:45:58 +00:00
"\n- [Title](#title)\n - [Section Heading](#section-heading)\n\n" ,
2015-07-11 04:50:56 +00:00
} ,
2015-07-15 18:26:51 +00:00
{
2015-07-17 00:56:56 +00:00
"# Title\nLorem ipsum \n## Section Heading\n### Ok, why doesn't this work? ...add 4 *more* `symbols`!\ndolor sit amet\n" ,
2015-07-20 16:45:58 +00:00
"\n- [Title](#title)\n - [Section Heading](#section-heading)\n - [Ok, why doesn't this work? ...add 4 *more* `symbols`!](#ok-why-doesnt-this-work-add-4-more-symbols)\n\n" ,
2015-07-15 18:26:51 +00:00
} ,
2015-07-01 15:35:44 +00:00
}
2015-07-20 16:45:58 +00:00
for i , c := range cases {
in := getMungeLines ( c . in )
expected := getMungeLines ( c . expected )
actual := buildTOC ( in )
if ! expected . Equal ( actual ) {
t . Errorf ( "Case[%d] Expected TOC '%v' but got '%v'" , i , expected . String ( ) , actual . String ( ) )
2015-07-01 15:35:44 +00:00
}
}
}
func Test_updateTOC ( t * testing . T ) {
var cases = [ ] struct {
2015-07-20 16:45:58 +00:00
in string
expected string
2015-07-01 15:35:44 +00:00
} {
{ "" , "" } ,
2015-07-11 04:50:56 +00:00
{
"Lorem ipsum\ndolor sit amet\n" ,
"Lorem ipsum\ndolor sit amet\n" ,
} ,
{
"# Title\nLorem ipsum \n**table of contents**\n<!-- BEGIN MUNGE: GENERATED_TOC -->\nold cruft\n<!-- END MUNGE: GENERATED_TOC -->\n## Section Heading\ndolor sit amet\n" ,
2015-07-17 16:20:19 +00:00
"# Title\nLorem ipsum \n**table of contents**\n<!-- BEGIN MUNGE: GENERATED_TOC -->\n\n- [Title](#title)\n - [Section Heading](#section-heading)\n\n<!-- END MUNGE: GENERATED_TOC -->\n## Section Heading\ndolor sit amet\n" ,
2015-07-11 04:50:56 +00:00
} ,
2015-07-01 15:35:44 +00:00
}
for _ , c := range cases {
2015-07-20 16:45:58 +00:00
in := getMungeLines ( c . in )
expected := getMungeLines ( c . expected )
actual , err := updateTOC ( "filename.md" , in )
2015-07-01 15:35:44 +00:00
assert . NoError ( t , err )
2015-07-20 16:45:58 +00:00
if ! expected . Equal ( actual ) {
t . Errorf ( "Expected TOC '%v' but got '%v'" , expected . String ( ) , actual . String ( ) )
2015-07-01 15:35:44 +00:00
}
}
}