teleprocessinggh / tests /test_validator.py
winsweb's picture
Deploy FastAPI Telecom Anomaly Detection to Hugging Face
c9875bd
Raw History Blame Contribute Delete
2.22 kB
"""
Tests for data validator
"""
import unittest
from datetime import datetime
from telecom_anomaly.validation.validator import DataValidator
class TestDataValidator(unittest.TestCase):
def setUp(self):
self.validator = DataValidator()
def test_validate_msisdn_valid(self):
self.assertTrue(self.validator.validate_msisdn('233123456789'))
self.assertTrue(self.validator.validate_msisdn('MTN'))
def test_validate_msisdn_invalid(self):
self.assertFalse(self.validator.validate_msisdn(''))
self.assertFalse(self.validator.validate_msisdn('12345'))
self.assertFalse(self.validator.validate_msisdn('23312345')) # Too short
def test_validate_duration(self):
self.assertEqual(self.validator.validate_duration('120'), 120.0)
self.assertEqual(self.validator.validate_duration('-10'), 0.0)
self.assertEqual(self.validator.validate_duration(''), 0.0)
self.assertEqual(self.validator.validate_duration(None), 0.0)
def test_validate_coordinates(self):
lat, lon = self.validator.validate_coordinates('5.5', '-0.2')
self.assertEqual(lat, 5.5)
self.assertEqual(lon, -0.2)
lat, lon = self.validator.validate_coordinates('', '')
self.assertIsNone(lat)
self.assertIsNone(lon)
lat, lon = self.validator.validate_coordinates('100', '200') # Invalid
self.assertIsNone(lat)
self.assertIsNone(lon)
def test_parse_datetime(self):
dt = self.validator.parse_datetime('2024-01-01', '12:30:00')
self.assertIsNotNone(dt)
self.assertEqual(dt.year, 2024)
self.assertEqual(dt.month, 1)
self.assertEqual(dt.day, 1)
dt = self.validator.parse_datetime('NULL', 'NULL')
self.assertIsNone(dt)
def test_is_night_call(self):
self.assertTrue(self.validator.is_night_call('23:30:00', 23, 5))
self.assertTrue(self.validator.is_night_call('02:00:00', 23, 5))
self.assertFalse(self.validator.is_night_call('14:00:00', 23, 5))
self.assertFalse(self.validator.is_night_call('', 23, 5))
if __name__ == '__main__':
unittest.main()