common_test.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import pytest
  2. from pydantic import ValidationError
  3. import cipy
  4. import cipy.common
  5. class Outputs(cipy.common.Outputs):
  6. a: int = cipy.required()
  7. def test_outputs_can_be_constructed_in_illegal_state() -> None:
  8. output = Outputs()
  9. def test_outputs_forbids_extras() -> None:
  10. output = cipy.common.Outputs()
  11. output.__dict__["A"] = 1
  12. with pytest.raises(ValidationError):
  13. output.validated()
  14. def test_outputs_validated_throws_on_unset_attr() -> None:
  15. output = Outputs()
  16. with pytest.raises(ValidationError):
  17. output.validated()
  18. def test_outputs_subclass_can_be_constructed() -> None:
  19. output = Outputs(a=1).validated()
  20. def test_ref_cannot_be_empty_ctor() -> None:
  21. with pytest.raises(TypeError):
  22. cipy.common.Ref() # type: ignore[call-arg]
  23. def test_ref_cannot_be_empty_str() -> None:
  24. with pytest.raises(ValueError):
  25. cipy.common.Ref("")
  26. def test_ref_cannot_be_single_token() -> None:
  27. with pytest.raises(ValueError):
  28. cipy.common.Ref("A")
  29. def test_ref_cannot_be_two_tokens() -> None:
  30. cipy.common.Ref("A.B")
  31. def test_ref_path_is_pattern_validated() -> None:
  32. with pytest.raises(ValueError):
  33. cipy.common.Ref("A._B")