Passed
Push — main ( 87238c...9f1476 )
by Douglas
02:33
created

tests.pocketutils.tools.test_sort_utils   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 58
dl 0
loc 69
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A TestSortUtils.test_guess_natsort_alg_float() 0 10 1
A TestSortUtils.test_exact_natsort_alg_numeric() 0 19 1
A TestSortUtils.test_exact_natsort_alg_str() 0 4 1
A TestSortUtils.test_guess_natsort_alg_str() 0 4 1
A TestSortUtils.test_guess_natsort_alg_int() 0 13 1
1
# SPDX-FileCopyrightText: Copyright 2020-2023, Contributors to typed-dfs
2
# SPDX-PackageHomePage: https://github.com/dmyersturnbull/typed-dfs
3
# SPDX-License-Identifier: Apache-2.0
4
import numpy as np
5
import pytest
6
from natsort import ns
7
from typeddfs.utils.sort_utils import SortUtils
8
9
10
class TestSortUtils:
11
    def test_exact_natsort_alg_numeric(self):
12
        names, z = SortUtils.exact_natsort_alg({"FLOAT", "SIGNED"})
13
        assert names == {"FLOAT", "SIGNED"}
14
        assert z == ns.REAL
15
        names, z = SortUtils.exact_natsort_alg(ns.REAL)
16
        assert names == {"FLOAT", "SIGNED"}
17
        assert z == ns.REAL
18
        names, z = SortUtils.exact_natsort_alg({"REAL"})
19
        assert names == {"FLOAT", "SIGNED"}
20
        assert z == ns.REAL
21
        names, z = SortUtils.exact_natsort_alg("REAL")
22
        assert names == {"FLOAT", "SIGNED"}
23
        assert z == ns.REAL
24
        names, z = SortUtils.exact_natsort_alg({"INT"})
25
        assert names == set()
26
        assert z == 0
27
        names, z = SortUtils.exact_natsort_alg(0)
28
        assert names == set()
29
        assert z == 0
30
31
    def test_exact_natsort_alg_str(self):
32
        names, z = SortUtils.exact_natsort_alg("ignorecase")
33
        assert names == {"IGNORECASE"}
34
        assert z == ns.IGNORECASE
35
36
    def test_guess_natsort_alg_str(self):
37
        names, z = SortUtils.guess_natsort_alg(str)
38
        assert names == {"COMPATIBILITYNORMALIZE", "GROUPLETTERS"}
39
        assert z == ns.COMPATIBILITYNORMALIZE | ns.GROUPLETTERS
40
41
    def test_guess_natsort_alg_int(self):
42
        names, z = SortUtils.guess_natsort_alg(int)
43
        assert names == {"INT", "SIGNED"}
44
        assert z == ns.INT | ns.SIGNED
45
        names, z = SortUtils.guess_natsort_alg(np.int32)
46
        assert names == {"INT", "SIGNED"}
47
        assert z == ns.INT | ns.SIGNED
48
        names, z = SortUtils.guess_natsort_alg(bool)
49
        assert names == {"INT", "SIGNED"}
50
        assert z == ns.INT | ns.SIGNED
51
        names, z = SortUtils.guess_natsort_alg(np.bool_)
52
        assert names == {"INT", "SIGNED"}
53
        assert z == ns.INT | ns.SIGNED
54
55
    def test_guess_natsort_alg_float(self):
56
        names, z = SortUtils.guess_natsort_alg(float)
57
        assert names == {"FLOAT", "SIGNED"}
58
        assert z == ns.FLOAT | ns.SIGNED
59
        names, z = SortUtils.guess_natsort_alg(np.float16)
60
        assert names == {"FLOAT", "SIGNED"}
61
        assert z == ns.FLOAT | ns.SIGNED
62
        names, z = SortUtils.guess_natsort_alg(np.float32)
63
        assert names == {"FLOAT", "SIGNED"}
64
        assert z == ns.FLOAT | ns.SIGNED
65
66
67
if __name__ == "__main__":
68
    pytest.main()
69