tgoop.com/Java_Iibrary/1407
Create:
Last Update:
Last Update:
Ты создаёшь Java-класс для генерации 128-битных токенов, поэтому пишешь следующий тест:
Random random = new SecureRandom();
Tokens tokens = new Tokens(random);
Token result = tokens.next();
assertEquals(result.high(), ???);
assertEquals(result.low(), ???);
Что мы должны написать в проверках (assert)? Мы могли бы использовать обычный экземпляр
Random
с заданным сидом.Другой вариант — заменить тип Random на интерфейс
RandomGenerator
:RandomGenerator generator = fixedGenerator(1L, 2L);
Tokens tokens = new Tokens(generator);
Token result = tokens.next();
assertEquals(result.high(), 1L);
assertEquals(result.low(), 2L);
Где
fixedGenerator
выглядит следующим образом:private RandomGenerator fixedGenerator(long... longs) {
return new RandomGenerator() {
private final long[] values = longs.clone();
private int index;
@Override
public final long nextLong() {
int currentIndex = index++;
if (index == values.length) {
index = 0;
}
return values[currentIndex];
}
};
}
Интерфейс
java.util.random.RandomGenerator
был добавлен в JDK 17 и реализуется классом java.util.Random
🔥— всё верно
👍— если пост оказался полезным