File size: 2,207 Bytes
b31f748
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from iscc_sct.demo import (
    compute_iscc_code,
    compare_codes,
    hamming_to_cosine,
    generate_similarity_bar,
)


def test_compute_iscc_code():
    text1 = "Hello, world!"
    text2 = "Hallo, Welt!"
    bit_length = 64

    result = compute_iscc_code(text1, text2, bit_length)
    assert len(result) == 3
    assert all(isinstance(code, str) for code in result[:2])
    assert isinstance(result[2], str)


def test_compare_codes():
    code_a = "ISCC:EAAQCVG2TABD6"
    code_b = "ISCC:EAAQCVG2TABD6"
    bits = 64

    result = compare_codes(code_a, code_b, bits)
    assert isinstance(result, str)
    assert "100.00%" in result

    result = compare_codes(None, code_b, bits)
    assert result is None


def test_hamming_to_cosine():
    assert hamming_to_cosine(0, 64) == 1.0
    assert hamming_to_cosine(32, 64) == 0.0
    assert hamming_to_cosine(64, 64) == -1.0


def test_generate_similarity_bar():
    result = generate_similarity_bar(1.0)
    assert "100.00%" in result
    assert "green" in result

    result = generate_similarity_bar(-0.5)
    assert "-50.00%" in result
    assert "red" in result


from unittest.mock import patch, MagicMock
import gradio as gr
from iscc_sct.demo import process_text


@patch("iscc_sct.demo.sct.gen_text_code_semantic")
def test_process_text(mock_gen_text_code):
    mock_gen_text_code.return_value = {"iscc": "ISCC:EAAQCVG2TABD6"}

    # Test with valid input
    result = process_text("Hello, world!", 64, "a")
    assert isinstance(result, dict)
    assert len(result) == 1
    key, value = next(iter(result.items()))
    assert isinstance(key, gr.components.Textbox)
    assert isinstance(value, gr.components.Textbox)
    assert value.value == "ISCC:EAAQCVG2TABD6"

    # Test with empty input
    result = process_text("", 64, "b")
    assert result is None

    # Test with different bit length
    process_text("Test", 128, "a")
    mock_gen_text_code.assert_called_with("Test", bits=128)

    # Test with different suffix
    result = process_text("Test", 64, "b")
    assert len(result) == 1
    key, value = next(iter(result.items()))
    assert isinstance(key, gr.components.Textbox)
    assert isinstance(value, gr.components.Textbox)