Added test cases for improving line and branch coverage (#1150)

* Initial Commit

* Assignment 1 Submission
master
ayushi250317 2024-03-23 02:22:30 -03:00 committed by GitHub
parent 7f8607b881
commit 80842d72db
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 174 additions and 0 deletions

View File

@ -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());
}
} }

View File

@ -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));
}
} }

View File

@ -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());
}
}

View File

@ -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());
}
}

View File

@ -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());
}
}