This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import pytest
|
||||
import sys
|
||||
import os
|
||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
||||
from slic.utils.metaclasses import *
|
||||
|
||||
# Base classes
|
||||
class A:
|
||||
def method_a(self):
|
||||
return "A"
|
||||
|
||||
class B:
|
||||
def method_b(self):
|
||||
return "B"
|
||||
|
||||
# Combine A and B into a single metaclass
|
||||
CombinedMeta = combine_classes(A, B)
|
||||
|
||||
# Use it as metaclass for a new class
|
||||
class MyCombinedClass(metaclass=CombinedMeta):
|
||||
pass
|
||||
|
||||
def test_combine_classes_as_metaclass():
|
||||
|
||||
obj = MyCombinedClass()
|
||||
|
||||
# Verify that methods from both base classes are available
|
||||
assert isinstance(obj, MyCombinedClass)
|
||||
assert isinstance(obj, A) # via metaclass
|
||||
assert isinstance(obj, B) # via metaclass
|
||||
assert obj.method_a() == "A"
|
||||
assert obj.method_b() == "B"
|
||||
Reference in New Issue
Block a user