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}