mirror of
https://github.com/tiennm99/lottery-generator-java.git
synced 2026-05-30 08:22:16 +00:00
[Add] new strategy
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package com.github.tiennm99.lotterygenerator;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.util.HashSet;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
public class BaseOnDateLotteryGenerator implements LotteryGenerator {
|
||||
|
||||
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||
|
||||
/** yyyyMMdd */
|
||||
private String date;
|
||||
|
||||
private String getDate() {
|
||||
if (date == null) {
|
||||
var currentDate = LocalDate.now();
|
||||
return currentDate.format(formatter);
|
||||
}
|
||||
return date;
|
||||
}
|
||||
|
||||
public void setDate(String date) {
|
||||
try {
|
||||
LocalDate.parse(date, formatter);
|
||||
} catch (DateTimeParseException e) {
|
||||
System.out.println("Input date is not valid.");
|
||||
return;
|
||||
}
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Integer> generateNumbers(int totalNumber, int numNumber) {
|
||||
var date = getDate();
|
||||
var dateNumber = Integer.parseInt(date);
|
||||
var random = new Random(dateNumber);
|
||||
|
||||
var result = new HashSet<Integer>();
|
||||
while (result.size() < numNumber) {
|
||||
var number = random.nextInt(totalNumber);
|
||||
result.add(number);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
package com.github.tiennm99.lotterygenerator;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class BaseOnDateLotteryGeneratorTest {
|
||||
@Test
|
||||
void testMega645() {
|
||||
var generator = new BaseOnDateLotteryGenerator();
|
||||
var numbers = generator.generateNumbers(45, 6);
|
||||
System.out.println(numbers);
|
||||
assertEquals(6, numbers.size());
|
||||
for (int number : numbers) {
|
||||
assertTrue(number >= 1 && number <= 45);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMega655() {
|
||||
var generator = new BaseOnDateLotteryGenerator();
|
||||
generator.setDate("20231024");
|
||||
var numbers = generator.generateNumbers(55, 6);
|
||||
System.out.println(numbers);
|
||||
assertEquals(6, numbers.size());
|
||||
for (int number : numbers) {
|
||||
assertTrue(number >= 1 && number <= 55);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSetInvalidDate() {
|
||||
var generator = new BaseOnDateLotteryGenerator();
|
||||
generator.setDate("20231313");
|
||||
var numbers = generator.generateNumbers(55, 6);
|
||||
System.out.println(numbers);
|
||||
assertEquals(6, numbers.size());
|
||||
for (int number : numbers) {
|
||||
assertTrue(number >= 1 && number <= 55);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user