forked from sympy/sympy
/
test_baseclasses.py
76 lines (56 loc) · 1.51 KB
/
test_baseclasses.py
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
from sympy.categories import Object, Morphism
def test_object():
A = Object("A")
assert A.name == "A"
assert A == Object("A")
assert A != Object("A1")
assert Object("") != A
assert Object("") != Object("")
assert hash(A) == hash(Object("A"))
def test_morphism():
A = Object("A")
B = Object("B")
C = Object("C")
D = Object("D")
f = Morphism(A, B, "f")
g = Morphism(B, C, "g")
h = Morphism(C, D, "h")
assert f.name == "f"
assert f.domain == A
assert f.codomain == B
assert f.components == [f]
assert f * g == None
assert f * f == None
k = g.compose(f, "k")
assert k.domain == A
assert k.codomain == C
assert k.name == "k"
assert k.components == [f, g]
k = g * f
p = h * g
u = h * g * f
assert k.domain == A
assert k.codomain == C
assert k.name == ""
assert k.components == [f, g]
assert h * k == u
assert p * f == u
assert u.domain == A
assert u.codomain == D
assert u.name == ""
assert u.components == [f, g, h]
u1 = u.flatten()
assert u1.domain == A
assert u1.codomain == D
assert u1.name == ""
assert u1.components == [u1]
u1 = u.flatten("u")
assert u1.domain == A
assert u1.codomain == D
assert u1.name == "u"
assert u1.components == [u1]
assert f == Morphism(A, B, "f")
assert f != g
assert f != Morphism(A, B, "")
assert Morphism(A, B, "") != Morphism(A, B, "")
assert hash(f) == hash(Morphism(A, B, "f"))