package com.example import org.junit.Assert.* import org.junit.Test /** * Example local unit test, which will execute on the development machine (host). * * See [testing documentation](http://d.android.com/tools/testing). */ class ExampleUnitTest { @Test fun addition_isCorrect() { assertEquals(4, 2 + 2) } @Test fun utrValidator_rejectsEmptyAndWrongLength() { assertTrue(com.example.util.UtrValidator.validate("") is com.example.util.UtrValidationResult.Error) assertTrue(com.example.util.UtrValidator.validate("12345") is com.example.util.UtrValidationResult.Error) assertTrue(com.example.util.UtrValidator.validate("1234567890123") is com.example.util.UtrValidationResult.Error) assertTrue(com.example.util.UtrValidator.validate("abcdefghijkl") is com.example.util.UtrValidationResult.Error) } @Test fun utrValidator_rejectsFakeAndDummyPatterns() { // All identical digits assertTrue(com.example.util.UtrValidator.validate("000000000000") is com.example.util.UtrValidationResult.Error) assertTrue(com.example.util.UtrValidator.validate("111111111111") is com.example.util.UtrValidationResult.Error) assertTrue(com.example.util.UtrValidator.validate("999999999999") is com.example.util.UtrValidationResult.Error) // Sequential fake assertTrue(com.example.util.UtrValidator.validate("123456789012") is com.example.util.UtrValidationResult.Error) assertTrue(com.example.util.UtrValidator.validate("987654321098") is com.example.util.UtrValidationResult.Error) // Low entropy assertTrue(com.example.util.UtrValidator.validate("121212121212") is com.example.util.UtrValidationResult.Error) // Invalid Julian Day assertTrue(com.example.util.UtrValidator.validate("699912345678") is com.example.util.UtrValidationResult.Error) } @Test fun utrValidator_acceptsValidUtr() { val validUtr = com.example.util.UtrValidator.generateRealTimeValidUtr() assertEquals(12, validUtr.length) val result = com.example.util.UtrValidator.validate(validUtr) assertTrue("Generated UTR $validUtr should be valid", result is com.example.util.UtrValidationResult.Success) } }