Created
January 17, 2019 02:00
-
-
Save kpradeep12/1afe32af14a4b309e0eb8c18d2de2e16 to your computer and use it in GitHub Desktop.
Generate number, character, strings, boolean and dates for test data using strategy design pattern.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.time.Instant; | |
import java.time.LocalDate; | |
import java.time.ZoneId; | |
import java.util.Random; | |
interface Generator<T> { | |
T generate(); | |
static Generator<Boolean> generateBoolean(){ | |
return new Generator<>() { | |
Random random = new Random(); | |
@Override | |
public Boolean generate() { | |
return random.nextBoolean(); | |
} | |
}; | |
} | |
static Generator<Integer> generateNumber(){ | |
return () -> new Random().nextInt(100000); | |
} | |
static Generator<Character> generateCharacter(){ | |
return new Generator<>() { | |
Random random = new Random(); | |
char[] chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray(); | |
@Override | |
public Character generate() { | |
return chars[random.nextInt(chars.length)]; | |
} | |
}; | |
} | |
static Generator<String> generateString(){ | |
return () -> { | |
char[] chars = new char[7]; | |
Generator<Character> generator = generateCharacter(); | |
for(int i=0; i<7; i++){ | |
chars[i] = generator.generate(); | |
} | |
return new String(chars); | |
}; | |
} | |
static Generator<LocalDate> generateDate(){ | |
return () -> { | |
// Number of seconds from 1970 Jan 1 to 2018 Dec 31 is 1546214400. | |
int instance = new Random().nextInt(1546214400); | |
return LocalDate.ofInstant(Instant.ofEpochSecond(instance), ZoneId.systemDefault()); | |
}; | |
} | |
} | |
class GeneratorTest{ | |
public static void main(String[] args) { | |
testGenerator(Generator.generateNumber()); | |
testGenerator(Generator.generateBoolean()); | |
testGenerator(Generator.generateCharacter()); | |
testGenerator(Generator.generateString()); | |
testGenerator(Generator.generateDate()); | |
} | |
private static void testGenerator(Generator<? extends Comparable> gen){ | |
for(int i=0; i< 5;i++) | |
System.out.print(gen.generate()+" "); | |
System.out.println(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment