1
0
Fork 0
mirror of https://github.com/avelino/awesome-go.git synced 2024-11-13 11:14:37 -05:00

add tests to validate alphabetic order #342

This commit is contained in:
Duke 2015-04-14 01:02:29 -03:00
parent 5e111190b8
commit 8da085ef05

63
repo_test.go Normal file
View file

@ -0,0 +1,63 @@
package repo
import (
"bytes"
"io/ioutil"
"log"
"os"
"sort"
"strings"
"testing"
"github.com/PuerkitoBio/goquery"
"github.com/russross/blackfriday"
)
func TestAlpha(t *testing.T) {
query := startQuery()
query.Find("body > ul").Each(func(_ int, s *goquery.Selection) {
testList(t, s)
})
}
func testList(t *testing.T, list *goquery.Selection) {
list.Find("ul").Each(func(_ int, items *goquery.Selection) {
testList(t, items)
items.RemoveFiltered("ul")
})
checkAlphabeticOrder(t, list)
}
func readme() []byte {
input, _ := ioutil.ReadFile("./README.md")
html := append([]byte("<body>"), blackfriday.MarkdownCommon(input)...)
html = append(html, []byte("</body>")...)
return html
}
func startQuery() *goquery.Document {
ioutil.WriteFile("z.html", readme(), os.ModePerm)
buf := bytes.NewBuffer(readme())
query, _ := goquery.NewDocumentFromReader(buf)
return query
}
func checkAlphabeticOrder(t *testing.T, s *goquery.Selection) {
items := s.Find("li > a:first-child").Map(func(_ int, li *goquery.Selection) string {
return strings.ToLower(li.Text())
})
sorted := make([]string, len(items))
copy(sorted, items)
sort.Strings(sorted)
for k, item := range items {
log.Println("Current: ", item, "=> ", sorted[k])
if item != sorted[k] {
t.Fatalf("expected '%s' but actual is '%s'", sorted[k], item)
}
}
}