def test_linear_paths_with_loop(self): id_to_comment = { "1": self._create_test_comment(id="1", parent_id="3"), "2": self._create_test_comment(id="2", parent_id="1"), "3": self._create_test_comment(id="3", parent_id="2"), } paths = list(create_data.linear_paths(id_to_comment, parent_depth=100)) self.assertEqual([], paths)
def test_long_thread(self): """Check there is no issue with long threads (e.g. recursion limits)""" id_to_comment = { i: self._create_test_comment(id=i, parent_id=i - 1) for i in range(2000) } paths = list(create_data.linear_paths(id_to_comment, parent_depth=10)) self.assertItemsEqual( [range(max(i - 11, 0), i) for i in range(2, 2001)], paths)
def test_linear_paths_with_stranded_threads(self): """Check that it picks up threads whose parents are missing.""" id_to_comment = { "1": self._create_test_comment(id="1", parent_id="unseen"), "2": self._create_test_comment(id="2", parent_id="1"), "3": self._create_test_comment(id="3", parent_id="unseen 2"), "4": self._create_test_comment(id="4", parent_id="3"), } paths = list(create_data.linear_paths(id_to_comment, parent_depth=100)) self.assertItemsEqual([ ["1", "2"], ["3", "4"], ], paths)
def test_linear_paths(self): with open("reddit/testdata/thread.json") as f: comments = json.loads(f.read()) comments = [ create_data.normalise_comment(comment, max_length=127) for comment in comments ] id_to_comment = {comment.id: comment for comment in comments} paths = list(create_data.linear_paths(id_to_comment, parent_depth=100)) self.assertItemsEqual( [["dvedzte", "dvfdfd4"], ["dvedzte", "dveh7r5"], ["dve3v95", "dvhjrkc"], ["dve3v95", "dvhjrkc", "dvhktmd"], ["dve3v95", "dvhjrkc", "dvhktmd", "dvhn7hh"], ["dve3v95", "dvhjrkc", "dvhktmd", "dvhn7hh", "dvhvg4m"]], paths)