def test_output_list_sum_to_one(): v = random.randint(2, 10) verts = [rand_str() for _ in range(v)] graph = MagicMock(vertices=[Vertex(v) for v in verts]) ws = np.random.rand(v) scores = [x[1] for x in text_rank_output_list(graph, ws)] assert math.isclose(sum(scores), 1)
def test_vertex_equal_match_same_object(): label = rand_str() edges_in = { random.randint(0, 100): random.random() for _ in range(random.randint(0, 10)) } edges_out = { random.randint(0, 100): random.random() for _ in range(random.randint(0, 10)) } v1 = Vertex(label) v1._edges_out = edges_out v1._edges_in = edges_in v2 = v1 assert v1 == v2
def test_add_vertex_list(): verts = [rand_str() for _ in range(random.randint(1, 10))] graph = AdjacencyList(verts) gold_position = len(verts) graph._add_vertex = MagicMock(return_value=gold_position) gold_label = rand_str() idx = graph.add_vertex(gold_label) graph._add_vertex.assert_called_once_with(gold_label) assert idx == gold_position assert graph.vertices[gold_position] == Vertex(gold_label)
def test_output_list(): v = random.randint(2, 10) verts = [rand_str() for _ in range(v)] graph = MagicMock(vertices=[Vertex(v) for v in verts]) ws = np.random.rand(v) gold_labels = [verts[i] for i in np.argsort(ws)[::-1]] gold_score = np.sort(ws)[::-1] gold_score = gold_score / np.sum(gold_score) res = text_rank_output_list(graph, ws) for gl, gs, (l, s) in zip(gold_labels, gold_score, res): assert l == gl assert math.isclose(s, gs)
def test_vertex_equal_mismatch_values(): label = label2 = rand_str() while label2 == label: label2 = rand_str() edges_in = { random.randint(0, 100): random.random() for _ in range(random.randint(0, 10)) } edges_out = { random.randint(0, 100): random.random() for _ in range(random.randint(0, 10)) } v1 = Vertex(label) v1._edges_out = edges_out v1._edges_in = edges_in v2 = Vertex(label2) v2._edges_out = edges_out v2._edges_in = edges_in assert v1 != v2
def test_edge_count_list(): graph = AdjacencyList({}) gold = random.randint(10, 100) verts = random.randint(15, 30) vertices = [Vertex(str(i)) for i in range(verts)] for _ in range(gold): added = False while not added: src, tgt = np.random.randint(0, verts, size=(2, )) if src == tgt: continue src_vert = vertices[src] tgt_vert = vertices[tgt] if src not in tgt_vert.edges_in and tgt not in src_vert.edges_out: src_vert.edges_out[tgt] = 1 tgt_vert.edges_in[src] = 1 added = True graph._vertices = vertices assert graph.edge_count == gold
def test_vertex_equal_mismatch_edges_out(): label = rand_str() edges_in = { random.randint(0, 100): random.random() for _ in range(random.randint(0, 10)) } edges_out = edges_out2 = { random.randint(0, 100): random.random() for _ in range(random.randint(0, 10)) } while edges_out2 == edges_out: edges_out2 = { random.randint(0, 100): random.random() for _ in range(random.randint(0, 100)) } v1 = Vertex(label) v1._edges_out = edges_out v1._edges_in = edges_in v2 = Vertex(label) v2._edges_out = edges_out2 v2._edges_in = edges_in assert v1 != v2
def test_vertex_degree_out(): v = Vertex(None) gold = random.randint(0, 100) for i in range(gold): v._edges_out[i] = None assert v.degree_out == gold