mirror of
https://github.com/avelino/awesome-go.git
synced 2024-12-12 17:13:58 +00:00
64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
|
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)
|
||
|
}
|
||
|
}
|
||
|
}
|