ListGenerator.java

  1. package net.morimekta.providence.testing.generator.defaults;

  2. import net.morimekta.providence.descriptor.PList;
  3. import net.morimekta.providence.testing.generator.GeneratorContext;
  4. import net.morimekta.providence.testing.generator.Generator;

  5. import java.util.List;

  6. /**
  7.  * Default generator for a list field.
  8.  */
  9. public class ListGenerator<Context extends GeneratorContext<Context>>
  10.         implements Generator<Context, List<Object>> {
  11.     private final PList<Object> list;

  12.     public ListGenerator(PList<Object> list) {
  13.         this.list = list;
  14.     }

  15.     @Override
  16.     @SuppressWarnings("unchecked")
  17.     public List<Object> generate(Context ctx) {
  18.         int       num       = ctx.nextCollectionSize();
  19.         Generator generator = ctx.generatorForDescriptor(list.itemDescriptor());

  20.         PList.Builder<Object> builder = list.builder(num);
  21.         for (int i = 0; i < num; ++i) {
  22.             builder.add(generator.generate(ctx));
  23.         }
  24.         return builder.build();
  25.     }
  26. }