001package de.cuioss.test.generator.impl;
002
003import static de.cuioss.test.generator.Generators.nonEmptyStrings;
004import static java.lang.String.format;
005
006import de.cuioss.test.generator.TypedGenerator;
007
008/**
009 * Provide any {@link String} which is not empty and not blank.
010 */
011public class NonBlankStringGenerator implements TypedGenerator<String> {
012
013    private static final TypedGenerator<String> SOME_NONEMPTY_STRING = nonEmptyStrings();
014
015    @Override
016    public Class<String> getType() {
017        return String.class;
018    }
019
020    @Override
021    public String next() {
022        var tries = 0;
023        while (tries < 100) {
024            tries++;
025            var candidate = SOME_NONEMPTY_STRING.next();
026            if (!candidate.trim().isEmpty()) {
027                return candidate;
028            }
029        }
030        throw new IllegalStateException(
031                format("Could not generate non blank string after %d tries", tries));
032    }
033
034}