import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.api.Test;

public class CheckDigitTest
{
    @Test
    public void testGetCheckAgainstExamples()
    {
        assertEquals(6, CheckDigit.getCheck(283415));
        assertEquals(2, CheckDigit.getCheck(2183));
        assertEquals(2, CheckDigit.getCheck(159));
    }

    @Test
    public void testIsValidAgainstExamples()
    {
        assertTrue(CheckDigit.isValid(1592));
        assertFalse(CheckDigit.isValid(1593));
    }

    @Test
    public void testGetNumberOfDigits()
    {
        assertEquals(2, CheckDigit.getNumberOfDigits(25));
        assertEquals(6, CheckDigit.getNumberOfDigits(918028));
        assertEquals(1, CheckDigit.getNumberOfDigits(0));
    }

    @Test
    public void testGetNumberOfDigitsAgainstExample()
    {
        assertEquals(6, CheckDigit.getNumberOfDigits(283415));
    }

    @Test
    public void testGetDigit()
    {
        assertEquals(9, CheckDigit.getDigit(918028, 1));
        assertEquals(1, CheckDigit.getDigit(918028, 2));
        assertEquals(8, CheckDigit.getDigit(918028, 3));
        assertEquals(0, CheckDigit.getDigit(918028, 4));
        assertEquals(2, CheckDigit.getDigit(918028, 5));
        assertEquals(8, CheckDigit.getDigit(918028, 6));

        assertEquals(0, CheckDigit.getDigit(0, 1));
    }

    @Test
    public void testGetDigitAgainstExamples()
    {
        assertEquals(2, CheckDigit.getDigit(283415, 1));
        assertEquals(1, CheckDigit.getDigit(283415, 5));
    }
}
