func TestScripts(t *testing.T) { ut.Run(t) ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { fmt.Fprint(w, htmlPage1) })) defer ts.Close() bow := NewBrowser() err := bow.Open(ts.URL) ut.AssertNil(err) scripts := bow.Scripts() ut.AssertEquals(2, len(scripts)) ut.AssertEquals("http://godoc.org/-/site.js", scripts[0].URL.String()) ut.AssertEquals("text/javascript", scripts[0].Type) ut.AssertEquals(ts.URL+"/jquery.min.js", scripts[1].URL.String()) ut.AssertEquals("text/javascript", scripts[1].Type) buff := &bytes.Buffer{} l, err := scripts[0].Download(buff) ut.AssertNil(err) ut.AssertGreaterThan(0, buff.Len()) ut.AssertEquals(int(l), buff.Len()) }
func TestImages(t *testing.T) { ut.Run(t) ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { fmt.Fprint(w, htmlPage1) })) defer ts.Close() bow := NewBrowser() err := bow.Open(ts.URL) ut.AssertNil(err) images := bow.Images() ut.AssertEquals(2, len(images)) ut.AssertEquals("imgur-image", images[0].ID) ut.AssertEquals("http://i.imgur.com/HW4bJtY.jpg", images[0].URL.String()) ut.AssertEquals("", images[0].Alt) ut.AssertEquals("It's a...", images[0].Title) ut.AssertEquals("", images[1].ID) ut.AssertEquals(ts.URL+"/Cxagv.jpg", images[1].URL.String()) ut.AssertEquals("A picture", images[1].Alt) ut.AssertEquals("", images[1].Title) buff := &bytes.Buffer{} l, err := images[0].Download(buff) ut.AssertNil(err) ut.AssertGreaterThan(0, buff.Len()) ut.AssertEquals(int(l), buff.Len()) }
func TestDownload(t *testing.T) { ut.Run(t) out := &bytes.Buffer{} u, _ := url.Parse("http://i.imgur.com/HW4bJtY.jpg") asset := NewImageAsset(u, "", "", "") l, err := DownloadAsset(asset, out) ut.AssertNil(err) ut.AssertGreaterThan(0, int(l)) ut.AssertEquals(int(l), out.Len()) }
func TestDownload(t *testing.T) { ut.Run(t) ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { fmt.Fprint(w, req.UserAgent()) })) defer ts.Close() bow := NewBrowser() bow.Open(ts.URL) buff := &bytes.Buffer{} l, err := bow.Download(buff) ut.AssertNil(err) ut.AssertGreaterThan(0, int(l)) ut.AssertEquals(int(l), buff.Len()) }
func TestDownloadAsync(t *testing.T) { ut.Run(t) ch := make(AsyncDownloadChannel, 1) u1, _ := url.Parse("http://i.imgur.com/HW4bJtY.jpg") u2, _ := url.Parse("http://i.imgur.com/HkPOzEH.jpg") asset1 := NewImageAsset(u1, "", "", "") asset2 := NewImageAsset(u2, "", "", "") out1 := &bytes.Buffer{} out2 := &bytes.Buffer{} queue := 2 DownloadAssetAsync(asset1, out1, ch) DownloadAssetAsync(asset2, out2, ch) for { select { case result := <-ch: ut.AssertGreaterThan(0, int(result.Size)) if result.Asset == asset1 { ut.AssertEquals(int(result.Size), out1.Len()) } else if result.Asset == asset2 { ut.AssertEquals(int(result.Size), out2.Len()) } else { t.Failed() } queue-- if queue == 0 { goto COMPLETE } } } COMPLETE: close(ch) ut.AssertEquals(0, queue) }