/*
* Copyright 2005-2010 Ignis Software Tools Ltd. All rights reserved.
*/
package jsystem.extensions.analyzers.text;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
/**
* Analyzer for counters with textual value: <code> Version name: v_1.3.5</code>
*
* @author guy.arieli
*
*/
public class CheckTextCounter extends AnalyzeTextParameter {
String expected;
protected boolean caseSensitive = true;
public CheckTextCounter(String counter, String expected) {
super(counter);
this.expected = expected;
}
public CheckTextCounter(String toFind, String expected, boolean isCaseSensitive) {
this(toFind, expected);
this.caseSensitive = isCaseSensitive;
}
public void analyze() {
Pattern p = null;
// Pattern.compile("("+ toFind + "\\s*:\\s*(.*))[\\r\\n]");
if (caseSensitive) {
p = Pattern.compile("(" + toFind + "\\s*:\\s*(.*))[\\r\\n]");
} else {
p = Pattern.compile("(" + toFind + "\\s*:\\s*(.*))[\\r\\n]", Pattern.CASE_INSENSITIVE);
}
Matcher m = p.matcher(testText);
if (!m.find()) {
status = false;
title = "Counter: >" + toFind + "< wasn't found";
message = testText;
return;
}
String actual = m.group(2);
actual = actual.trim();// trim white spaces and contorl chars
status = expected.equals(actual);
title = "Testing counter: " + toFind + " expected value: <" + expected + "> actual: <" + actual + ">";
message = "Counter name: " + toFind + "\r\n" + "Expected: " + expected + "\r\n" + "Actual: " + actual
+ "\r\n\r\n" + testText.replaceAll(m.group(1), "<b>" + m.group(1) + "</b>");
}
}