File: test_resolvers.py

package info (click to toggle)
trimesh 4.5.1-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 33,416 kB
  • sloc: python: 35,596; makefile: 96; javascript: 85; sh: 38
file content (79 lines) | stat: -rw-r--r-- 2,567 bytes parent folder | download
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
try:
    from . import generic as g
except BaseException:
    import generic as g


class ResolverTest(g.unittest.TestCase):
    def test_filepath_namespace(self):
        # check the namespaced method
        models = g.dir_models
        subdir = "2D"

        # create a resolver for the models directory
        resolver = g.trimesh.resolvers.FilePathResolver(models)

        # should be able to get an asset
        assert len(resolver.get("rabbit.obj")) > 0

        # check a few file path keys
        check = {"ballA.off", "featuretype.STL"}
        assert set(resolver.keys()).issuperset(check)

        # try a namespaced resolver
        ns = resolver.namespaced(subdir)
        assert not set(ns.keys()).issuperset(check)
        assert set(ns.keys()).issuperset(["tray-easy1.dxf", "single_arc.dxf"])

    def test_web_namespace(self):
        base = "https://example.com"
        name = "stuff"
        target = "hi.gltf"

        # check with a trailing slash
        a = g.trimesh.resolvers.WebResolver(base + "/")
        b = g.trimesh.resolvers.WebResolver(base + "//")
        c = g.trimesh.resolvers.WebResolver(base)
        d = a.namespaced(name)

        # base URL's should always be the same with one trailing slash
        assert a.base_url == b.base_url
        assert b.base_url == c.base_url
        assert c.base_url == base + "/"
        # check namespaced
        assert d.base_url == base + "/" + name + "/"

        # should have correct slashes
        truth = "/".join([base, name, target])

        assert a.base_url + name + "/" + target == truth
        assert d.base_url + target == truth

    def test_items(self):
        # check __getitem__ and __setitem__
        archive = {}
        resolver = g.trimesh.resolvers.ZipResolver(archive)
        assert len(set(resolver.keys())) == 0
        resolver["hi"] = b"what"
        # should have one item
        assert set(resolver.keys()) == {"hi"}
        # should have the right value
        assert resolver["hi"] == b"what"
        # original archive should have been modified
        assert set(archive.keys()) == {"hi"}

        # add a subdirectory key
        resolver["stuff/nah"] = b"sup"
        assert set(archive.keys()) == {"hi", "stuff/nah"}
        assert set(resolver.keys()) == {"hi", "stuff/nah"}

        # try namespacing
        ns = resolver.namespaced("stuff")
        assert ns["nah"] == b"sup"
        g.log.debug(ns.keys())
        assert set(ns.keys()) == {"nah"}


if __name__ == "__main__":
    g.trimesh.util.attach_to_log()
    g.unittest.main()