Skip to content

Commit ede0dec

Browse files
committed
improve xmlreader test
1 parent 8321cce commit ede0dec

File tree

6 files changed

+41
-15
lines changed

6 files changed

+41
-15
lines changed

propertysuggester/analyzer/CsvGenerator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,5 @@ def _write_entries(table, csv_writer, context):
2626
probability = value/float(row["appearances"])
2727
csv_writer.writerow((pid1, '', pid2, value, probability, context))
2828
rowcount += 1
29-
if not rowcount % 1000:
29+
if rowcount % 1000 == 0:
3030
print "rows {0}".format(rowcount)

propertysuggester/analyzer/TableGenerator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
from collections import defaultdict
32
from propertysuggester.utils.datamodel import Entity
43

@@ -49,6 +48,7 @@ def _count_occurances(distinct_ids, table):
4948
if pid1 != pid2:
5049
table[pid1][pid2] += 1
5150

51+
5252
def _count_special_appearances(claim, get_special, special_table):
5353
"""
5454
@type claim: Claim

propertysuggester/parser/XmlReader.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ def _process_json((title, json_string)):
8989

9090
claims = []
9191
for statement in data["claims"]:
92-
claim_json = statement["m"]
9392
references = []
9493
for i in statement["refs"]:
9594
for a in i:
@@ -98,11 +97,11 @@ def _process_json((title, json_string)):
9897
references.append(ref)
9998
qualifiers = []
10099
for q in statement["q"]:
101-
qualifier = _parse_json_snak(q)
102-
if qualifier:
103-
qualifiers.append(qualifier)
100+
qualifier = _parse_json_snak(q)
101+
if qualifier:
102+
qualifiers.append(qualifier)
104103

105-
claim = _parse_json_snak(claim_json)
104+
claim = _parse_json_snak(statement["m"])
106105
if claim:
107106
claims.append(Claim(claim, qualifiers, references))
108107

@@ -132,4 +131,4 @@ def _parse_json_snak(claim_json):
132131
datatype = "unknown"
133132
value = claim_json[0]
134133
property_id = claim_json[1]
135-
return Snak(property_id, datatype, value)
134+
return Snak(property_id, datatype, value)

propertysuggester/test/parser/test_abstract_reader.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55

66

77
class AbstractUniverseTest(TestCase):
8-
def setUp(self):
9-
TestCase.setUp(self)
10-
118
def assert_universe(self, result):
129
self.assertThat(result, HasLength(1))
1310
q1 = result[0]
Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
from StringIO import StringIO
22

33
from testtools import TestCase
4+
from testtools.matchers import *
45

56
from propertysuggester.parser import CsvReader
67
from propertysuggester.test.parser.test_abstract_reader import AbstractUniverseTest
8+
from propertysuggester.utils.datamodel import Claim, Entity, Snak
79

810

911
class CsvReaderTest(AbstractUniverseTest):
12+
def setUp(self):
13+
AbstractUniverseTest.setUp(self)
14+
15+
1016
def test_universe(self):
1117
out = StringIO()
1218
out.writelines(["Q1,claim,373,string,Universe\n",
@@ -17,13 +23,31 @@ def test_universe(self):
1723
"Q1,qualifier,31,wikibase-entityid,Q41719\n"])
1824
out.seek(0)
1925
result = list(CsvReader.read_csv(out))
20-
2126
self.assert_universe(result)
2227

23-
class CsvReaderTest2(TestCase):
28+
def test_multiple_entities(self):
29+
out = StringIO()
30+
out.writelines(["Q1,claim,373,string,Universe\n",
31+
"Q2,claim,143,wikibase-entityid,Q328\n"])
32+
out.seek(0)
33+
result = list(CsvReader.read_csv(out))
34+
35+
self.assertThat(result, HasLength(2))
36+
self.assertThat(result[0].title, Equals("Q1"))
37+
self.assertThat(result[1].title, Equals("Q2"))
38+
39+
def test_unknown_type(self):
40+
out = StringIO()
41+
out.writelines(["Q1,unknown,373,string,Universe\n"])
42+
out.seek(0)
43+
result = list(CsvReader.read_csv(out))
44+
2445
def test_invalid_row_throws_exception(self):
2546
f = StringIO()
2647
f.writelines(["a,b"])
2748
f.seek(0)
28-
2949
self.assertRaises(ValueError, lambda: list(CsvReader.read_csv(f)))
50+
51+
def test_tostring(self):
52+
e = Entity("Q1", [Claim(Snak(2,"string","a"))])
53+
str(e)

propertysuggester/test/parser/test_xml_reader.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
from propertysuggester.test.parser.test_abstract_reader import AbstractUniverseTest
99
from propertysuggester.parser import XmlReader
10-
from propertysuggester.utils.datamodel import Claim, Snak
10+
from propertysuggester.utils.datamodel import Claim, Snak, Entity
1111

1212

1313
class XmlReaderTest(AbstractUniverseTest):
@@ -26,6 +26,12 @@ def test_updated_dump(self):
2626
self.assertThat(q9351.claims, Contains(Claim(Snak(156, "wikibase-entityid", "Q1647331"))))
2727
self.assertThat(q9351.claims, Contains(Claim(Snak(1112, "quantity", "+25"))))
2828

29+
def test_special_cases(self):
30+
self.assertThat(XmlReader._process_json(("Q1", "{}")), Equals(Entity("Q1", [])))
31+
self.assertThat(XmlReader._process_json(("Q1", '{"claims":[{"m":["value","","bad"], "refs":[],"q":[]}]}')),
32+
Equals(Entity("Q1", [])))
33+
self.assertThat(XmlReader._process_json(("Q1", '{"claims":[{"m":["value","","unknown"], "refs":[],"q":[]}]}')),
34+
Equals(Entity("Q1", [])))
2935

3036
class MultiprocessingBigTest(TestCase):
3137
def test_simple_multiprocessing(self):

0 commit comments

Comments
 (0)