Added test cases for improving line and branch coverage (#1150)
* Initial Commit * Assignment 1 Submissionmaster
parent
7f8607b881
commit
80842d72db
|
@ -1,8 +1,12 @@
|
||||||
package us.codecraft.webmagic;
|
package us.codecraft.webmagic;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
@ -14,4 +18,23 @@ public class SiteTest {
|
||||||
assertEquals(StandardCharsets.UTF_8.name(), site.getDefaultCharset());
|
assertEquals(StandardCharsets.UTF_8.name(), site.getDefaultCharset());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void addCookieTest(){
|
||||||
|
Site site=Site.me().setDefaultCharset(StandardCharsets.UTF_8.name());
|
||||||
|
site.addCookie("cookieDefault","cookie-webmagicDefault");
|
||||||
|
String firstDomain="example.com";
|
||||||
|
String secondDomain="exampleCopy.com";
|
||||||
|
site.addCookie(firstDomain, "cookie", "cookie-webmagic");
|
||||||
|
site.addCookie(firstDomain, "cookieCopy", "cookie-webmagicCopy");
|
||||||
|
site.addCookie(secondDomain, "cookie", "cookie-webmagic");
|
||||||
|
Map<String, Map<String, String>> allCookies = site.getAllCookies();
|
||||||
|
List<String> domains=new ArrayList<>();
|
||||||
|
for(String key : allCookies.keySet()){
|
||||||
|
domains.add(key);
|
||||||
|
}
|
||||||
|
assertEquals("cookie-webmagic", allCookies.get(firstDomain).get("cookie"));
|
||||||
|
assertEquals("cookie-webmagicCopy", allCookies.get(firstDomain).get("cookieCopy"));
|
||||||
|
assertEquals("cookie-webmagic", allCookies.get(secondDomain).get("cookie"));
|
||||||
|
assertEquals(2, domains.size());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,7 @@ import static com.github.dreamhead.moco.Moco.uri;
|
||||||
import static com.github.dreamhead.moco.Moco.with;
|
import static com.github.dreamhead.moco.Moco.with;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertThrows;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -333,5 +334,13 @@ public class HttpClientDownloaderTest {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test_no_task_download(){
|
||||||
|
Request request = new Request();
|
||||||
|
request.setUrl("http://127.0.0.1:13423/");
|
||||||
|
HttpClientDownloader httpClientDownloader = new HttpClientDownloader();
|
||||||
|
assertThrows(NullPointerException.class, () -> httpClientDownloader.download(request,null));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
package us.codecraft.webmagic.selector;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class AndSelectorTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSelectList() {
|
||||||
|
String htmlContent = "<!DOCTYPE html>\n" +
|
||||||
|
"<html lang=\"en\">\n" +
|
||||||
|
"<head>\n" +
|
||||||
|
" <meta charset=\"UTF-8\">\n" +
|
||||||
|
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" +
|
||||||
|
" <title>HTML with XPath</title>\n" +
|
||||||
|
"</head>\n" +
|
||||||
|
"<body>\n" +
|
||||||
|
" <div class=\"container\">\n" +
|
||||||
|
" <div class=\"item1\">Item 1</div>\n" +
|
||||||
|
" <div class=\"item2\">Item 2</div>\n" +
|
||||||
|
" </div>\n" +
|
||||||
|
"</body>\n" +
|
||||||
|
"</html>";
|
||||||
|
List<Selector> selectors = new ArrayList<Selector>();
|
||||||
|
selectors.add(new CssSelector("div"));
|
||||||
|
selectors.add(new XpathSelector("//div[@class='item1']"));
|
||||||
|
AndSelector andSelector = new AndSelector(selectors);
|
||||||
|
List<String> result = andSelector.selectList(htmlContent);
|
||||||
|
assertEquals("<div class=\"item1\">\n Item 1\n</div>", result.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSelectList_NoResults() {
|
||||||
|
String htmlContent = "<!DOCTYPE html>\n" +
|
||||||
|
"<html lang=\"en\">\n" +
|
||||||
|
"<head>\n" +
|
||||||
|
" <meta charset=\"UTF-8\">\n" +
|
||||||
|
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" +
|
||||||
|
" <title>HTML with XPath</title>\n" +
|
||||||
|
"</head>\n" +
|
||||||
|
"<body>\n" +
|
||||||
|
" <div class=\"container\">\n" +
|
||||||
|
" <div class=\"item1\">Item 1</div>\n" +
|
||||||
|
" <div class=\"item2\">Item 2</div>\n" +
|
||||||
|
" </div>\n" +
|
||||||
|
"</body>\n" +
|
||||||
|
"</html>";
|
||||||
|
List<Selector> selectors = new ArrayList<Selector>();
|
||||||
|
selectors.add(new CssSelector("div"));
|
||||||
|
selectors.add(new XpathSelector("//div[@class='item']"));
|
||||||
|
AndSelector andSelector = new AndSelector(selectors);
|
||||||
|
List<String> result = andSelector.selectList(htmlContent);
|
||||||
|
assertEquals(0, result.size());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
package us.codecraft.webmagic.selector;
|
||||||
|
|
||||||
|
import org.jsoup.Jsoup;
|
||||||
|
import org.jsoup.nodes.Document;
|
||||||
|
import org.jsoup.nodes.Element;
|
||||||
|
import org.jsoup.select.Elements;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.runners.MockitoJUnitRunner;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
public class CssSelectorTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSelectElement() {
|
||||||
|
CssSelector cssSelector = new CssSelector("div");
|
||||||
|
String htmlContent = "<html><head><title>Dummy Page</title></head><body><div id=\"dummyDiv\">Hello World!</div></body></html>";
|
||||||
|
Document doc = Jsoup.parse(htmlContent);
|
||||||
|
Element dummyElement = doc.getElementById("dummyDiv");
|
||||||
|
Element resultElement = cssSelector.selectElement(dummyElement);
|
||||||
|
assertNotNull(resultElement);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSelectList() {
|
||||||
|
CssSelector cssSelector = new CssSelector("div");
|
||||||
|
String htmlContent = "<html><head><title>Dummy Page</title></head><body><div id=\"dummyDiv\">Hello World!</div></body></html>";
|
||||||
|
Document doc = Jsoup.parse(htmlContent);
|
||||||
|
Element dummyElement = doc.getElementById("dummyDiv");
|
||||||
|
List<String> result = cssSelector.selectList(dummyElement);
|
||||||
|
assertEquals(1, result.size());
|
||||||
|
assertEquals("[<div id=\"dummyDiv\">\n Hello World!\n</div>]", result.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package us.codecraft.webmagic.selector;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class OrSelectorTest {
|
||||||
|
@Test
|
||||||
|
public void testSelectList() {
|
||||||
|
String htmlContent = "<!DOCTYPE html>\n" +
|
||||||
|
"<html lang=\"en\">\n" +
|
||||||
|
"<head>\n" +
|
||||||
|
" <meta charset=\"UTF-8\">\n" +
|
||||||
|
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" +
|
||||||
|
" <title>HTML with XPath</title>\n" +
|
||||||
|
"</head>\n" +
|
||||||
|
"<body>\n" +
|
||||||
|
" <div class=\"container\">\n" +
|
||||||
|
" <div class=\"item1\">Item 1</div>\n" +
|
||||||
|
" <div class=\"item2\">Item 2</div>\n" +
|
||||||
|
" </div>\n" +
|
||||||
|
"</body>\n" +
|
||||||
|
"</html>";
|
||||||
|
String expectedResult = "[<head>\n" +
|
||||||
|
" <meta charset=\"UTF-8\">\n" +
|
||||||
|
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" +
|
||||||
|
" <title>HTML with XPath</title>\n" +
|
||||||
|
"</head>, <div class=\"item1\">\n" +
|
||||||
|
" Item 1\n" +
|
||||||
|
"</div>, <div class=\"item2\">\n" +
|
||||||
|
" Item 2\n" +
|
||||||
|
"</div>]";
|
||||||
|
List<Selector> selectors = new ArrayList<Selector>();
|
||||||
|
selectors.add(new CssSelector("head"));
|
||||||
|
selectors.add(new XpathSelector("//div[@class='item1']"));
|
||||||
|
selectors.add(new XpathSelector("//div[@class='item2']"));
|
||||||
|
OrSelector orSelector = new OrSelector(selectors);
|
||||||
|
List<String> result = orSelector.selectList(htmlContent);
|
||||||
|
assertEquals(expectedResult, result.toString());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue