package org.jpos.jposext.isomsgaction.testing.service.support;
import java.util.BitSet;
import java.util.Comparator;
import org.jpos.iso.ISOBitMap;
import org.jpos.jposext.isomsgaction.testing.model.ComparisonContext;
public class ISOBitMapComparator implements Comparator<ISOBitMap> {
private String path;
private ComparisonContext comparisonContext;
public ISOBitMapComparator(ComparisonContext comparisonContext, String path) {
super();
this.comparisonContext = comparisonContext;
this.path = path;
}
/* (non-Javadoc)
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
*/
public int compare(ISOBitMap bitmap0, ISOBitMap bitmap1) {
if (null != bitmap0) {
if (null == bitmap1) {
comparisonContext.addDiff(path, String.format(
"Bitmap %s : Expected bit set=%s, Current value=NULL", path,
((BitSet) bitmap0.getValue()).toString()));
return -1;
}
} else {
if (null == bitmap1) {
return 0;
} else {
comparisonContext.addDiff(path, String.format(
"Bitmap %s : Expected value=NULL, Current bit set=%s", path,
((BitSet) bitmap1.getValue()).toString()));
return -1;
}
}
boolean same = ((BitSet) bitmap0.getValue()).equals((BitSet) bitmap1
.getValue());
if (!same) {
comparisonContext.addDiff(path, String.format(
"Bitmap %s : Expected bit set=%s, Current bit set=%s", path,
((BitSet) bitmap0.getValue()),
((BitSet) bitmap1.getValue())));
}
return same ? 0 : -1;
}
}