// Path: src/main/java/com/michaelfotiadis/validator/annotated/annotations/AnnotationCategory.java
// public enum AnnotationCategory {
// 
//     UNUSED,
//     GENERAL,
//     BYTE,
//     BOOLEAN,
//     INTEGER,
//     DOUBLE,
//     FLOAT,
//     SHORT,
//     STRING,
//     COLLECTION,
//     ARRAY
// 
// }


import com.michaelfotiadis.validator.annotated.annotations.AnnotationCategory;
import com.michaelfotiadis.validator.annotated.annotations.Category;
import com.michaelfotiadis.validator.annotated.annotations.array.ArrayContainsNoNulls;
import com.michaelfotiadis.validator.annotated.annotations.array.ArrayContainsValue;
import com.michaelfotiadis.validator.annotated.annotations.array.ArrayIsNotEmpty;
import com.michaelfotiadis.validator.annotated.annotations.collection.CollectionContainsNoNulls;
import com.michaelfotiadis.validator.annotated.annotations.collection.CollectionContainsValue;
import com.michaelfotiadis.validator.annotated.annotations.collection.CollectionIsNotEmpty;
import com.michaelfotiadis.validator.annotated.annotations.conditional.BooleanEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.general.IsNull;
import com.michaelfotiadis.validator.annotated.annotations.general.NotNull;
import com.michaelfotiadis.validator.annotated.annotations.numeric.bytenum.ByteEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.doublenum.DoubleEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.doublenum.DoubleMaxValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.doublenum.DoubleMinValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.floatnum.FloatEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.floatnum.FloatMaxValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.floatnum.FloatMinValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.integernum.IntegerEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.integernum.IntegerMaxValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.integernum.IntegerMinValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.shortnum.ShortEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.shortnum.ShortMaxValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.shortnum.ShortMinValue;
import com.michaelfotiadis.validator.annotated.annotations.text.TextDateFormat;
import com.michaelfotiadis.validator.annotated.annotations.text.TextEmail;
import com.michaelfotiadis.validator.annotated.annotations.text.TextExactLength;
import com.michaelfotiadis.validator.annotated.annotations.text.TextIsNumeric;
import com.michaelfotiadis.validator.annotated.annotations.text.TextMatchesExpression;
import com.michaelfotiadis.validator.annotated.annotations.text.TextMaxLength;
import com.michaelfotiadis.validator.annotated.annotations.text.TextMinLength;
import com.michaelfotiadis.validator.annotated.annotations.text.TextNotNullOrEmpty;
import com.michaelfotiadis.validator.annotated.annotations.text.TextUrl;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
        checkIsSupported(DoubleEqualsValue.class);

        // Float annotations
        checkIsSupported(FloatMinValue.class);
        checkIsSupported(FloatMaxValue.class);
        checkIsSupported(FloatEqualsValue.class);

        // Short annotations
        checkIsSupported(ShortMinValue.class);
        checkIsSupported(ShortMaxValue.class);
        checkIsSupported(ShortEqualsValue.class);

        // String annotations
        checkIsSupported(TextDateFormat.class);
        checkIsSupported(TextEmail.class);
        checkIsSupported(TextExactLength.class);
        checkIsSupported(TextIsNumeric.class);
        checkIsSupported(TextMatchesExpression.class);
        checkIsSupported(TextMaxLength.class);
        checkIsSupported(TextMinLength.class);
        checkIsSupported(TextNotNullOrEmpty.class);
        checkIsSupported(TextUrl.class);


    }

    @Test
    public void isCorrectCategory() throws Exception {

        // collection annotations
// Path: src/main/java/com/michaelfotiadis/validator/annotated/annotations/AnnotationCategory.java
// public enum AnnotationCategory {
// 
//     UNUSED,
//     GENERAL,
//     BYTE,
//     BOOLEAN,
//     INTEGER,
//     DOUBLE,
//     FLOAT,
//     SHORT,
//     STRING,
//     COLLECTION,
//     ARRAY
// 
// }


// Path: src/test/com/michaelfotiadis/validator/annotated/SupportedAnnotationContainerTest.java
import com.michaelfotiadis.validator.annotated.annotations.AnnotationCategory;
import com.michaelfotiadis.validator.annotated.annotations.Category;
import com.michaelfotiadis.validator.annotated.annotations.array.ArrayContainsNoNulls;
import com.michaelfotiadis.validator.annotated.annotations.array.ArrayContainsValue;
import com.michaelfotiadis.validator.annotated.annotations.array.ArrayIsNotEmpty;
import com.michaelfotiadis.validator.annotated.annotations.collection.CollectionContainsNoNulls;
import com.michaelfotiadis.validator.annotated.annotations.collection.CollectionContainsValue;
import com.michaelfotiadis.validator.annotated.annotations.collection.CollectionIsNotEmpty;
import com.michaelfotiadis.validator.annotated.annotations.conditional.BooleanEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.general.IsNull;
import com.michaelfotiadis.validator.annotated.annotations.general.NotNull;
import com.michaelfotiadis.validator.annotated.annotations.numeric.bytenum.ByteEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.doublenum.DoubleEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.doublenum.DoubleMaxValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.doublenum.DoubleMinValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.floatnum.FloatEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.floatnum.FloatMaxValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.floatnum.FloatMinValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.integernum.IntegerEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.integernum.IntegerMaxValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.integernum.IntegerMinValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.shortnum.ShortEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.shortnum.ShortMaxValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.shortnum.ShortMinValue;
import com.michaelfotiadis.validator.annotated.annotations.text.TextDateFormat;
import com.michaelfotiadis.validator.annotated.annotations.text.TextEmail;
import com.michaelfotiadis.validator.annotated.annotations.text.TextExactLength;
import com.michaelfotiadis.validator.annotated.annotations.text.TextIsNumeric;
import com.michaelfotiadis.validator.annotated.annotations.text.TextMatchesExpression;
import com.michaelfotiadis.validator.annotated.annotations.text.TextMaxLength;
import com.michaelfotiadis.validator.annotated.annotations.text.TextMinLength;
import com.michaelfotiadis.validator.annotated.annotations.text.TextNotNullOrEmpty;
import com.michaelfotiadis.validator.annotated.annotations.text.TextUrl;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;

        checkIsSupported(DoubleEqualsValue.class);

        // Float annotations
        checkIsSupported(FloatMinValue.class);
        checkIsSupported(FloatMaxValue.class);
        checkIsSupported(FloatEqualsValue.class);

        // Short annotations
        checkIsSupported(ShortMinValue.class);
        checkIsSupported(ShortMaxValue.class);
        checkIsSupported(ShortEqualsValue.class);

        // String annotations
        checkIsSupported(TextDateFormat.class);
        checkIsSupported(TextEmail.class);
        checkIsSupported(TextExactLength.class);
        checkIsSupported(TextIsNumeric.class);
        checkIsSupported(TextMatchesExpression.class);
        checkIsSupported(TextMaxLength.class);
        checkIsSupported(TextMinLength.class);
        checkIsSupported(TextNotNullOrEmpty.class);
        checkIsSupported(TextUrl.class);


    }

    @Test
    public void isCorrectCategory() throws Exception {

        // collection annotations
        checkCategory(CollectionContainsNoNulls.class, AnnotationCategory.COLLECTION);