Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
t2wml-api / test_kgtk_results.py
Size: Mime:
import os
from io import StringIO
import csv
import unittest
from pathlib import Path
from t2wml.wikification.utility_functions import add_properties_from_file
from t2wml.api import KnowledgeGraph

repo_folder = Path(__file__).parents[2]
unit_test_folder = os.path.join(
    repo_folder, "t2wml-api", "unit_tests", "ground_truth")


class TestBelgiumRegex(unittest.TestCase):
    maxDiff = None

    def setUp(self):
        self.data_file = os.path.join(
            unit_test_folder, "belgium-regex", "Belgium.csv")
        self.wikifier_file = os.path.join(
            unit_test_folder, "belgium-regex", "wikifier.csv")
        self.yaml_file = os.path.join(
            unit_test_folder, "belgium-regex", "Belgium.yaml")
        self.expected_result_dir = os.path.join(
            unit_test_folder, "belgium-regex")

    def test_regex(self):
        yaml_file = self.yaml_file
        sheet_name = "Belgium.csv"
        kg = KnowledgeGraph.generate_from_files(
            self.data_file, sheet_name, yaml_file, self.wikifier_file)
        result = kg.get_output("kgtk")
        expected_result_name = "results.tsv"
        # with open(os.path.join(self.expected_result_dir, expected_result_name), 'w') as f:
        #    f.write(result)
        csv_args_dict = dict(delimiter="\t", lineterminator="\n",
                             escapechar='', quotechar='',
                             dialect=csv.unix_dialect, quoting=csv.QUOTE_NONE)
        with open(os.path.join(self.expected_result_dir, expected_result_name), 'r') as f:
            expected_reader = csv.reader(f, **csv_args_dict)
            fake_result_file = StringIO(result)
            result_reader = csv.reader(fake_result_file, **csv_args_dict)
            for e_line, r_line in zip(expected_reader, result_reader):
                self.assertEqual(e_line, r_line)


class TestOECDWithCustomProperties(unittest.TestCase):
    maxDiff = None

    def setUp(self):
        self.data_file = os.path.join(
            unit_test_folder, "custom_properties", "oecd.csv")
        self.wikifier_file = os.path.join(
            unit_test_folder, "custom_properties", "properties_wikifier.csv")
        self.yaml_file = os.path.join(
            unit_test_folder, "custom_properties", "oecd.yaml")
        self.custom_properties_file = os.path.join(
            unit_test_folder, "custom_properties", "kgtk_properties.tsv")
        self.expected_result_dir = os.path.join(
            unit_test_folder, "custom_properties")

    def test_custom_properties(self):
        yaml_file = self.yaml_file
        sheet_name = "oecd.csv"
        add_props = add_properties_from_file(self.custom_properties_file)
        assert len(add_props["failed"]) == 0
        kg = KnowledgeGraph.generate_from_files(
            self.data_file, sheet_name, yaml_file, self.wikifier_file)
        result = kg.get_output("kgtk")
        expected_result_name = "results.tsv"
        csv_args_dict = dict(delimiter="\t", lineterminator="\n",
                             escapechar='', quotechar='',
                             dialect=csv.unix_dialect, quoting=csv.QUOTE_NONE)
        with open(os.path.join(self.expected_result_dir, expected_result_name), 'r') as f:
            expected_reader = csv.reader(f, **csv_args_dict)
            fake_result_file = StringIO(result)
            result_reader = csv.reader(fake_result_file, **csv_args_dict)
            for e_line, r_line in zip(expected_reader, result_reader):
                self.assertEqual(e_line, r_line)


if __name__ == '__main__':
    unittest.main()