All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.dakusui.jcunit.generators.BaseTestArrayGenerator Maven / Gradle / Ivy

package com.github.dakusui.jcunit.generators;

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public abstract class BaseTestArrayGenerator implements TestArrayGenerator {
	/**
	 * A logger object.
	 */
	private static final Logger LOGGER = LoggerFactory.getLogger(BaseTestArrayGenerator.class);

	protected Map domains = null;
	protected long size = -1;
	protected long cur = -1;
	
	@Override
	public void remove() {
		throw new UnsupportedOperationException();
	}

	@Override
	public boolean hasNext() {
		if (size < 0 || this.cur < 0) throw new IllegalStateException();
		return cur < size;
	}

	@Override
	public Iterator> iterator() {
		return this;
	}

	@Override
	public Map next() {
		if (cur >= size) throw new NoSuchElementException();
		Map ret = get(cur);
		cur ++;
		return ret;
	}

	@Override
	public void init(Map domains) {
		this.domains = new LinkedHashMap();
		this.domains.putAll(domains);
		List ignoredKeys = new LinkedList();
		for (T f : this.domains.keySet()) {
			U[] d = this.domains.get(f);
			if (d.length == 0) {
				ignoredKeys.add(f);
				LOGGER.warn("The domain of '{}' is empty. This parameter will be ignored.", f);
				continue;
			}
		}
		for (T f : ignoredKeys) {
			this.domains.remove(f);
		}

		this.size = -1;
		this.cur = -1;
	}

	protected abstract Map get(long cur);

	@Override
	public Map getDomains() {
		return this.domains;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy