All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nz.co.testamation.testcommon.fixture.SomeFixture Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2016 Ratha Long
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package nz.co.testamation.testcommon.fixture;

import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import org.apache.commons.lang3.RandomStringUtils;
import org.joda.time.Duration;
import org.joda.time.LocalDate;
import org.joda.time.LocalDateTime;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Collection;
import java.util.concurrent.ThreadLocalRandom;

public class SomeFixture {

    public static String someString( int length ) {
        return RandomStringUtils.randomAlphabetic( length );
    }

    public static String someString() {
        return RandomStringUtils.randomAlphabetic( 7 );
    }

    public static int someInt() {
        return ThreadLocalRandom.current().nextInt();
    }

    public static long someLong() {
        return ThreadLocalRandom.current().nextLong();
    }


    public static int someIntLessThan( int maxExclusive ) {
        return ThreadLocalRandom.current().nextInt( maxExclusive );
    }


    public static int someYear() {
        return 2000 + someIntLessThan( 11 );
    }

    public static Duration someDuration() {
        return Duration.standardSeconds( someLong() );
    }

    public static String someEmail() {
        return String.format( "%s@%s.com", RandomStringUtils.randomAlphabetic( 5 ), RandomStringUtils.randomAlphabetic( 5 ) ).toLowerCase();
    }

    public static LocalDate someLocalDate() {
        return new LocalDate(
            someYear(),
            someIntLessThan( 12 ) + 1,
            someIntLessThan( 28 ) + 1
        );
    }

    public static LocalDateTime someDateTime() {
        return new LocalDateTime(
            someYear(),
            someIntLessThan( 12 ) + 1,
            someIntLessThan( 28 ) + 1,
            someIntBetween( 4, 24 ), // avoid sometimes invalid 2am due to daylight savings
            someIntLessThan( 60 ),
            someIntLessThan( 60 )
        );
    }

    public static Boolean someBoolean() {
        return ThreadLocalRandom.current().nextBoolean();
    }

    public static  E someEnum( Class enumClazz ) {
        return someValue( enumClazz.getEnumConstants() );
    }

    public static  E someEnum( Class enumClazz, Predicate predicate ) {
        E result;
        do {
            result = someEnum( enumClazz );
        } while ( !predicate.apply( result ) );
        return result;
    }

    public static  T someEnumOtherThan( Class enumClazz, T... excluded ) {
        return someValue( Sets.difference( ImmutableSet.copyOf( enumClazz.getEnumConstants() ), ImmutableSet.copyOf( excluded ) ) );
    }

    private static int someInt( int length ) {
        return new Integer( RandomStringUtils.randomNumeric( length ) );
    }

    public static Integer someIntBetween( int minInclusive, int maxExclusive ) {
        return ThreadLocalRandom.current().nextInt( minInclusive, maxExclusive );
    }

    public static String someEmail( String prefix ) {
        return prefix + "_" + someEmail();
    }


    public static BigDecimal someBigDecimal() {
        return new BigDecimal( somePositiveInt() );
    }

    public static BigDecimal someBigDecimalPercentage() {
        return new BigDecimal( someDouble() );
    }

    public static double someDouble() {
        return ThreadLocalRandom.current().nextDouble();
    }

    public static byte[] someBytes() {
        return someString().getBytes();
    }

    public static int somePositiveInt() {
        return Math.abs( someInt() );
    }

    public static  T someValue( T... values ) {
        return values[ someIntLessThan( values.length ) ];
    }

    public static  T someValue( Collection values ) {
        return Iterables.get( values, someIntLessThan( values.size() ) );
    }

    public static String someString( String... choises ) {
        return choises[ SomeFixture.someIntBetween( 0, choises.length ) ];
    }

    public static String someString( Iterable choices ) {
        return someString( Iterables.toArray( choices, String.class ) );
    }

    public static BigInteger someBigInteger() {
        return new BigInteger( String.valueOf( somePositiveInt() ) );
    }

    public static  T someThing( T... things ) {
        return things[ someIntBetween( 0, things.length ) ];
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy