blob: d7cc8c48187e0e68bbde88bca6233325acb38606 [file] [log] [blame]
package org.eclipse.cdt.testplugin.util;
import java.util.Stack;
/**
* @author Peter Graves
*
* This utility class maintains a list of strings, and as a tests finds strings
* in a structure/list, it will maintain a list of unfound/extra strings.
*/
public class ExpectedStrings {
public String [] expStrings;
private boolean[] foundStrings;
private Stack extraStrings; /* A stack of the unecpected strings we
* recieved
*/
private boolean extra;
/**
* Constructor for ExpectedStrings.
*/
public ExpectedStrings() {
}
/**
* Constructor for ExpectedStrings that accepts a list of strings that
* we expect to get.
*/
public ExpectedStrings(String[] values) {
int x;
expStrings=new String[values.length];
for (x=0;x<values.length;x++) {
expStrings[x]=new String(values[x]);
}
foundStrings=new boolean[values.length];
for (x=0;x<values.length;x++) {
foundStrings[x]=false;
}
extraStrings=new Stack();
extra=false;
}
public int foundString(String current) {
int x;
for (x=0;x<expStrings.length;x++) {
if (current.equals(expStrings[x])) {
foundStrings[x]=true;
return(0);
}
}
/* If we arrive here, the strings was not found, so this is
* and extra string
*/
extraStrings.push(new String(current));
extra=true;
return(1);
}
public int getNum(String name) {
int x;
for (x=0;x<expStrings.length;x++) {
if (name.equals(expStrings[x]))
return(x);
}
return(-1);
}
public boolean gotAll() {
int x;
for (x=0;x<expStrings.length;x++) {
if (foundStrings[x]==false)
return(false);
}
return(true);
}
public boolean gotExtra() {
return(extra);
}
public String getMissingString() {
int x;
String missing = new String("Missing elements: ");
for (x=0;x<expStrings.length;x++) {
if (foundStrings[x]==false)
missing+=expStrings[x];
missing+=" ";
}
return(missing);
}
public String getExtraString() {
String extra= new String("Extra elements: ");
while (!extraStrings.empty()) {
extra+=extraStrings.pop();
extra+=" ";
}
return(extra);
}
}