Skip to content

Commit

Permalink
Add tests explicitly for ABC usage
Browse files Browse the repository at this point in the history
  • Loading branch information
BrianPugh committed May 21, 2022
1 parent 9827a56 commit 673f214
Showing 1 changed file with 84 additions and 0 deletions.
84 changes: 84 additions & 0 deletions tests/test_abc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
from abc import ABC, abstractmethod

import pytest

from autoregistry import Registry


def test_abc_undefined_abstractmethod():
class Pokemon(Registry):
@abstractmethod
def attack(self):
pass

class Charmander(Pokemon):
def attack(self):
return 1

class Pikachu(Pokemon):
pass

with pytest.raises(TypeError):
Pokemon()

with pytest.raises(TypeError):
Pokemon["pikachu"]()

with pytest.raises(TypeError):
Pikachu()

Charmander()


def test_abc_multiple_inheritence_first():
"""The programmer doesn't know inheritting from ABC is superfluous."""

class Pokemon(ABC, Registry):
@abstractmethod
def attack(self):
pass

class Charmander(Pokemon):
def attack(self):
return 1

class Pikachu(Pokemon):
pass

with pytest.raises(TypeError):
Pokemon()

with pytest.raises(TypeError):
Pokemon["pikachu"]()

with pytest.raises(TypeError):
Pikachu()

Charmander()


def test_abc_multiple_inheritence_last():
"""The programmer doesn't know inheritting from ABC is superfluous."""

class Pokemon(Registry, ABC):
@abstractmethod
def attack(self):
pass

class Charmander(Pokemon):
def attack(self):
return 1

class Pikachu(Pokemon):
pass

with pytest.raises(TypeError):
Pokemon()

with pytest.raises(TypeError):
Pokemon["pikachu"]()

with pytest.raises(TypeError):
Pikachu()

Charmander()

0 comments on commit 673f214

Please sign in to comment.