Commit b1650904 authored by yihua.huang's avatar yihua.huang

Bugfix:Type convert error in JsonPathSelector #129

parent 95bdb302
......@@ -46,9 +46,12 @@ public class JsonPathSelector implements Selector {
return list;
}
if (object instanceof List) {
return (List<String>) object;
List<Object> items = (List<Object>) object;
for (Object item : items) {
list.add(String.valueOf(item));
}
} else {
list.add(object.toString());
list.add(String.valueOf(object));
}
return list;
}
......
package us.codecraft.webmagic.selector;
import junit.framework.Assert;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static us.codecraft.webmagic.selector.Selectors.*;
/**
......@@ -16,19 +16,19 @@ public class ExtractorsTest {
@Test
public void testEach() {
Assert.assertEquals("<a href=\"xxx\">aabbcc</a>", $("div h1 a").select(html));
Assert.assertEquals("xxx", $("div h1 a", "href").select(html));
Assert.assertEquals("aabbcc", $("div h1 a", "innerHtml").select(html));
Assert.assertEquals("xxx", xpath("//a/@href").select(html));
Assert.assertEquals("xxx", regex("a href=\"(.*)\"").select(html));
Assert.assertEquals("xxx", regex("(a href)=\"(.*)\"", 2).select(html));
assertThat($("div h1 a").select(html)).isEqualTo("<a href=\"xxx\">aabbcc</a>");
assertThat($("div h1 a", "href").select(html)).isEqualTo("xxx");
assertThat($("div h1 a", "innerHtml").select(html)).isEqualTo("aabbcc");
assertThat(xpath("//a/@href").select(html)).isEqualTo("xxx");
assertThat(regex("a href=\"(.*)\"").select(html)).isEqualTo("xxx");
assertThat(regex("(a href)=\"(.*)\"", 2).select(html)).isEqualTo("xxx");
}
@Test
public void testCombo() {
Assert.assertEquals("bb", and($("title"), regex("aa(bb)cc")).select(html2));
assertThat(and($("title"), regex("aa(bb)cc")).select(html2)).isEqualTo("bb");
OrSelector or = or($("div h1 a", "innerHtml"), xpath("//title"));
Assert.assertEquals("aabbcc", or.select(html));
Assert.assertEquals("<title>aabbcc</title>", or.select(html2));
assertThat(or.select(html)).isEqualTo("aabbcc");
assertThat(or.select(html2)).isEqualTo("<title>aabbcc</title>");
}
}
package us.codecraft.webmagic.selector;
import junit.framework.Assert;
import org.junit.Test;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author code4crafter@gmai.com <br>
*/
......@@ -32,16 +33,16 @@ public class JsonPathSelectorTest {
"}";
@Test
public void test() {
public void testJsonPath() {
JsonPathSelector jsonPathSelector = new JsonPathSelector("$.store.book[*].author");
String select = jsonPathSelector.select(text);
List<String> list = jsonPathSelector.selectList(text);
Assert.assertNotNull(select);
Assert.assertNotNull(list);
assertThat(select).isEqualTo("Nigel Rees");
assertThat(list).contains("Nigel Rees","Evelyn Waugh");
jsonPathSelector = new JsonPathSelector("$.store.book[?(@.category == 'reference')]");
list = jsonPathSelector.selectList(text);
select = jsonPathSelector.select(text);
Assert.assertNotNull(list);
Assert.assertNotNull(select);
assertThat(select).isEqualTo("{\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"category\":\"reference\",\"price\":8.95}");
assertThat(list).contains("{\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"category\":\"reference\",\"price\":8.95}");
}
}
package us.codecraft.webmagic.selector;
import org.junit.Assert;
import org.assertj.core.api.Assertions;
import org.junit.Test;
/**
......@@ -20,6 +20,6 @@ public class RegexSelectorTest {
String source = "(hello world";
RegexSelector regexSelector = new RegexSelector(regex);
String select = regexSelector.select(source);
Assert.assertEquals(source,select);
Assertions.assertThat(select).isEqualTo(source);
}
}
......@@ -49,11 +49,6 @@ public class UrlUtilsTest {
assertThat(replacedHtml).isEqualTo("<a href=\"http://www.dianping.com/start\" tag>");
}
@Test
public void test(){
UrlUtils.canonicalizeUrl("start tag", "http://www.dianping.com/");
}
@Test
public void testGetDomain(){
String url = "http://www.dianping.com/aa/";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment