public void GetInfobox_WikiTextIsNullOrWhiteSpace_ShouldReturnNull(string input) { // Arrange var parser = new InfoboxParser(mockedCommons); // Act var result = parser.GetInfobox(input); // Assert Assert.Null(result); }
public void ShouldReturnOneRecord_WhenInfoboxWithOneKeyValuePairPassed() { var infoboxParser = new InfoboxParser(); var infobox = "{name=testName}"; var result = infoboxParser.GetKeyValue(infobox).ToList(); Assert.AreEqual(result.Count(), 1); Assert.AreEqual(result[0].Key, "name"); Assert.AreEqual(result[0].Value, "testName"); }
public void ShouldNotReturnRecord_WhenInfoboxHasNoValue() { var infoboxParser = new InfoboxParser(); var infobox = "{name=|name2=testName2}"; var result = infoboxParser.GetKeyValue(infobox).ToList(); Assert.AreEqual(result.Count(), 1); Assert.AreEqual(result[0].Key, "name2"); Assert.AreEqual(result[0].Value, "testName2"); }
public void GetInfobox_WikiTextContainsInfoboxForBothWorlds_ShouldReturnMultipleResults() { // Arrange var input = "{{Infobox Buildings Old and New World"; var parser = new InfoboxParser(mockedCommons); // Act var result = parser.GetInfobox(input); // Assert Assert.Equal(2, result.Count); }
public void GetInfobox_WikiTextContainsInfobox_ShouldReturnSingleResult() { // Arrange var input = "{{Infobox Buildings"; var parser = new InfoboxParser(mockedCommons); // Act var result = parser.GetInfobox(input); // Assert Assert.Single(result); }
public void ShouldReturnRecordsWithBracersAsValue_WhenInfoboxContainsNestedSquareBracketsInValue() { var infoboxParser = new InfoboxParser(); var infobox = "{name=testName|name2=testName2[[nestedName=nestedTestName|nestedName2=nestedTestName2]]}"; var result = infoboxParser.GetKeyValue(infobox).ToList(); Assert.AreEqual(result.Count(), 2); Assert.AreEqual(result[0].Key, "name"); Assert.AreEqual(result[0].Value, "testName"); Assert.AreEqual(result[1].Key, "name2"); Assert.AreEqual(result[1].Value, "testName2[[nestedName=nestedTestName|nestedName2=nestedTestName2]]"); }
static void Main(string[] args) { if (args.Length != 0 && File.Exists(args[0])) { var infoboxParser = new InfoboxParser(); var parseType = args.Length > 1 ? args[1] : "json"; var infoboxes = new List<Infobox>(); using (StreamWriter writer = new StreamWriter("output.txt")) { foreach (var infobox in infoboxParser.GetInfoboxFromWikiDump(args[0])) { if (parseType == "json") { writer.WriteLine(JsonConvert.SerializeObject(infobox, Formatting.Indented)); } else if (parseType == "triplestore") { writer.WriteLine(infobox.ArticleName + "\tINFOBOX_NAME\t" + infobox.Name); foreach (var record in infobox.Records) { writer.WriteLine(infobox.ArticleName + "\t" + record.Property + "\t" + record.Value); } } else if (parseType == "mappings") { var properties = new List<string>(); var infoboxName = infobox.Name; var existedInfobox = infoboxes.FirstOrDefault(i => i.Name == infoboxName); var existed = existedInfobox != null; if (existedInfobox == null) { existedInfobox = new Infobox(); existedInfobox.Name = infoboxName; existedInfobox.Records = new List<InfoboxRecord>(); } foreach (var record in infobox.Records) { var existedProp = existedInfobox.Records.FirstOrDefault(p => p.Property == record.Property); existedProp = new InfoboxRecord(); existedProp.Property = record.Property; existedInfobox.Records.Add(existedProp); } if (!existed) { infoboxes.Add(existedInfobox); } } } if (parseType == "mappings") { foreach (var infobox in infoboxes) { var properties = infobox.Records.Select(s => s.Property); properties = properties.Distinct().ToList(); writer.WriteLine("{{ TemplateMapping | mapToClass = " + infobox.Name + " | mappings = "); foreach (var property in properties) { writer.WriteLine("{{ PropertyMapping | templateProperty = " + property + " | ontologyProperty = }}"); } writer.WriteLine("}}"); } } } } }
public void ShouldReturnTwoRecords_WhenInfoboxWithTwoKeyValuePairsPassed() { var infoboxParser = new InfoboxParser(); var infobox = "{name=testName|name2=testName2}"; var result = infoboxParser.GetKeyValue(infobox).ToList(); Assert.AreEqual(result.Count(), 2); Assert.AreEqual(result[0].Key, "name"); Assert.AreEqual(result[0].Value, "testName"); Assert.AreEqual(result[1].Key, "name2"); Assert.AreEqual(result[1].Value, "testName2"); }