diff --git a/pure_protobuf/serializers.py b/pure_protobuf/serializers.py
index bd643d3..2a467f3 100644
--- a/pure_protobuf/serializers.py
+++ b/pure_protobuf/serializers.py
@@ -139,7 +139,7 @@ class UnsignedInt32Serializer(Serializer):
     def validate(self, value: Any):
         unsigned_varint_serializer.validate(value)
         if not 0 <= value <= 0xFFFFFFFF:
-            raise OverflowError(f'value is out of 32-bit unsigned integer range')
+            raise ValueError(f'value is out of 32-bit unsigned integer range')
 
     def dump(self, value: Any, io: IO):
         unsigned_varint_serializer.dump(value, io)
@@ -158,7 +158,7 @@ class UnsignedInt64Serializer(Serializer):
     def validate(self, value: Any):
         unsigned_varint_serializer.validate(value)
         if not 0 <= value <= 0xFFFFFFFF_FFFFFFFF:
-            raise OverflowError(f'value is out of 64-bit unsigned integer range')
+            raise ValueError(f'value is out of 64-bit unsigned integer range')
 
     def dump(self, value: Any, io: IO):
         unsigned_varint_serializer.dump(value, io)
@@ -177,7 +177,7 @@ class SignedInt32Serializer(Serializer):
     def validate(self, value: Any):
         signed_varint_serializer.validate(value)
         if not -0x7FFFFFFF <= value <= 0x7FFFFFFF:
-            raise OverflowError(f'value is out of 32-bit signed integer range')
+            raise ValueError(f'value is out of 32-bit signed integer range')
 
     def dump(self, value: Any, io: IO):
         signed_varint_serializer.dump(value, io)
@@ -196,7 +196,7 @@ class SignedInt64Serializer(Serializer):
     def validate(self, value: Any):
         signed_varint_serializer.validate(value)
         if not -0x7FFFFFFF_FFFFFFFF <= value <= 0x7FFFFFFF_FFFFFFFF:
-            raise OverflowError(f'value is out of 64-bit signed integer range')
+            raise ValueError(f'value is out of 64-bit signed integer range')
 
     def dump(self, value: Any, io: IO):
         signed_varint_serializer.dump(value, io)

Improve serializers.py test coverage
diff --git a/tests/test_serializers.py b/tests/test_serializers.py
index 1cd26df..3e7dec3 100644
--- a/tests/test_serializers.py
+++ b/tests/test_serializers.py
@@ -14,10 +14,21 @@ from pure_protobuf.enums import WireType
 from pure_protobuf.serializers import (
     BooleanSerializer,
     BytesSerializer,
+    DoubleSerializer,
+    FloatSerializer,
     IntEnumSerializer,
     PackingSerializer,
+    Serializer,
+    SignedFixed32Serializer,
+    SignedFixed64Serializer,
+    SignedInt32Serializer,
+    SignedInt64Serializer,
     SignedVarintSerializer,
     StringSerializer,
+    UnsignedFixed32Serializer,
+    UnsignedFixed64Serializer,
+    UnsignedInt32Serializer,
+    UnsignedInt64Serializer,
     UnsignedVarintSerializer,
 )
 from pure_protobuf.types import int32, uint
@@ -50,6 +61,27 @@ def class_3(class_1: Type) -> Type:
     return Test3
 
 
+@mark.parametrize('serializer_class, value', [
+    (SignedVarintSerializer, 'hello'),
+    (BytesSerializer, 42),
+    (StringSerializer, 42),
+    (UnsignedInt32Serializer, 0x1_00000000),
+    (UnsignedInt64Serializer, -1),
+    (SignedInt32Serializer, 0x80000000),
+    (SignedInt64Serializer, 0x80000000_00000000),
+    (BooleanSerializer, 42),
+    (SignedFixed32Serializer, 'hello'),
+    (UnsignedFixed32Serializer, 'hello'),
+    (SignedFixed64Serializer, 'hello'),
+    (UnsignedFixed64Serializer, 'hello'),
+    (FloatSerializer, 'hello'),
+    (DoubleSerializer, 'hello'),
+])
+def test_serializer_value_error(serializer_class: Type[Serializer], value: Any):
+    with raises(ValueError):
+        serializer_class().validate(value)
+
+
 @mark.parametrize('value, bytes_', [
     (0, b'\x00'),
     (3, b'\x03'),
@@ -212,6 +244,3 @@ def test_enum():
 
     assert value.dumps() == bytes_
     assert Test.loads(bytes_) == value
-
-
-# TODO: test individual skip functions.

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest
apt-get update apt-get install -y gcc
3.7
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
certifi @ file:///croot/certifi_1671487769961/work/certifi
charset-normalizer==3.4.1
coverage==6.5.0
coveralls==3.3.1
docopt==0.6.2
exceptiongroup==1.2.2
flake8==5.0.4
idna==3.10
importlib-metadata==4.2.0
iniconfig==2.0.0
isort==5.11.5
mccabe==0.7.0
packaging==24.0
pluggy==1.2.0
-e git+https://github.com/eigenein/protobuf.git@3fc159a57eccb2fb380369004bc5cdf09687014d#egg=pure_protobuf
pycodestyle==2.9.1
pyflakes==2.5.0
pytest==7.4.4
pytest-cov==4.1.0
requests==2.31.0
tomli==2.0.1
typing_extensions==4.7.1
urllib3==2.0.7
zipp==3.15.0

name: protobuf
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - charset-normalizer==3.4.1
      - coverage==6.5.0
      - coveralls==3.3.1
      - docopt==0.6.2
      - exceptiongroup==1.2.2
      - flake8==5.0.4
      - idna==3.10
      - importlib-metadata==4.2.0
      - iniconfig==2.0.0
      - isort==5.11.5
      - mccabe==0.7.0
      - packaging==24.0
      - pluggy==1.2.0
      - pycodestyle==2.9.1
      - pyflakes==2.5.0
      - pytest==7.4.4
      - pytest-cov==4.1.0
      - requests==2.31.0
      - tomli==2.0.1
      - typing-extensions==4.7.1
      - urllib3==2.0.7
      - zipp==3.15.0
prefix: /opt/conda/envs/protobuf

tests/test_serializers.py::test_serializer_value_error[UnsignedInt32Serializer-4294967296] tests/test_serializers.py::test_serializer_value_error[UnsignedInt64Serializer--1] tests/test_serializers.py::test_serializer_value_error[SignedInt32Serializer-2147483648] tests/test_serializers.py::test_serializer_value_error[SignedInt64Serializer-9223372036854775808]
tests/test_serializers.py::test_serializer_value_error[SignedVarintSerializer-hello] tests/test_serializers.py::test_serializer_value_error[BytesSerializer-42] tests/test_serializers.py::test_serializer_value_error[StringSerializer-42] tests/test_serializers.py::test_serializer_value_error[BooleanSerializer-42] tests/test_serializers.py::test_serializer_value_error[SignedFixed32Serializer-hello] tests/test_serializers.py::test_serializer_value_error[UnsignedFixed32Serializer-hello] tests/test_serializers.py::test_serializer_value_error[SignedFixed64Serializer-hello] tests/test_serializers.py::test_serializer_value_error[UnsignedFixed64Serializer-hello] tests/test_serializers.py::test_serializer_value_error[FloatSerializer-hello] tests/test_serializers.py::test_serializer_value_error[DoubleSerializer-hello] tests/test_serializers.py::test_unsigned_varint_serializer[0-\x00] tests/test_serializers.py::test_unsigned_varint_serializer[3-\x03] tests/test_serializers.py::test_unsigned_varint_serializer[270-\x8e\x02] tests/test_serializers.py::test_unsigned_varint_serializer[86942-\x9e\xa7\x05] tests/test_serializers.py::test_signed_varint_serializer[0-\x00] tests/test_serializers.py::test_signed_varint_serializer[-1-\x01] tests/test_serializers.py::test_signed_varint_serializer[1-\x02] tests/test_serializers.py::test_signed_varint_serializer[-2-\x03] tests/test_serializers.py::test_bytes_serializer[testing-\x07testing] tests/test_serializers.py::test_string_serializer[\u041f\u0440\u0438\u0432\u0435\u0442-\x0c\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82] tests/test_serializers.py::test_boolean_serializer[True-\x01] tests/test_serializers.py::test_boolean_serializer[False-\x00] tests/test_serializers.py::test_int_enum_serializer[WireType.VARINT-\x00] tests/test_serializers.py::test_int_enum_serializer[WireType.LONG_LONG-\x01] tests/test_serializers.py::test_int_enum_serializer[WireType.BYTES-\x02] tests/test_serializers.py::test_int_enum_serializer[WireType.LONG-\x05] tests/test_serializers.py::test_packing_serializer[2-\x01\x02] tests/test_serializers.py::test_packing_serializer[270-\x02\x8e\x02] tests/test_serializers.py::test_class_1 tests/test_serializers.py::test_class_1_unknown_field tests/test_serializers.py::test_class_2 tests/test_serializers.py::test_class_3 tests/test_serializers.py::test_merge_repeated_embedded_message tests/test_serializers.py::test_unpacked_as_packed tests/test_serializers.py::test_enum
pure_protobuf/serializers.py
pure_protobuf/serializers.py