コード例 #1
0
def test_sa_lcp_naive():
    for n in range(1, 6):
        m = 1
        for i in range(n):
            m *= 4
        for f in range(m):
            s = [0] * n
            g = f
            max_c = 0
            for i in range(n):
                s[i] = g % 4
                max_c = max(max_c, s[i])
                g //= 4
            sa = sa_naive_test(s)
            assert sa == suffix_array(s)
            assert sa == suffix_array(s, max_c)
            assert lcp_naive(s, sa) == lcp_array(s, sa)
    for n in range(1, 11):
        m = 1
        for i in range(n):
            m *= 2
        for f in range(m):
            s = [0] * n
            g = f
            max_c = 0
            for i in range(n):
                s[i] = g % 2
                max_c = max(max_c, s[i])
                g //= 2
            sa = sa_naive(s)
            assert sa == suffix_array(s)
            assert sa == suffix_array(s, max_c)
            assert lcp_naive(s, sa) == lcp_array(s, sa)
コード例 #2
0
def test_sa_allAB_test():
    for n in range(1, 101):
        s = [0] * n
        for i in range(n):
            s[i] = i % 2
        assert sa_naive_test(s) == suffix_array(s)
        assert sa_naive_test(s) == suffix_array(s, 3)
    for n in range(1, 101):
        s = [0] * n
        for i in range(n):
            s[i] = 1 - i % 2
        assert sa_naive_test(s) == suffix_array(s)
        assert sa_naive_test(s) == suffix_array(s, 3)
コード例 #3
0
def test_sa():
    s = 'missisippi'

    sa = suffix_array(s)

    answer = [
        'i', 'ippi', 'isippi', 'issisippi', 'missisippi', 'pi', 'ppi', 'sippi',
        'sisippi', 'ssisippi'
    ]

    assert len(answer) == len(sa)

    for i in range(len(sa)):
        assert answer[i] == s[sa[i]:]
コード例 #4
0
def test_lcp():
    s = 'aab'
    sa = suffix_array(s)
    assert [0, 1, 2] == sa
    lcp = lcp_array(s, sa)
    assert [1, 0] == lcp

    assert lcp == lcp_array([0, 0, 1], sa)
    assert lcp == lcp_array([-100, -100, 100], sa)
    assert lcp == lcp_array(
        [NUMERIC_MIN_INT, NUMERIC_MIN_INT, NUMERIC_MAX_INT], sa)
    assert lcp == lcp_array([NUMERIC_MIN_LL, NUMERIC_MIN_LL, NUMERIC_MAX_LL],
                            sa)
    assert lcp == lcp_array(
        [NUMERIC_MIN_UINT, NUMERIC_MIN_UINT, NUMERIC_MAX_UINT], sa)
    assert lcp == lcp_array(
        [NUMERIC_MIN_ULL, NUMERIC_MIN_ULL, NUMERIC_MAX_ULL], sa)
コード例 #5
0
def test_empty():
    assert [] == suffix_array('')
    assert [] == suffix_array([])
    assert [] == z_algorithm('')
    assert [] == z_algorithm([])
コード例 #6
0
def test_sa_single():
    assert [0] == suffix_array([0])
    assert [0] == suffix_array([-1])
    assert [0] == suffix_array([1])
    assert [0] == suffix_array([NUMERIC_MIN_INT])
    assert [0] == suffix_array([NUMERIC_MAX_INT])