gomoku / DI-engine /ding /utils /tests /test_design_helper.py
zjowowen's picture
init space
079c32c
raw
history blame contribute delete
872 Bytes
import random
import pytest
from ding.utils import SingletonMetaclass
@pytest.mark.unittest
def test_singleton():
global count
count = 0
class A(object, metaclass=SingletonMetaclass):
def __init__(self, t):
self.t = t
self.p = random.randint(0, 10)
global count
count += 1
obj = [A(i) for i in range(3)]
assert count == 1
assert all([o.t == 0 for o in obj])
assert all([o.p == obj[0].p for o in obj])
assert all([id(o) == id(obj[0]) for o in obj])
assert id(A.instance) == id(obj[0])
# subclass test
class B(A):
pass
obj = [B(i) for i in range(3, 6)]
assert count == 2
assert all([o.t == 3 for o in obj])
assert all([o.p == obj[0].p for o in obj])
assert all([id(o) == id(obj[0]) for o in obj])
assert id(B.instance) == id(obj[0])