package com.db4o.test;

import com.db4o.*;
import java.util.*;

public class RVector implements RTestable{

	public Object newInstance(){
		return new Vector();
	}

	public Object set(Object obj, int ver){
		Entry[] arr = new Entry().test(ver);
		Vector vt = (Vector)obj;
		vt.removeAllElements();
		for(int i = 0; i < arr.length; i ++){
			vt.addElement(arr[i].key);
		}
		return obj;
	}

	public String compare(ObjectContainer con, Object obj, int ver, String errors){
		Vector vt = (Vector)obj;
		Entry[] entries = new Entry[vt.size()];
		Enumeration enum = vt.elements();
		int i = 0;
		while(enum.hasMoreElements()){
			entries[i] = new Entry();
			entries[i].key = enum.nextElement();
			i++;
		}
		return new Entry().compare(entries, ver, true,errors);
	}

	public String specific(ObjectContainer con, String errors, int step){
		Entry entry = new Entry().firstElement();
		Vector vt = (Vector)newInstance();
		if(step > 0){
			vt.addElement(entry.key);
			ObjectSet set = con.get(vt);
			if(set.size() != step){
				errors = errors + "Vector member query not found" + Regression.nl;
			}else{
				Vector res = (Vector)set.next();
				if(! (res.firstElement().equals(new Entry().firstElement().key))){
					errors = errors + "Vector order changed." + Regression.nl;
				}
			}
		}
		entry = new Entry().noElement();
		vt.addElement(entry.key);
		if(con.get(vt).size() != 0){
			errors = errors + "Vector member query found too many" + Regression.nl;
		}

		return errors;
	}


	public boolean jdk2(){
		return false;
	}
}
