File size: 1,615 Bytes
4a95d4d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import pytest

from signature_verification.generate_test_data import generate_test_data


@pytest.fixture
def create_temp_data(tmpdir):
    orig_groups = [
        [f"{tmpdir}/orig_{i}_{j}.png" for j in range(1, 25)] for i in range(1, 23)
    ]

    forg_groups = [
        [f"{tmpdir}/forg_{i}_{j}.png" for j in range(1, 25)] for i in range(1, 23)
    ]

    for group in orig_groups + forg_groups:
        for img in group:
            with open(img, "w") as f:
                f.write("data")

    return orig_groups, forg_groups


def test_generate_test_data(create_temp_data):
    orig_groups, forg_groups = create_temp_data
    actual_all_pairs, actual_all_labels = generate_test_data(orig_groups, forg_groups)

    # There are 22 people in test set, 24 choose 2 = 276 Genuine-Genuine image pairs for one person.
    # 24 * 12  = 288 Genuine-Forged image pairs for one person.
    num_orig_pairs = 276 * 22
    num_forg_pairs = 288 * 22

    assert len(actual_all_pairs) == num_orig_pairs + num_forg_pairs
    assert len(actual_all_labels) == num_orig_pairs + num_forg_pairs

    for pair, label in zip(actual_all_labels, actual_all_pairs):
        if label == 1:
            # if both signatures from the same person
            assert any(pair[0] in group and pair[1] in group for group in orig_groups)
        elif label == 0:
            # if 1 is original and the other is forgery
            assert any(
                pair[0] in orig_group and pair[1] in forg_group
                for orig_group, forg_group in zip(orig_groups, forg_groups)
            )